<?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>233088</bug_id>
          
          <creation_ts>2021-11-13 12:09:32 -0800</creation_ts>
          <short_desc>Add support for onpushsubscriptionchange event handler</short_desc>
          <delta_ts>2021-11-18 20:18:25 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>nham</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814779</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-13 12:09:32 -0800</bug_when>
    <thetext>Add support for onpushsubscriptionchange event handler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814780</commentid>
    <comment_count>1</comment_count>
      <attachid>444145</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-13 12:12:28 -0800</bug_when>
    <thetext>Created attachment 444145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814781</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-13 12:13:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/85378345&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814782</commentid>
    <comment_count>3</comment_count>
      <attachid>444146</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-13 12:14:28 -0800</bug_when>
    <thetext>Created attachment 444146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815358</commentid>
    <comment_count>4</comment_count>
      <attachid>444146</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-15 22:22:18 -0800</bug_when>
    <thetext>Comment on attachment 444146
Patch

I can&apos;t repro the timeout in the ios-wk2 tests locally. Maybe there&apos;s something inherently flaky in the way I wrote the test that I&apos;m not seeing yet.

I&apos;d still like to get some feedback, so setting the r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815381</commentid>
    <comment_count>5</comment_count>
      <attachid>444146</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-16 00:37:56 -0800</bug_when>
    <thetext>Comment on attachment 444146
Patch

Some comments below.
As of the test failures for iOS, it seems all spin tests have this issue on iOS simulator.
This might be worth some investigations.

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

&gt; Source/WebCore/testing/ServiceWorkerInternals.cpp:85
&gt; +void ServiceWorkerInternals::schedulePushSubscriptionChangeEvent(RefPtr&lt;PushSubscription&gt; newSubscription, RefPtr&lt;PushSubscription&gt; oldSubscription)

I don&apos;t think this is good to directly use PushSubscription objects in SWContextManager::firePushSubscriptionChangeEvent.
PushSubscription should be created and live in worker thread. For instance it is refcounted, not thread safe refcounted.
And it has a ref to an ActiveDOMObject.

What can be done is to hop to the main thread with the necessary data to reconstruct PushSubscription objects at the time we fire the event.
This will also make SWContextManager::firePushSubscriptionChangeEvent easier to use when network process will send IPC messages.

One model is to reuse what we do for ServiceWorkerRegistration:
- Add a PushSubscriptionData similarly to ServiceWorkerRegistrationData. It should be encodable/decodable through IPC, and also have a cross thready copier.
- Pass PushSubscriptionData for old and new to SWContextManager::firePushSubscriptionChangeEvent, hop to worker thread and create PushSubscriptions from PushSubscriptionData.
- PushSubscription is fired on a service worker so I would guess the old registration has no ServiceWorkerRegistration and the new registration if not null would have the registration of the given worker, so no need to pass any info for the registration.

&gt; Source/WebCore/testing/ServiceWorkerInternals.h:59
&gt; +    void schedulePushSubscriptionChangeEvent(RefPtr&lt;PushSubscription&gt; newSubscription, RefPtr&lt;PushSubscription&gt; oldSubscription);

I would tend to use RefPtr&lt;&gt;&amp;&amp; instead of RefPtr&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815514</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-16 08:56:56 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Comment on attachment 444146 [details]
&gt; Patch
&gt; 
&gt; Some comments below.
&gt; As of the test failures for iOS, it seems all spin tests have this issue on
&gt; iOS simulator.
&gt; This might be worth some investigations.

I&apos;ve been looking into it, but I can only repro it locally right now if I run all the layout tests, not when I just run the tests in http/wpt/service-workers. This makes it pretty challenging to investigate.

&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444146&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/testing/ServiceWorkerInternals.cpp:85
&gt; &gt; +void ServiceWorkerInternals::schedulePushSubscriptionChangeEvent(RefPtr&lt;PushSubscription&gt; newSubscription, RefPtr&lt;PushSubscription&gt; oldSubscription)
&gt; 
&gt; I don&apos;t think this is good to directly use PushSubscription objects in
&gt; SWContextManager::firePushSubscriptionChangeEvent.
&gt; PushSubscription should be created and live in worker thread. For instance
&gt; it is refcounted, not thread safe refcounted.
&gt; And it has a ref to an ActiveDOMObject.
&gt; 
&gt; What can be done is to hop to the main thread with the necessary data to
&gt; reconstruct PushSubscription objects at the time we fire the event.
&gt; This will also make SWContextManager::firePushSubscriptionChangeEvent easier
&gt; to use when network process will send IPC messages.
&gt;
&gt; One model is to reuse what we do for ServiceWorkerRegistration:
&gt; - Add a PushSubscriptionData similarly to ServiceWorkerRegistrationData. It
&gt; should be encodable/decodable through IPC, and also have a cross thready
&gt; copier.
&gt; - Pass PushSubscriptionData for old and new to
&gt; SWContextManager::firePushSubscriptionChangeEvent, hop to worker thread and
&gt; create PushSubscriptions from PushSubscriptionData.
&gt; - PushSubscription is fired on a service worker so I would guess the old
&gt; registration has no ServiceWorkerRegistration and the new registration if
&gt; not null would have the registration of the given worker, so no need to pass
&gt; any info for the registration.

I see, that makes sense. I already created a PushSubscriptionData in a previous patch for cross-thread copying so I&apos;ll use that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815929</commentid>
    <comment_count>7</comment_count>
      <attachid>444518</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-17 07:14:50 -0800</bug_when>
    <thetext>Created attachment 444518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815944</commentid>
    <comment_count>8</comment_count>
      <attachid>444518</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-17 08:12:01 -0800</bug_when>
    <thetext>Comment on attachment 444518
Patch

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

&gt; Source/WebCore/Modules/push-api/PushSubscription.h:70
&gt;      String m_endpoint;

Would it make sense to store a PushSubscriptionData in PushSubscription?
Then we could have a data() getter, and constructor would take less parameters.

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.h:47
&gt; +    WEBCORE_EXPORT static PushSubscriptionData create(const PushSubscription&amp;);

No longer needed if we add a const PushSubscriptionData&amp; data() const (or  PushSubscriptionData data() const) to PushSubscription.

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.h:55
&gt; +Ref&lt;PushSubscription&gt; createPushSubscriptionFromData(RefPtr&lt;ServiceWorkerRegistration&gt;, PushSubscriptionData&amp;&amp;);

If we pass to the constructor/create a PushSubscriptionData, we no longer need that method.

&gt; Source/WebCore/testing/ServiceWorkerInternals.cpp:86
&gt; +void ServiceWorkerInternals::schedulePushSubscriptionChangeEvent(RefPtr&lt;PushSubscription&gt;&amp;&amp; newSubscription, RefPtr&lt;PushSubscription&gt;&amp;&amp; oldSubscription)

Can we just take PushSubscription* parameters?

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:252
&gt; +            oldSubscription = createPushSubscriptionFromData(nullptr, WTFMove(*oldSubscriptionData));

Seems a bit strange to have nullptr here.
I guess we could have a PushSubscription::create(PushSubscriptionData&amp;&amp;, RefPtr&lt;&gt;&amp;&amp; = nulltr);
Also, we should be able to call unsubscribe on the new subscription, which probably requires to pass a ServiceWorkerRegistration.
In that case, we should be able to get it from the ServiceWorkerGlobalScope.

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:328
&gt; +        oldSubscriptionData = oldSubscriptionData-&gt;isolatedCopy();

I am not sure this is needed. If the issue is about std::optional, we can hopefully use crossThreadCopy.
Something like:
thread().runLoop().postTask([this, protectedThis = Ref { *this }, newSubscriptionData = crossThreadCopy(WTFMove(newSubscriptionData)), ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816001</commentid>
    <comment_count>9</comment_count>
      <attachid>444534</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-17 10:30:16 -0800</bug_when>
    <thetext>Created attachment 444534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816190</commentid>
    <comment_count>10</comment_count>
      <attachid>444597</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-17 16:23:25 -0800</bug_when>
    <thetext>Created attachment 444597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816236</commentid>
    <comment_count>11</comment_count>
      <attachid>444615</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-17 17:27:44 -0800</bug_when>
    <thetext>Created attachment 444615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816286</commentid>
    <comment_count>12</comment_count>
      <attachid>444615</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-17 20:02:36 -0800</bug_when>
    <thetext>Comment on attachment 444615
Patch

I think I addressed all the feedback. One difference is that I kept two PushSubscription constructors rather than using a default parameter. This is mainly because Internals calls the constructor and calling the constructor with a RefPtr&lt;ServiceWorkerRegistration&gt; parameter would require us to export ServiceWorkerRegistration due to the way RefPtr works. It seems cleaner to not export that object purely for testing purposes (although i could do that instead if you prefer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816320</commentid>
    <comment_count>13</comment_count>
      <attachid>444615</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-17 22:48:20 -0800</bug_when>
    <thetext>Comment on attachment 444615
Patch

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

&gt; Source/WebCore/Modules/push-api/PushSubscription.cpp:50
&gt; +    , m_serviceWorkerRegistration(WTFMove(registration))

Let&apos;s have just one constructor, taking a RefPtr&lt;&gt;

&gt; Source/WebCore/Modules/push-api/PushSubscription.h:70
&gt; +    PushSubscription(PushSubscriptionData&amp;&amp;, Ref&lt;ServiceWorkerRegistration&gt;&amp;&amp;);

I am not sure why we want to limit exporting.
If we want that, I would tend to have a dedicated create method:
WEBCORE_EXPORT static Ref&lt;PushSubscription&gt; create(PushSubscriptionData&amp;&amp;) instead of two constructors.

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.cpp:31
&gt; +#include &quot;ServiceWorkerRegistration.h&quot;

No longer needed?

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.cpp:-41
&gt; -

No longer needed?

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.h:32
&gt; +#include &lt;wtf/Forward.h&gt;

No longer needed?

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.h:39
&gt; +

No longer needed?

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:327
&gt; +    thread().runLoop().postTask([this, protectedThis = Ref { *this }, newSubscriptionData = crossThreadCopy(newSubscriptionData), oldSubscriptionData = crossThreadCopy(oldSubscriptionData)](auto&amp;) mutable {

We would write it as newSubscriptionData = crossThreadCopy(WTFMove(newSubscriptionData)), in case we want to have an optimised isolatedCopy() &amp;&amp; on PushSubscriptionData in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816493</commentid>
    <comment_count>14</comment_count>
      <attachid>444694</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-18 10:00:18 -0800</bug_when>
    <thetext>Created attachment 444694
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816555</commentid>
    <comment_count>15</comment_count>
      <attachid>444714</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-11-18 12:10:53 -0800</bug_when>
    <thetext>Created attachment 444714
rebased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816736</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-18 20:18:21 -0800</bug_when>
    <thetext>Committed r286044 (244431@main): &lt;https://commits.webkit.org/244431@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444714.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444145</attachid>
            <date>2021-11-13 12:12:28 -0800</date>
            <delta_ts>2021-11-13 12:14:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233088-20211113121227.patch</filename>
            <type>text/plain</type>
            <size>34216</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhN2ExYWVhZDE5ZmU2
ZDAzODg3MWQ3NDg5NjY3NzcwNzBjOWNmZC4uNzJhNzRmNjFkMTM4OTNhZTdlNGRkZTY0ZDQ1Zjcz
M2Y3YmYwMzg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKKworICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxz
OjpzY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OndpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEZp
cmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCk6CisKKzIwMjEtMTEtMTMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBldmVudCBoYW5kbGVy
CisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFiaWxpdHkgdG8gc2Vu
ZCBhIHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRs
ZXIgb24KKyAgICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBJIGRpZG4ndCBpbXBsZW1l
bnQgYSBjb21wbGV0aW9uIGhhbmRsZXIgZm9yIHRoZSBldmVudCAoYXMgd2UgZG8KKyAgICAgICAg
Zm9yIHRoZSBwdXNoIGV2ZW50KSBzaW5jZSBpdCdzIG5vdCByZXF1aXJlZCBieSB0aGUgc3RhbmRh
cmQgYW5kIEkgZG9uJ3QgdGhpbmsgd2UnZCB1c2UgaXQuCisgICAgICAgIFdlIG9ubHkgcGxhbiBv
biBmaXJpbmcgdGhpcyBldmVudCB0aGUgZmlyc3QgdGltZSB5b3UgdmlzaXQgYW4gb3JpZ2luIGFm
dGVyIHdlIGRlcmVnaXN0ZXIgYQorICAgICAgICBQdXNoU3Vic2NyaXB0aW9uIGZvciByZWNlaXZp
bmcgdG9vIG1hbnkgc2lsZW50IHB1c2hlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IHRlc3RzIGlu
IGh0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanMgYW5k
CisgICAgICAgIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwuCisKKyAgICAgICAgKiBNb2R1bGVz
L3B1c2gtYXBpL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZStQdXNoQVBJLmlkbDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6c2NoZWR1bGVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlv
bkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRo
cmVhZDo6ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKwogMjAyMS0xMS0xMiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gYWNjZXNzaW5nIHJlYXNv
biBwcm9wZXJ0eSBvZiBhIG5ld2x5IGNyZWF0ZWQgQWJvcnRTaWduYWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlK1B1
c2hBUEkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKaW5kZXggYWVkNDVjMGU3Y2E2MGU5YTBkYjA5NTlkOGE4
NTg5MTczZTI2YmVkMS4uMDI0MjczOWU5NGQxNjZhODY3NzUyNWQ4MDQ3ZmQ4MzNjZjE5ZWMyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNo
LWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKQEAgLTI4LDQgKzI4LDUg
QEAKICAgICBJbXBsZW1lbnRlZEJ5PVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVB1c2hBUEkKIF0g
cGFydGlhbCBpbnRlcmZhY2UgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHsKICAgICBhdHRyaWJ1
dGUgRXZlbnRIYW5kbGVyIG9ucHVzaDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHVz
aHN1YnNjcmlwdGlvbmNoYW5nZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMjYxZDg5MzQ2ZmZiNDM0NjZmZGEzZTE1NTFk
MjYyZWY5NmE2OWViOC4uZWI0MzU0NWQ5YjUwMTgxMGNiMWRiMmJkZmYwNWY0YzZmYzE0MzJkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aApAQCAtNDUzLDYgKzQ1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhtYXRj
aGluZ0VsZW1lbnRJbkZsYXRUcmVlKSBcCiAgICAgbWFjcm8obWVkaWFTdHJlYW1UcmFja0NvbnN0
cmFpbnRzKSBcCiAgICAgbWFjcm8ob25wdXNoKSBcCisgICAgbWFjcm8ob25wdXNoc3Vic2NyaXB0
aW9uY2hhbmdlKSBcCiAgICAgbWFjcm8ob25ydGN0cmFuc2Zvcm0pIFwKICAgICBtYWNybyhvbnRv
dWNoY2FuY2VsKSBcCiAgICAgbWFjcm8ob250b3VjaGVuZCkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKaW5kZXggZTFmYTRkMzljMWM3YzU5YjUwMDM2ZjYwZWE0OGZiMWEwMWU5OWQ3NC4uZmZmN2I4
M2ZjZTMyMmI4MjVmMzg2ZjgyMjkxMDkxM2MzYmJkMzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCkBAIC0yMjIsNiArMjIyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHBy
b2Nlc3NvcmVycm9yKSBcCiAgICAgbWFjcm8ocHJvZ3Jlc3MpIFwKICAgICBtYWNybyhwdXNoKSBc
CisgICAgbWFjcm8ocHVzaHN1YnNjcmlwdGlvbmNoYW5nZSkgXAogICAgIG1hY3JvKHJhdGVjaGFu
Z2UpIFwKICAgICBtYWNybyhyZWFkeXN0YXRlY2hhbmdlKSBcCiAgICAgbWFjcm8ocmVqZWN0aW9u
aGFuZGxlZCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAKaW5kZXggOGM2Nzc1OTk1MDQ4YmMyZWM3M2NjNTJmYzc2NzYxYzM4YmY3YjQ0
MC4uNTkzMjEyYjQ1YjczYjNmNTk2NmI3OGEzMGZhZTY4ZDljZDZiMWUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC04Miw2
ICs4MiwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNjaGVkdWxlUHVzaEV2ZW50
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmUHRyPERlZgogICAgIH0pOwogfQogCit2b2lkIFNl
cnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBuZXdTdWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vi
c2NyaXB0aW9uPiBvbGRTdWJzY3JpcHRpb24pCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbaWRl
bnRpZmllciA9IG1faWRlbnRpZmllciwgb2xkU3Vic2NyaXB0aW9uID0gV1RGTW92ZShvbGRTdWJz
Y3JpcHRpb24pLCBuZXdTdWJzY3JpcHRpb24gPSBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbildKCkg
bXV0YWJsZSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoaWRlbnRpZmllciwgV1RGTW92ZShuZXdTdWJzY3JpcHRp
b24pLCBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbikpOworICAgIH0pOworfQorCiB2b2lkIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHM6OndhaXRGb3JGZXRjaEV2ZW50VG9GaW5pc2goRmV0Y2hFdmVudCYg
ZXZlbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+JiYg
cHJvbWlzZSkKIHsKICAgICBldmVudC5vblJlc3BvbnNlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZXZlbnQgPSBSZWYgeyBldmVudCB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4
IDEzOGIyNzFkMzE4ZmJiMzBlNjcxMDQ1YjllOWE0MWM0NTRmYjljNjAuLjhlYTA2NzRiMjMxZmQ2
Mjg1NzM1Mjk4MzkxZTQzYjI0OWM3MGQ2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVB1c2hFdmVudChjb25z
dCBTdHJpbmcmLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBuZXdT
dWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBvbGRTdWJzY3JpcHRpb24pOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGZldGNoUmVzcG9uc2VIZWFkZXJMaXN0KEZldGNoUmVzcG9uc2Um
KTsKIAogICAgIFN0cmluZyBwcm9jZXNzTmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5kZXggODQ2NDU1YzYyNjhm
ODVjOWZiMTU5ODhmM2FlYTEzZWM5MWJkNzczMi4uZWFiYzY1MzRkNzU5MGM2MGI4YWQ1YWZkZGJk
OWE4NDczMzIzZTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNl
V29ya2VySW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuaWRsCkBAIC0zOSw2ICszOSw3IEBACiAgICAgc2VxdWVuY2U8Qnl0ZVN0
cmluZz4gZmV0Y2hSZXNwb25zZUhlYWRlckxpc3QoRmV0Y2hSZXNwb25zZSByZXNwb25zZSk7CiAK
ICAgICBQcm9taXNlPGJvb2xlYW4+IHNjaGVkdWxlUHVzaEV2ZW50KG9wdGlvbmFsIERPTVN0cmlu
ZyBkYXRhKTsKKyAgICB1bmRlZmluZWQgc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQoUHVzaFN1YnNjcmlwdGlvbj8gbmV3U3Vic2NyaXB0aW9uLCBQdXNoU3Vic2NyaXB0aW9uPyBv
bGRTdWJzY3JpcHRpb24pOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm9j
ZXNzTmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1Rocm90dGxlYWJsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNTEwNDUzNGU1NWY5MWVhYWM2MjQxMTcyYzhhODIx
MThiM2Y4YTRkYy4uOWJhZGUzMWVkZWRiNjRkNTg3YzdkZGQxYTMyYjNhMGU4YzE2NjNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5oIgogCkBAIC0xMjAsNiArMTIxLDE1IEBAIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
dGQ6Om9wCiAgICAgc2VydmljZVdvcmtlci0+ZmlyZVB1c2hFdmVudChXVEZNb3ZlKGRhdGEpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFuYWdlcjo6ZmlyZVB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gbmV3U3Vic2NyaXB0aW9uLCBSZWZQdHI8UHVzaFN1
YnNjcmlwdGlvbj4gb2xkU3Vic2NyaXB0aW9uKQoreworICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIg
PSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2VyLT5maXJlUHVzaFN1YnNjcmlwdGlv
bkNoYW5nZUV2ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwgV1RGTW92ZShvbGRTdWJzY3Jp
cHRpb24pKTsKK30KKwogCiB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRl
eCBjNzY1YzU3ZDIwMjNmMTRjYWJiYmRiYjkwYjY4M2VhNjU0NTcwN2NiLi4wODRlZTA0ZTllMzQw
YTQ1OGYwMmM1ZmMwODEwNjg0YjJiM2FmZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC0zOCw2
ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHVzaFN1YnNjcmlwdGlv
bjsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTsKIApAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZlB0cjxQdXNo
U3Vic2NyaXB0aW9uPiBuZXdTdWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBv
bGRTdWJzY3JpcHRpb24pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9p
ZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlw
dEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApp
bmRleCBmNmRkZjg4YmMzMjM0YzQ1ODllMzQyYWVmNzIxNTI3MmE4ODhmNTAyLi44ZmRiZmIxOWE1
ZWE5ZDNkZDlmYzM1MWE2OTkwMGMxZjU1NzkxY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQdXNoRXZlbnQuaCIKKyNpbmNsdWRlICJQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
RmV0Y2guaCIKQEAgLTIzNSw2ICsyMzYsMjUgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4KICAg
ICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG5ld1N1YnNj
cmlwdGlvbiwgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG9sZFN1YnNjcmlwdGlvbikKK3sKKyAg
ICBSZWYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBuZXdT
dWJzY3JpcHRpb24gPSBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbiksIG9sZFN1YnNjcmlwdGlvbiA9
IFdURk1vdmUob2xkU3Vic2NyaXB0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCBmaXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlIiBQUkl1
NjQsIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkuaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworCisgICAgICAgIGF1dG8gcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50ID0gUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2VFdmVudCwgeyB9LCBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbiksIFdURk1vdmUo
b2xkU3Vic2NyaXB0aW9uKSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAg
ICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChwdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQpOworCisgICAgICAgIHB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC0+
d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpXShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0geworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tU
b0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmluaXNoaW5nIGZvciB3b3JrZXIgJWxs
dSIsIHdlYWtUaGlzID8gd2Vha1RoaXMtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpIDogMCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKQogewogICAgIEFTU0VSVChnbG9iYWxTY29w
ZSgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CkBAIC0yOTUsNyArMzE1LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkKIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFtX29uZ29pbmdIZWFydEJl
YXRDaGVjaykgewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBt
X3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nIHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwg
bV9pc0hhbmRsaW5nUHVzaEV2ZW50IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCisgICAgICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2
YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8fCBtX2lzSGFuZGxpbmdQdXNoRXZlbnQg
fHwgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3VudCB8fCBtX21lc3NhZ2VFdmVudENv
dW50KQogICAgICAgICAgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMzYyLDYgKzM4MiwxOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZp
bmlzaGVkRmlyaW5nTWVzc2FnZUV2ZW50KCkKICAgICAtLW1fbWVzc2FnZUV2ZW50Q291bnQ7CiB9
CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6d2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KCkKK3sKKyAgICBpZiAoIW1fcHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50Q291bnQrKykKKyAgICAgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworfQorCit2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KCkKK3sKKyAgICBBU1NFUlQobV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3Vu
dCk7CisgICAgLS1tX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMDY4MWIzM2NmY2NhYmYzOTAwYTc0N2Y3MGUxMTU4
NzIxMDhjMDBiYy4uYzhkYTU4ZDA0MGQxM2RhZDk4ZTBmM2Y4YzVmMjAyZjZiOTliYjExMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBDYWNoZVN0b3Jh
Z2VQcm92aWRlcjsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsK
IGNsYXNzIEV4dGVuZGFibGVFdmVudDsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKK2NsYXNz
IFB1c2hTdWJzY3JpcHRpb247CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBX
b3JrZXJPYmplY3RQcm94eTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKQEAgLTYx
LDEyICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVJbnN0YWxs
RXZlbnQoKTsKICAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsKICAg
ICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpOworICAgIHZvaWQgd2lsbFBv
c3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7CiAKICAgICB2b2lkIHF1
ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYm
LCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKICAgICB2b2lk
IHF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2Vydmlj
ZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVldWVUYXNrVG9G
aXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50
KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+JiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcXVldWVU
YXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFJlZlB0cjxQdXNoU3Vic2NyaXB0
aW9uPiBuZXdTdWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBvbGRTdWJzY3Jp
cHRpb24pOwogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KICAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2pvYkRhdGFJZGVudGlmaWVyOyB9CkBAIC05MCw2ICs5Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmaW5pc2hlZEZpcmluZ0luc3RhbGxFdmVudChib29sIGhhc1JlamVjdGVk
QW55UHJvbWlzZSk7CiAgICAgdm9pZCBmaW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKICAg
ICB2b2lkIGZpbmlzaGVkRmlyaW5nTWVzc2FnZUV2ZW50KCk7CisgICAgdm9pZCBmaW5pc2hlZEZp
cmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogICAgIHZvaWQgZmluaXNoZWRTdGFy
dGluZygpOwogCiAgICAgdm9pZCBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CkBAIC0xMDUsNiArMTA5
LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgeyBmYWxzZSB9OworICAgIHVpbnQ2
NF90IG1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgeyAwIH07CiAgICAgdWludDY0
X3QgbV9tZXNzYWdlRXZlbnRDb3VudCB7IDAgfTsKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsgSWRs
ZSwgU3RhcnRpbmcsIEluc3RhbGxpbmcsIEFjdGl2YXRpbmcgfTsKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OklkbGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmlu
ZGV4IDA3M2I0MmU5MzZlYmZkZTE5Yjk1ZWFmNTEwNTg1MGUyNGE5Yjk0Y2QuLmFlMDJkMTUxNWM4
NmY1MjQ1ZGI1NzdhNTM0ZjRlODQ4ODUzYzU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC0zMjAs
NiArMzIxLDE0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50
KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRhCiAgICAgICAgIG1fb25nb2luZ1B1
c2hUYXNrcy50YWtlKGlkZW50aWZpZXIpKGZhbHNlKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoUmVmUHRyPFB1c2hT
dWJzY3JpcHRpb24+IG5ld1N1YnNjcmlwdGlvbiwgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG9s
ZFN1YnNjcmlwdGlvbikKK3sKKyAgICB0aHJlYWQoKS53aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKKyAgICB0aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuZXdTdWJzY3JpcHRpb24gPSBX
VEZNb3ZlKG5ld1N1YnNjcmlwdGlvbiksIG9sZFN1YnNjcmlwdGlvbiA9IFdURk1vdmUob2xkU3Vi
c2NyaXB0aW9uKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tU
b0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoV1RGTW92ZShuZXdTdWJzY3JpcHRpb24p
LCBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbikpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGNlZmJjNWUxNjM2OGMzOGE4M2E3ZTExNWZkNTc0
NzJjYWY1YzViOTguLjY2YmYyNGExMjYyZjg2OWYzZDQyZGFlMWE4NWI4MDk1Y2E0ZmM5NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNz
IENhY2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExv
YWRlckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgUHVzaFN1YnNjcmlw
dGlvbjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eTsKIHN0cnVjdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE7CiBlbnVtIGNsYXNzIFdvcmtlclRocmVhZE1vZGUgOiBib29sOwpA
QCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KCk7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgZmlyZVB1c2hFdmVudChzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFJlZlB0cjxQ
dXNoU3Vic2NyaXB0aW9uPiBuZXdTdWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9u
PiBvbGRTdWJzY3JpcHRpb24pOwogCiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3Jp
cHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDliY2MwNjdjZmQ1Y2JiMWY5NDU3NmU3ZGZiN2EyY2MzZmNiN2RkNC4uNWNm
ZTE2MDc5M2I0ZThhMDRiNzJlY2I0NzIxNmUyMGEzNGNlNWM2MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDIxLTExLTEzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIC0gTW9kaWZpZWQg
dGhlIHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgdGVzdCB0byBzZW5kIGEgcmVhbCBldmVudCB0byB0
aGUgc2VydmljZSB3b3JrZXIuCisgICAgICAgICAtIE1vZGlmaWVkIHRoZSBzZXJ2aWNlIHdvcmtl
ciBzcGlubmluZyB0ZXN0cyB0byB0ZXN0IGZvciBndWFyZGluZyBhZ2FpbnN0IGluZmluaXRlIGxv
b3BzIGluCisgICAgICAgICAgIHRoZSBwdXNoIGFuZCBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2
ZW50IGhhbmRsZXJzLgorCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50LmFueS5qczoKKyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFwaS9wdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanM6
CisgICAgICAgIChhc3luYyBzZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAqIGh0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRp
b25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNo
YW5nZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzOgorICAgICAgICAocmVzcG9uZFRv
UGVuZGluZ0V2ZW50KToKKyAgICAgICAgKHB1c2hUZXN0KToKKwogMjAyMS0xMS0xMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gYWNjZXNzaW5n
IHJlYXNvbiBwcm9wZXJ0eSBvZiBhIG5ld2x5IGNyZWF0ZWQgQWJvcnRTaWduYWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGIxZGQxZDViMjRlNGU1ODU2ZWE5YTRmNjY2MzdlYzFj
YTU2YTMzM2EuLmU2MTFhNDA1YjQ3ZjhjMjU0OTE1NzI4ZTE1MjAyNDM5MjVkN2RkZjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTEzICBC
ZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0IHJlc3VsdHMgc2luY2Ug
d2Ugbm93IHN1cHBvcnQgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3Jr
ZXItZXhwZWN0ZWQudHh0OgorCiAyMDIxLTExLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg1NTgzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50LmFueS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanMKaW5kZXggODJjNDIxZjVhZjIxMDBlYjk5MjRkNTU1
NGRmODcwNTEwYjA0Nzc1NS4uYTZjMWYxNjY2YWUzNTk0M2JmN2QwNTllZWI3OWU4OTU0ZThhMzRj
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzCkBAIC0yLDI3ICsyLDE1IEBACiAv
LyBNRVRBOiBnbG9iYWw9c2VydmljZXdvcmtlcgogLy8gTUVUQTogc2NyaXB0PWNvbnN0YW50cy5q
cwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhl
dmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2
ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOwotfSwgIlB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCB3aXRob3V0IGRhdGEiKTsKLQotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50
ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSIsIHsgbmV3U3Vic2NyaXB0aW9uOiBudWxsLCBvbGRTdWJzY3JpcHRpb246IG51bGwgfSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOwotfSwg
IlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1YnNjcmlwdGlvbnMiKTsKLQot
bGV0IG5ld1N1YnNjcmlwdGlvbiA9IG51bGw7Ci1sZXQgb2xkU3Vic2NyaXB0aW9uID0gbnVsbDsK
LQogbGV0IGFjdGl2YXRlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbmFj
dGl2YXRlID0gcmVzb2x2ZSk7Ci1wcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworcHJvbWlzZV90
ZXN0KCgpID0+IHsKICAgIHJldHVybiBhY3RpdmF0ZVByb21pc2U7CiB9LCAid2FpdCBmb3IgYWN0
aXZlIHNlcnZpY2Ugd29ya2VyIik7CiAKLXByb21pc2VfdGVzdChhc3luYygpID0+IHsKK2xldCBu
ZXdTdWJzY3JpcHRpb24gPSBudWxsOworbGV0IG9sZFN1YnNjcmlwdGlvbiA9IG51bGw7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CiAgICAgbmV3U3Vic2NyaXB0aW9uID0gc2VsZi5pbnRlcm5hbHMu
Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbihFTkRQT0lOVCwgRVhQSVJBVElPTl9USU1FLCBWQUxJRF9T
RVJWRVJfS0VZLCBDTElFTlRfS0VZXzEsIEFVVEgpOwogICAgIG9sZFN1YnNjcmlwdGlvbiA9IHNl
bGYuaW50ZXJuYWxzLmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24oRU5EUE9JTlQsIEVYUElSQVRJT05f
VElNRSwgVkFMSURfU0VSVkVSX0tFWSwgQ0xJRU5UX0tFWV8yLCBBVVRIKTsKIApAQCAtMzIsMjAg
KzIwLDMwIEBAIHByb21pc2VfdGVzdChhc3luYygpID0+IHsKICAgICByZXR1cm4gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiByZXNvbHZlKCkpOwogfSwgImNyZWF0ZSBzdWJzY3JpcHRpb25zIik7CiAK
LXRlc3QoKCkgPT4gewotICAgIGxldCBldmVudCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCB7IG5ld1N1YnNjcmlwdGlvbiB9KTsKK3By
b21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudChudWxsLCBudWxsKTsKKyAgICBsZXQgZXZlbnQgPSBhd2Fp
dCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0g
cmVzb2x2ZSk7CisgICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGws
ICJuZXciKTsKKyAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwg
Im9sZCIpOworfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1YnNjcmlw
dGlvbnMiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4geworICAgIHNlbGYuaW50ZXJuYWxz
LnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG5ld1N1YnNjcmlwdGlvbiwgbnVs
bCk7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9u
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOwogICAgIGFzc2VydF9lcXVhbHMoZXZl
bnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24sICJuZXciKTsKICAgICBhc3NlcnRf
ZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOwogfSwgIlB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBzdWJzY3JpcHRpb24iKTsKIAotdGVzdCgoKSA9
PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVz
aHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgb2xkU3Vic2NyaXB0aW9uIH0pOworcHJvbWlzZV90ZXN0
KGFzeW5jKCkgPT4geworICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlv
bkNoYW5nZUV2ZW50KG51bGwsIG9sZFN1YnNjcmlwdGlvbik7CisgICAgbGV0IGV2ZW50ID0gYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9
IHJlc29sdmUpOwogICAgIGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxs
LCAibmV3Iik7CiAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1
YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRo
IG9sZCBzdWJzY3JpcHRpb24iKTsKIAotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3
IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsg
bmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJzY3JpcHRpb24gfSk7Citwcm9taXNlX3Rlc3QoYXN5bmMo
KSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQobmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJzY3JpcHRpb24pOworICAgIGxldCBldmVudCA9
IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UgPSByZXNvbHZlKTsKICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwg
bmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7CiAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJz
Y3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwgIlB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCB3aXRoIG5ldyBhbmQgb2xkIHN1YnNjcmlwdGlvbiIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1
c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2VydmljZXdvcmtlci1leHBl
Y3RlZC50eHQKaW5kZXggOTVmYTJiMTc0NzJlMjdmNDYzZWMxY2FiMTYyMDI2MzlhYTZiZTBhYi4u
MjkxNmIyNmUwNTgyYjU3NmE1NDZkYTg4MjdkZjU3NDg4MDZkMWRjNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFu
eS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9w
dXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0xLDggKzEsNyBAQAogCi1QQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCB3aXRob3V0IGRhdGEKLVBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhv
dXQgc3Vic2NyaXB0aW9ucwogUEFTUyB3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3b3JrZXIKIFBB
U1MgY3JlYXRlIHN1YnNjcmlwdGlvbnMKK1BBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQg
d2l0aCBuZXcgc3Vic2NyaXB0aW9uCiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3
aXRoIG9sZCBzdWJzY3JpcHRpb24KIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdp
dGggbmV3IGFuZCBvbGQgc3Vic2NyaXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcwppbmRleCA3NjQ5
NzA5MGU2MDhjNGYxNWRjZjRkZjcyYmFmMGM3YzlhYTllMWU0Li5lMzYzMzBjM2Q0Yjk1NTVlNzIz
ZGMxOWVhNTk0MzAyZDg2MjdmZjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKQEAgLTI4LDYgKzI4
LDE4IEBAIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZSh3b3JrZXIsIHN0YXRlKQogICAgIH0pOwogfQog
Cithc3luYyBmdW5jdGlvbiBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCBtZXNzYWdlTmFtZSwgdGlt
ZW91dCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdCgicmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICBjb25zdCBjaGFubmVsID0g
bmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgY29uc3QgcmVjZWl2ZWRNZXNzYWdlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IHJlc29sdmUpOworICAg
IGNvbnN0IHRpbWVkT3V0ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gc2V0VGlt
ZW91dChyZWplY3QsIHRpbWVvdXQgfHwgNTAwMCkpOworICAgIHdvcmtlci5wb3N0TWVzc2FnZSht
ZXNzYWdlTmFtZSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFty
ZWNlaXZlZE1lc3NhZ2UsIHRpbWVkT3V0XSk7Cit9CisKIGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JT
ZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcikKIHsKICAgICBpZiAoIXdpbmRvdy5p
bnRlcm5hbHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
cHVzaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmYjljZTViZjcyOTUwODgxMjFk
Y2VhMDU1OWVlNTQ2ZTI5Y2QzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTcGluIGluIHB1c2gKK1BBU1MgU3Bp
biBhZnRlciBwdXNoCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVz
aC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzQ1N2M3ODRmZmU0ZWJjYTI5MDc5M2ZhZTk0NmEy
ZDUwZjRkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgU2hvdWxk
VXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdp
c3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXB1c2giIH0pOwor
ICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQg
d2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAg
ICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaCIpOworCisgICAgcmV0dXJuIHdh
aXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBw
dXNoIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lz
dHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNl
LXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXItcHVzaCIg
fSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBh
d2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsK
KworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNoIik7CisKKyAgICByZXR1
cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGlu
IGFmdGVyIHB1c2giKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiM2ZiMGNm
ZjA0NTU0MWU3Y2JkZDFhYWRmY2E1ZWYyZjFiMGYyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgU3BpbiBpbiBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlCitQQVNTIFNwaW4gYWZ0ZXIg
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NzA4MjljYzczMzE3NTI0NjI1YTAzY2Y3OTc3YTE1ODQ1NGMyYTQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbApA
QCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IFNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29u
c3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
InNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNo
c3Vic2NyaXB0aW9uY2hhbmdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24u
aW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFs
bGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwg
InB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdv
cmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBy
ZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLXB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0
YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2Vy
LCAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNl
V29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBwdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCmluZGV4IDVlZjgzNzkxYjc5N2ViODFlYzAy
NDNhODE3MzE3ODM4YjI0MmViZjQuLmZiZGZmZDIxOTk0MjI3YjBkMTg5OTUwMjBhMGFiZjFiNGE2
M2MxYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcwpAQCAt
MSwzICsxLDE0IEBACitsZXQgcGVuZGluZ0V2ZW50ID0gbnVsbDsKKworZnVuY3Rpb24gcmVzcG9u
ZFRvUGVuZGluZ0V2ZW50KCkKK3sKKyAgICBpZiAoIXBlbmRpbmdFdmVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcGVuZGluZ0V2ZW50LnBvcnRzWzBdLnBvc3RNZXNzYWdlKCdyZWNlaXZlZCcp
OworICAgIHBlbmRpbmdFdmVudCA9IG51bGw7Cit9CisKIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5z
Y29wZS5pbmNsdWRlcygic3Bpbi1ydW4iKSkKICAgICB3aGlsZSh0cnVlKSB7IH07CiAKQEAgLTE5
LDYgKzMwLDE3IEBAIGZ1bmN0aW9uIGFjdGl2YXRlVGVzdChldmVudCkKIAogZnVuY3Rpb24gbWVz
c2FnZVRlc3QoZXZlbnQpCiB7CisgICAgc3dpdGNoIChldmVudC5kYXRhKSB7CisgICAgY2FzZSAi
cHVzaCI6CisgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaEV2ZW50KCJ0ZXN0Iik7
CisgICAgICAgIHBlbmRpbmdFdmVudCA9IGV2ZW50OworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSI6CisgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVk
dWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51bGwsIG51bGwpOworICAgICAgICBwZW5k
aW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChzZWxm
LnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1tZXNzYWdlIikpCiAgICAgICAgIHdo
aWxlKHRydWUpIHsgfTsKICAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMo
InNwaW4tYWZ0ZXItbWVzc2FnZSIpKQpAQCAtMzQsOCArNTYsMjkgQEAgZnVuY3Rpb24gZmV0Y2hU
ZXN0KGV2ZW50KQogICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZSgib2siKSk7CiB9
CiAKK2Z1bmN0aW9uIHB1c2hUZXN0KGV2ZW50KQoreworICAgIHJlc3BvbmRUb1BlbmRpbmdFdmVu
dCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLXB1
c2giKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlv
bi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1wdXNoIikpCisgICAgICAgIHNlbGYuc2V0VGlt
ZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIHB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VUZXN0KGV2ZW50KQoreworICAgIHJlc3BvbmRUb1BlbmRpbmdFdmVu
dCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLXB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OworICAgIGlm
IChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlIikpCisgICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRy
dWUpIHsgfTsgfSwgMCk7Cit9CiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiaW5zdGFsbCIsIGlu
c3RhbGxUZXN0KTsKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiYWN0aXZhdGUiLCBhY3RpdmF0ZVRl
c3QpOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbWVzc2FnZVRlc3QpOwogc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNoVGVzdCk7CitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoInB1c2giLCBwdXNoVGVzdCk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UiLCBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlVGVzdCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lk
bGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0
dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA2MzNhZDc3ODMyZjk0NTNl
OThlZThjMmFjNjU5ZDRhMTNkMDlmYTVmLi5lMGI1ZTU0YTg2M2ZkZWU3OGVkMTIyMTFlNjljNDY5
ZmRlMWNmNjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50
eHQKQEAgLTgwLDcgKzgwLDcgQEAgUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgaW50
ZXJmYWNlOiBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXMKIFBBU1MgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBwdXNoTWFuYWdlcgogUEFT
UyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogcmVnaXN0cmF0aW9uIG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAicHVzaE1hbmFnZXIiIHdpdGggdGhlIHByb3BlciB0eXBlCiBQQVNT
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2gKLUZB
SUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogYXR0cmlidXRlIG9ucHVzaHN1
YnNjcmlwdGlvbmNoYW5nZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBt
dXN0IGhhdmUgYSBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBleHBlY3RlZCBw
cm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBtaXNzaW5nCitQQVNTIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2hzdWJzY3JpcHRpb25j
aGFuZ2UKIFBBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0
IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaCIgd2l0aCB0aGUgcHJvcGVyIHR5cGUKLUZBSUwgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0IGluaGVyaXQgcHJvcGVy
dHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0
X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxm
IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiB3aXRoIHRo
ZSBwcm9wZXIgdHlwZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444146</attachid>
            <date>2021-11-13 12:14:28 -0800</date>
            <delta_ts>2021-11-17 07:14:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233088-20211113121427.patch</filename>
            <type>text/plain</type>
            <size>33071</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhN2ExYWVhZDE5ZmU2
ZDAzODg3MWQ3NDg5NjY3NzcwNzBjOWNmZC4uZDdiZDg3MmIyYmRhMTVmNGRmNzdkMDExODM0ODJl
MzE4ODBhODA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIHNlbmQgYSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIG9u
CisgICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4gSSBkaWRuJ3QgaW1wbGVtZW50IGEg
Y29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgZXZlbnQgKGFzIHdlIGRvCisgICAgICAgIGZvciB0
aGUgcHVzaCBldmVudCkgc2luY2UgaXQncyBub3QgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkIGFu
ZCBJIGRvbid0IHRoaW5rIHdlJ2QgdXNlIGl0LgorICAgICAgICBXZSBvbmx5IHBsYW4gb24gZmly
aW5nIHRoaXMgZXZlbnQgdGhlIGZpcnN0IHRpbWUgeW91IHZpc2l0IGFuIG9yaWdpbiBhZnRlciB3
ZSBkZXJlZ2lzdGVyIGEKKyAgICAgICAgUHVzaFN1YnNjcmlwdGlvbiBmb3IgcmVjZWl2aW5nIHRv
byBtYW55IHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSB0ZXN0cyBpbiBodHRw
L3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzIGFuZAorICAg
ICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVz
aHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9wdXNo
LWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGw6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVz
Lmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNjaGVkdWxlUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6d2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmZpbmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisKIDIwMjEtMTEtMTIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB3aGVuIGFjY2Vzc2luZyByZWFzb24gcHJv
cGVydHkgb2YgYSBuZXdseSBjcmVhdGVkIEFib3J0U2lnbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZStQdXNoQVBJ
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlK1B1c2hBUEkuaWRsCmluZGV4IGFlZDQ1YzBlN2NhNjBlOWEwZGIwOTU5ZDhhODU4OTE3
M2UyNmJlZDEuLjAyNDI3MzllOTRkMTY2YTg2Nzc1MjVkODA0N2ZkODMzY2YxOWVjMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlK1B1c2hBUEkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCkBAIC0yOCw0ICsyOCw1IEBACiAg
ICAgSW1wbGVtZW50ZWRCeT1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQdXNoQVBJCiBdIHBhcnRp
YWwgaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbnB1c2g7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDI2MWQ4OTM0NmZmYjQzNDY2ZmRhM2UxNTUxZDI2MmVm
OTZhNjllYjguLmViNDM1NDVkOWI1MDE4MTBjYjFkYjJiZGZmMDVmNGM2ZmMxNDMyZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAg
LTQ1Myw2ICs0NTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obWF0Y2hpbmdF
bGVtZW50SW5GbGF0VHJlZSkgXAogICAgIG1hY3JvKG1lZGlhU3RyZWFtVHJhY2tDb25zdHJhaW50
cykgXAogICAgIG1hY3JvKG9ucHVzaCkgXAorICAgIG1hY3JvKG9ucHVzaHN1YnNjcmlwdGlvbmNo
YW5nZSkgXAogICAgIG1hY3JvKG9ucnRjdHJhbnNmb3JtKSBcCiAgICAgbWFjcm8ob250b3VjaGNh
bmNlbCkgXAogICAgIG1hY3JvKG9udG91Y2hlbmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmlu
ZGV4IGUxZmE0ZDM5YzFjN2M1OWI1MDAzNmY2MGVhNDhmYjFhMDFlOTlkNzQuLmZmZjdiODNmY2Uz
MjJiODI1ZjM4NmY4MjI5MTA5MTNjM2JiZDM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApA
QCAtMjIyLDYgKzIyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhwcm9jZXNz
b3JlcnJvcikgXAogICAgIG1hY3JvKHByb2dyZXNzKSBcCiAgICAgbWFjcm8ocHVzaCkgXAorICAg
IG1hY3JvKHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhyYXRlY2hhbmdlKSBc
CiAgICAgbWFjcm8ocmVhZHlzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlamVjdGlvbmhhbmRs
ZWQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuY3BwCmluZGV4IDhjNjc3NTk5NTA0OGJjMmVjNzNjYzUyZmM3Njc2MWMzOGJmN2I0NDAuLjU5
MzIxMmI0NWI3M2IzZjU5NjZiNzhhMzBmYWU2OGQ5Y2Q2YjFlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtODIsNiArODIs
MTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hFdmVudChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxEZWYKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChSZWZQ
dHI8UHVzaFN1YnNjcmlwdGlvbj4gbmV3U3Vic2NyaXB0aW9uLCBSZWZQdHI8UHVzaFN1YnNjcmlw
dGlvbj4gb2xkU3Vic2NyaXB0aW9uKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZp
ZXIgPSBtX2lkZW50aWZpZXIsIG9sZFN1YnNjcmlwdGlvbiA9IFdURk1vdmUob2xkU3Vic2NyaXB0
aW9uKSwgbmV3U3Vic2NyaXB0aW9uID0gV1RGTW92ZShuZXdTdWJzY3JpcHRpb24pXSgpIG11dGFi
bGUgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KGlkZW50aWZpZXIsIFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwg
V1RGTW92ZShvbGRTdWJzY3JpcHRpb24pKTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzOjp3YWl0Rm9yRmV0Y2hFdmVudFRvRmluaXNoKEZldGNoRXZlbnQmIGV2ZW50
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PiYmIHByb21p
c2UpCiB7CiAgICAgZXZlbnQub25SZXNwb25zZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGV2ZW50ID0gUmVmIHsgZXZlbnQgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCAxMzhi
MjcxZDMxOGZiYjMwZTY3MTA0NWI5ZTlhNDFjNDU0ZmI5YzYwLi44ZWEwNjc0YjIzMWZkNjI4NTcz
NTI5ODM5MWU0M2IyNDljNzBkNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgUmVm
PEZldGNoUmVzcG9uc2U+IGNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIHZvaWQgc2NoZWR1bGVQdXNoRXZlbnQoY29uc3QgU3Ry
aW5nJiwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzY2hlZHVsZVB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudChSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gbmV3U3Vic2Ny
aXB0aW9uLCBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gb2xkU3Vic2NyaXB0aW9uKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBmZXRjaFJlc3BvbnNlSGVhZGVyTGlzdChGZXRjaFJlc3BvbnNlJik7CiAK
ICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDg0NjQ1NWM2MjY4Zjg1Yzlm
YjE1OTg4ZjNhZWExM2VjOTFiZDc3MzIuLmVhYmM2NTM0ZDc1OTBjNjBiOGFkNWFmZGRiZDlhODQ3
MzMyM2U5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmlkbApAQCAtMzksNiArMzksNyBAQAogICAgIHNlcXVlbmNlPEJ5dGVTdHJpbmc+
IGZldGNoUmVzcG9uc2VIZWFkZXJMaXN0KEZldGNoUmVzcG9uc2UgcmVzcG9uc2UpOwogCiAgICAg
UHJvbWlzZTxib29sZWFuPiBzY2hlZHVsZVB1c2hFdmVudChvcHRpb25hbCBET01TdHJpbmcgZGF0
YSk7CisgICAgdW5kZWZpbmVkIHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFB1
c2hTdWJzY3JpcHRpb24/IG5ld1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlwdGlvbj8gb2xkU3Vi
c2NyaXB0aW9uKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJvY2Vzc05h
bWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUaHJvdHRsZWFibGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCmluZGV4IDUxMDQ1MzRlNTVmOTFlYWFjNjI0MTE3MmM4YTgyMTE4YjNm
OGE0ZGMuLjliYWRlMzFlZGVkYjY0ZDU4N2M3ZGRkMWEzMmIzYTBlOGMxNjYzYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaCIKIApAQCAtMTIwLDYgKzEyMSwxNSBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6
OmZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpv
cAogICAgIHNlcnZpY2VXb3JrZXItPmZpcmVQdXNoRXZlbnQoV1RGTW92ZShkYXRhKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
UHRyPFB1c2hTdWJzY3JpcHRpb24+IG5ld1N1YnNjcmlwdGlvbiwgUmVmUHRyPFB1c2hTdWJzY3Jp
cHRpb24+IG9sZFN1YnNjcmlwdGlvbikKK3sKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93
b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc2VydmljZVdvcmtlci0+ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudChXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbiksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9u
KSk7Cit9CisKIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggYzc2
NWM1N2QyMDIzZjE0Y2FiYmJkYmI5MGI2ODNlYTY1NDU3MDdjYi4uMDg0ZWUwNGU5ZTM0MGE0NThm
MDJjNWZjMDgxMDY4NGIyYjNhZmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzgsNiArMzgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFB1c2hTdWJzY3JpcHRpb247CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU7CiAKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWZQdHI8UHVzaFN1YnNj
cmlwdGlvbj4gbmV3U3Vic2NyaXB0aW9uLCBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gb2xkU3Vi
c2NyaXB0aW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZm
ZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXgg
ZjZkZGY4OGJjMzIzNGM0NTg5ZTM0MmFlZjcyMTUyNzJhODg4ZjUwMi4uOGZkYmZiMTlhNWVhOWQz
ZGQ5ZmMzNTFhNjk5MDBjMWY1NTc5MWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUHVzaEV2ZW50LmgiCisjaW5jbHVkZSAiUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNo
LmgiCkBAIC0yMzUsNiArMjM2LDI1IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAgICAgfSk7
CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBuZXdTdWJzY3JpcHRp
b24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBvbGRTdWJzY3JpcHRpb24pCit7CisgICAgUmVm
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4oKmdsb2JhbFNjb3BlKCkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZl
bnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbmV3U3Vic2Ny
aXB0aW9uID0gV1RGTW92ZShuZXdTdWJzY3JpcHRpb24pLCBvbGRTdWJzY3JpcHRpb24gPSBXVEZN
b3ZlKG9sZFN1YnNjcmlwdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmlyaW5nIGV2ZW50IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKKworICAgICAgICBhdXRvIHB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCA9IFB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wdXNoc3Vic2NyaXB0aW9u
Y2hhbmdlRXZlbnQsIHsgfSwgV1RGTW92ZShuZXdTdWJzY3JpcHRpb24pLCBXVEZNb3ZlKG9sZFN1
YnNjcmlwdGlvbiksIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZZXMpOworICAgICAgICBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQocHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KTsKKworICAgICAgICBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQtPndoZW5B
bGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKV0oYXV0byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGZpbmlzaGluZyBmb3Igd29ya2VyICVsbHUiLCB3
ZWFrVGhpcyA/IHdlYWtUaGlzLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSA6IDApOworICAgICAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmZp
bmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQoZ2xvYmFsU2NvcGUoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwpAQCAtMjk1LDcgKzMxNSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6c3RhcnRIZWFydEJlYXRUaW1lcigpCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmhlYXJ0QmVhdFRpbWVyRmlyZWQoKQogewogICAgIGlmICghbV9vbmdvaW5nSGVhcnRCZWF0Q2hl
Y2spIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNI
YW5kbGluZ1B1c2hFdmVudCB8fCBtX21lc3NhZ2VFdmVudENvdW50KQorICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5n
IHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHx8IG1f
cHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgfHwgbV9tZXNzYWdlRXZlbnRDb3VudCkK
ICAgICAgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTM2Miw2ICszODIsMTggQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hl
ZEZpcmluZ01lc3NhZ2VFdmVudCgpCiAgICAgLS1tX21lc3NhZ2VFdmVudENvdW50OwogfQogCit2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OndpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudCgpCit7CisgICAgaWYgKCFtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dENvdW50KyspCisgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKK30KKwordm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEZpcmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dCgpCit7CisgICAgQVNTRVJUKG1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQpOwor
ICAgIC0tbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3VudDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5oCmluZGV4IDA2ODFiMzNjZmNjYWJmMzkwMGE3NDdmNzBlMTE1ODcyMTA4
YzAwYmMuLmM4ZGE1OGQwNDBkMTNkYWQ5OGUwZjNmOGM1ZjIwMmY2Yjk5YmIxMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgQ2FjaGVTdG9yYWdlUHJv
dmlkZXI7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFz
cyBFeHRlbmRhYmxlRXZlbnQ7CiBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CitjbGFzcyBQdXNo
U3Vic2NyaXB0aW9uOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2Vy
T2JqZWN0UHJveHk7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CkBAIC02MSwxMiAr
NjIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlSW5zdGFsbEV2ZW50
KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9p
ZCB3aWxsUG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIHdpbGxQb3N0VGFz
a1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogCiAgICAgdm9pZCBxdWV1ZVRh
c2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJik7CiAgICAgdm9pZCBxdWV1
ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3Jr
ZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUlu
c3RhbGxFdmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwog
ICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHF1ZXVlVGFza1Rv
RmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4g
bmV3U3Vic2NyaXB0aW9uLCBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gb2xkU3Vic2NyaXB0aW9u
KTsKIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9qb2JEYXRhSWRlbnRpZmllcjsgfQpAQCAtOTAsNiArOTMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVBy
b21pc2UpOwogICAgIHZvaWQgZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9p
ZCBmaW5pc2hlZEZpcmluZ01lc3NhZ2VFdmVudCgpOworICAgIHZvaWQgZmluaXNoZWRGaXJpbmdQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKICAgICB2b2lkIGZpbmlzaGVkU3RhcnRpbmco
KTsKIAogICAgIHZvaWQgc3RhcnRIZWFydEJlYXRUaW1lcigpOwpAQCAtMTA1LDYgKzEwOSw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBt
X3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHsgMCB9OwogICAgIHVpbnQ2NF90IG1f
bWVzc2FnZUV2ZW50Q291bnQgeyAwIH07CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7IElkbGUsIFN0
YXJ0aW5nLCBJbnN0YWxsaW5nLCBBY3RpdmF0aW5nIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0
YXRlOjpJZGxlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCAw
NzNiNDJlOTM2ZWJmZGUxOWI5NWVhZjUxMDU4NTBlMjRhOWI5NGNkLi5hZTAyZDE1MTVjODZmNTI0
NWRiNTc3YTUzNGY0ZTg0ODg1M2M1OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtMzIwLDYgKzMy
MSwxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hFdmVudChzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYQogICAgICAgICBtX29uZ29pbmdQdXNoVGFz
a3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFJlZlB0cjxQdXNoU3Vic2Ny
aXB0aW9uPiBuZXdTdWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBvbGRTdWJz
Y3JpcHRpb24pCit7CisgICAgdGhyZWFkKCkud2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KCk7CisgICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmV3U3Vic2NyaXB0aW9uID0gV1RGTW92
ZShuZXdTdWJzY3JpcHRpb24pLCBvbGRTdWJzY3JpcHRpb24gPSBXVEZNb3ZlKG9sZFN1YnNjcmlw
dGlvbildKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwgV1RG
TW92ZShvbGRTdWJzY3JpcHRpb24pKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuaAppbmRleCBjZWZiYzVlMTYzNjhjMzhhODNhN2UxMTVmZDU3NDcyY2Fm
NWM1Yjk4Li42NmJmMjRhMTI2MmY4NjlmM2Q0MmRhZTFhODViODA5NWNhNGZjOTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKIGNsYXNzIEZldGNoTG9hZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXJD
bGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFB1c2hTdWJzY3JpcHRpb247
CiBjbGFzcyBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHk7CiBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOwogZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKQEAgLTgx
LDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZv
aWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKICAgICB2b2lkIGZpcmVQdXNoRXZlbnQoc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChSZWZQdHI8UHVzaFN1
YnNjcmlwdGlvbj4gbmV3U3Vic2NyaXB0aW9uLCBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gb2xk
U3Vic2NyaXB0aW9uKTsKIAogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVm
ZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDQ5YmNjMDY3Y2ZkNWNiYjFmOTQ1NzZlN2RmYjdhMmNjM2ZjYjdkZDQuLjVjZmUxNjA3
OTNiNGU4YTA0YjcyZWNiNDcyMTZlMjBhMzRjZTVjNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAyMS0xMS0xMyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhhbmRsZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICAtIE1vZGlmaWVkIHRoZSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIHRlc3QgdG8gc2VuZCBhIHJlYWwgZXZlbnQgdG8gdGhlIHNl
cnZpY2Ugd29ya2VyLgorICAgICAgICAgLSBNb2RpZmllZCB0aGUgc2VydmljZSB3b3JrZXIgc3Bp
bm5pbmcgdGVzdHMgdG8gdGVzdCBmb3IgZ3VhcmRpbmcgYWdhaW5zdCBpbmZpbml0ZSBsb29wcyBp
bgorICAgICAgICAgICB0aGUgcHVzaCBhbmQgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBldmVudCBo
YW5kbGVycy4KKworICAgICAgICAqIGh0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudC5hbnkuanM6CisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzOgorICAg
ICAgICAoYXN5bmMgc2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hh
bmdlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2Uu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qczoKKyAgICAgICAgKHJlc3BvbmRUb1BlbmRp
bmdFdmVudCk6CisgICAgICAgIChwdXNoVGVzdCk6CisKIDIwMjEtMTEtMTIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB3aGVuIGFjY2Vzc2luZyByZWFz
b24gcHJvcGVydHkgb2YgYSBuZXdseSBjcmVhdGVkIEFib3J0U2lnbmFsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCBiMWRkMWQ1YjI0ZTRlNTg1NmVhOWE0ZjY2NjM3ZWMxY2E1NmEz
MzNhLi5lNjExYTQwNWI0N2Y4YzI1NDkxNTcyOGUxNTIwMjQzOTI1ZDdkZGY1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0xMyAgQmVuIE5o
YW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igb25wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgdGVzdCByZXN1bHRzIHNpbmNlIHdlIG5v
dyBzdXBwb3J0IG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZS4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMS0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NTU4My4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudC5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQuYW55LmpzCmluZGV4IDgyYzQyMWY1YWYyMTAwZWI5OTI0ZDU1NTRkZjg3
MDUxMGIwNDc3NTUuLmE2YzFmMTY2NmFlMzU5NDNiZjdkMDU5ZWViNzllODk1NGU4YTM0YzEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudC5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcwpAQCAtMiwyNyArMiwxNSBAQAogLy8gTUVU
QTogZ2xvYmFsPXNlcnZpY2V3b3JrZXIKIC8vIE1FVEE6IHNjcmlwdD1jb25zdGFudHMuanMKIAot
dGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQu
bmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5v
bGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKLX0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQgd2l0aG91dCBkYXRhIik7Ci0KLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVudCA9IG5l
dyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCB7
IG5ld1N1YnNjcmlwdGlvbjogbnVsbCwgb2xkU3Vic2NyaXB0aW9uOiBudWxsIH0pOwotICAgIGFz
c2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKLX0sICJQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25zIik7Ci0KLWxldCBu
ZXdTdWJzY3JpcHRpb24gPSBudWxsOwotbGV0IG9sZFN1YnNjcmlwdGlvbiA9IG51bGw7Ci0KIGxl
dCBhY3RpdmF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25hY3RpdmF0
ZSA9IHJlc29sdmUpOwotcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CiAgICByZXR1cm4gYWN0aXZhdGVQcm9taXNlOwogfSwgIndhaXQgZm9yIGFjdGl2ZSBz
ZXJ2aWNlIHdvcmtlciIpOwogCi1wcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CitsZXQgbmV3U3Vi
c2NyaXB0aW9uID0gbnVsbDsKK2xldCBvbGRTdWJzY3JpcHRpb24gPSBudWxsOworCitwcm9taXNl
X3Rlc3QoKCkgPT4gewogICAgIG5ld1N1YnNjcmlwdGlvbiA9IHNlbGYuaW50ZXJuYWxzLmNyZWF0
ZVB1c2hTdWJzY3JpcHRpb24oRU5EUE9JTlQsIEVYUElSQVRJT05fVElNRSwgVkFMSURfU0VSVkVS
X0tFWSwgQ0xJRU5UX0tFWV8xLCBBVVRIKTsKICAgICBvbGRTdWJzY3JpcHRpb24gPSBzZWxmLmlu
dGVybmFscy5jcmVhdGVQdXNoU3Vic2NyaXB0aW9uKEVORFBPSU5ULCBFWFBJUkFUSU9OX1RJTUUs
IFZBTElEX1NFUlZFUl9LRVksIENMSUVOVF9LRVlfMiwgQVVUSCk7CiAKQEAgLTMyLDIwICsyMCwz
MCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gcmVzb2x2ZSgpKTsKIH0sICJjcmVhdGUgc3Vic2NyaXB0aW9ucyIpOwogCi10ZXN0
KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiwgeyBuZXdTdWJzY3JpcHRpb24gfSk7Citwcm9taXNl
X3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQobnVsbCwgbnVsbCk7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3
IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29s
dmUpOworICAgIGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3
Iik7CisgICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQi
KTsKK30sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25z
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hl
ZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChuZXdTdWJzY3JpcHRpb24sIG51bGwpOwor
ICAgIGxldCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgPSByZXNvbHZlKTsKICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5l
d1N1YnNjcmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7CiAgICAgYXNzZXJ0X2VxdWFs
cyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQgd2l0aCBuZXcgc3Vic2NyaXB0aW9uIik7CiAKLXRlc3QoKCkgPT4gewot
ICAgIGxldCBldmVudCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UiLCB7IG9sZFN1YnNjcmlwdGlvbiB9KTsKK3Byb21pc2VfdGVzdChhc3lu
YygpID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudChudWxsLCBvbGRTdWJzY3JpcHRpb24pOworICAgIGxldCBldmVudCA9IGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgPSByZXNv
bHZlKTsKICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbnVsbCwgIm5l
dyIpOwogICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBvbGRTdWJzY3Jp
cHRpb24sICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBvbGQg
c3Vic2NyaXB0aW9uIik7CiAKLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVudCA9IG5ldyBQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCB7IG5ld1N1
YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uIH0pOworcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4g
eworICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KG5ld1N1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uKTsKKyAgICBsZXQgZXZlbnQgPSBhd2Fp
dCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0g
cmVzb2x2ZSk7CiAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG5ld1N1
YnNjcmlwdGlvbiwgIm5ldyIpOwogICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0
aW9uLCBvbGRTdWJzY3JpcHRpb24sICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQgd2l0aCBuZXcgYW5kIG9sZCBzdWJzY3JpcHRpb24iKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnku
c2VydmljZXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQu
dHh0CmluZGV4IDk1ZmEyYjE3NDcyZTI3ZjQ2M2VjMWNhYjE2MjAyNjM5YWE2YmUwYWIuLjI5MTZi
MjZlMDU4MmI1NzZhNTQ2ZGE4ODI3ZGY1NzQ4ODA2ZDFkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2Vy
dmljZXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMSw4ICsxLDcgQEAKIAotUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQg
d2l0aG91dCBkYXRhCi1QQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1
YnNjcmlwdGlvbnMKIFBBU1Mgd2FpdCBmb3IgYWN0aXZlIHNlcnZpY2Ugd29ya2VyCiBQQVNTIGNy
ZWF0ZSBzdWJzY3JpcHRpb25zCitQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRo
b3V0IHN1YnNjcmlwdGlvbnMKIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGgg
bmV3IHN1YnNjcmlwdGlvbgogUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBv
bGQgc3Vic2NyaXB0aW9uCiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5l
dyBhbmQgb2xkIHN1YnNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKaW5kZXggNzY0OTcwOTBl
NjA4YzRmMTVkY2Y0ZGY3MmJhZjBjN2M5YWE5ZTFlNC4uZTM2MzMwYzNkNGI5NTU1ZTcyM2RjMTll
YTU5NDMwMmQ4NjI3ZmYzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCkBAIC0yOCw2ICsyOCwxOCBA
QCBmdW5jdGlvbiB3YWl0Rm9yU3RhdGUod29ya2VyLCBzdGF0ZSkKICAgICB9KTsKIH0KIAorYXN5
bmMgZnVuY3Rpb24gc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgbWVzc2FnZU5hbWUsIHRpbWVvdXQp
Cit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoInJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgY29uc3QgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbCgpOworICAgIGNvbnN0IHJlY2VpdmVkTWVzc2FnZSA9IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSByZXNvbHZlKTsKKyAgICBjb25z
dCB0aW1lZE91dCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHNldFRpbWVvdXQo
cmVqZWN0LCB0aW1lb3V0IHx8IDUwMDApKTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UobWVzc2Fn
ZU5hbWUsIFtjaGFubmVsLnBvcnQyXSk7CisgICAgcmV0dXJuIFByb21pc2UucmFjZShbcmVjZWl2
ZWRNZXNzYWdlLCB0aW1lZE91dF0pOworfQorCiBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yU2Vydmlj
ZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpCiB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2gu
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZmI5Y2U1YmY3Mjk1MDg4MTIxZGNlYTA1
NTllZTU0NmUyOWNkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBwdXNoCitQQVNTIFNwaW4gYWZ0
ZXIgcHVzaAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0
cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZWM0NTdjNzg0ZmZlNGViY2EyOTA3OTNmYWU5NDZhMmQ1MGY0
ZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDMz
IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFNob3VsZFVzZVNl
cnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0
aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNoIiB9KTsKKyAgICBj
b25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRG
b3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdh
aXQgc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1c2giKTsKKworICAgIHJldHVybiB3YWl0Rm9y
U2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gcHVzaCIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRp
b24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLXB1c2giIH0pOwor
ICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQg
d2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAg
ICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaCIpOworCisgICAgcmV0dXJuIHdh
aXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRl
ciBwdXNoIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1w
dXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjNmYjBjZmYwNDU1
NDFlN2NiZGQxYWFkZmNhNWVmMmYxYjBmMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQ
QVNTIFNwaW4gaW4gcHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorUEFTUyBTcGluIGFmdGVyIHB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjcwODI5Y2M3MzMxNzUyNDYyNWEwM2NmNzk3N2ExNTg0NTRjMmE0OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKQEAgLTAs
MCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBTaG91
bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJl
Z2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2
aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tcHVzaHN1YnNj
cmlwdGlvbmNoYW5nZSIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3Rh
bGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcs
ICJhY3RpdmF0ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNo
c3Vic2NyaXB0aW9uY2hhbmdlIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJO
b0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGluIGluIHB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5z
dGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGlu
ZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtl
ck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
d29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcwppbmRleCA1ZWY4Mzc5MWI3OTdlYjgxZWMwMjQzYTgx
NzMxNzgzOGIyNDJlYmY0Li5mYmRmZmQyMTk5NDIyN2IwZDE4OTk1MDIwYTBhYmYxYjRhNjNjMWM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKQEAgLTEsMyAr
MSwxNCBAQAorbGV0IHBlbmRpbmdFdmVudCA9IG51bGw7CisKK2Z1bmN0aW9uIHJlc3BvbmRUb1Bl
bmRpbmdFdmVudCgpCit7CisgICAgaWYgKCFwZW5kaW5nRXZlbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIHBlbmRpbmdFdmVudC5wb3J0c1swXS5wb3N0TWVzc2FnZSgncmVjZWl2ZWQnKTsKKyAg
ICBwZW5kaW5nRXZlbnQgPSBudWxsOworfQorCiBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUu
aW5jbHVkZXMoInNwaW4tcnVuIikpCiAgICAgd2hpbGUodHJ1ZSkgeyB9OwogCkBAIC0xOSw2ICsz
MCwxNyBAQCBmdW5jdGlvbiBhY3RpdmF0ZVRlc3QoZXZlbnQpCiAKIGZ1bmN0aW9uIG1lc3NhZ2VU
ZXN0KGV2ZW50KQogeworICAgIHN3aXRjaCAoZXZlbnQuZGF0YSkgeworICAgIGNhc2UgInB1c2gi
OgorICAgICAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hFdmVudCgidGVzdCIpOworICAg
ICAgICBwZW5kaW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgInB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiOgorICAgICAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChudWxsLCBudWxsKTsKKyAgICAgICAgcGVuZGluZ0V2
ZW50ID0gZXZlbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoc2VsZi5yZWdp
c3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tbWVzc2FnZSIpKQogICAgICAgICB3aGlsZSh0
cnVlKSB7IH07CiAgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGlu
LWFmdGVyLW1lc3NhZ2UiKSkKQEAgLTM0LDggKzU2LDI5IEBAIGZ1bmN0aW9uIGZldGNoVGVzdChl
dmVudCkKICAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UoIm9rIikpOwogfQogCitm
dW5jdGlvbiBwdXNoVGVzdChldmVudCkKK3sKKyAgICByZXNwb25kVG9QZW5kaW5nRXZlbnQoKTsK
KworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1wdXNoIikp
CisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2Nv
cGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItcHVzaCIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQo
KCkgPT4geyB3aGlsZSh0cnVlKSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBwdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlVGVzdChldmVudCkKK3sKKyAgICByZXNwb25kVG9QZW5kaW5nRXZlbnQoKTsK
KworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIikpCisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2Vs
Zi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGlsZSh0cnVlKSB7
IH07IH0sIDApOworfQogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImluc3RhbGwiLCBpbnN0YWxs
VGVzdCk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImFjdGl2YXRlIiwgYWN0aXZhdGVUZXN0KTsK
IHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1lc3NhZ2VUZXN0KTsKIHNlbGYuYWRk
RXZlbnRMaXN0ZW5lcigiZmV0Y2giLCBmZXRjaFRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVy
KCJwdXNoIiwgcHVzaFRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoc3Vic2NyaXB0
aW9uY2hhbmdlIiwgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZVRlc3QpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJu
ZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5h
bnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNjMzYWQ3NzgzMmY5NDUzZTk4ZWU4
YzJhYzY1OWQ0YTEzZDA5ZmE1Zi4uZTBiNWU1NGE4NjNmZGVlNzhlZDEyMjExZTY5YzQ2OWZkZTFj
ZjY5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1
c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC04MCw3ICs4MCw3IEBAIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGludGVyZmFj
ZTogbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzCiBQQVNTIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcHVzaE1hbmFnZXIKIFBBU1MgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IHJlZ2lzdHJhdGlvbiBtdXN0IGluaGVy
aXQgcHJvcGVydHkgInB1c2hNYW5hZ2VyIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogUEFTUyBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoCi1GQUlMIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UgYXNzZXJ0X293bl9wcm9wZXJ0eTogVGhlIGdsb2JhbCBvYmplY3QgbXVzdCBo
YXZlIGEgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgZXhwZWN0ZWQgcHJvcGVy
dHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdl
CiBQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhl
cml0IHByb3BlcnR5ICJvbnB1c2giIHdpdGggdGhlIHByb3BlciB0eXBlCi1GQUlMIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJv
bnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9vd25f
cHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIG1p
c3NpbmcKK1BBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0
IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0aCB0aGUgcHJv
cGVyIHR5cGUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444518</attachid>
            <date>2021-11-17 07:14:50 -0800</date>
            <delta_ts>2021-11-17 10:30:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233088-20211117071449.patch</filename>
            <type>text/plain</type>
            <size>44589</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhN2ExYWVhZDE5ZmU2
ZDAzODg3MWQ3NDg5NjY3NzcwNzBjOWNmZC4uMTZmYzVmNDFiODlmMDc0YTAyYjJmZjg0YTIzMDll
YjEzYzRkMmE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIHNlbmQgYSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIG9u
CisgICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4gSSBkaWRuJ3QgaW1wbGVtZW50IGEg
Y29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgZXZlbnQgKGFzIHdlIGRvCisgICAgICAgIGZvciB0
aGUgcHVzaCBldmVudCkgc2luY2UgaXQncyBub3QgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkIGFu
ZCBJIGRvbid0IHRoaW5rIHdlJ2QgdXNlIGl0LgorICAgICAgICBXZSBvbmx5IHBsYW4gb24gZmly
aW5nIHRoaXMgZXZlbnQgdGhlIGZpcnN0IHRpbWUgeW91IHZpc2l0IGFuIG9yaWdpbiBhZnRlciB3
ZSBkZXJlZ2lzdGVyIGEKKyAgICAgICAgUHVzaFN1YnNjcmlwdGlvbiBmb3IgcmVjZWl2aW5nIHRv
byBtYW55IHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSB0ZXN0cyBpbiBodHRw
L3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzIGFuZAorICAg
ICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVz
aHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9wdXNo
LWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb246OlB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbjo6Y2xpZW50RUNESFB1YmxpY0tleSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
U3Vic2NyaXB0aW9uOjpzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
dXNoU3Vic2NyaXB0aW9uRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJz
Y3JpcHRpb25EYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBp
L1B1c2hTdWJzY3JpcHRpb25EYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAg
ICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVB1c2hTdWJzY3JpcHRpb25Gcm9tRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNo
ZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuaDoKKwogMjAyMS0xMS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gYWNjZXNzaW5nIHJlYXNvbiBwcm9wZXJ0eSBv
ZiBhIG5ld2x5IGNyZWF0ZWQgQWJvcnRTaWduYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCmluZGV4IGUxY2U4MzgxNGMzY2Fk
NTBjNGJkNTlmYmIyOGUzN2JmZjI0NjY0MmYuLmZmMTNhMWFjMGZmYmZiNGY2ZTkyNGEzYTRjOGVj
YWQyMjE4MzQ5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkv
UHVzaFN1YnNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFw
aS9QdXNoU3Vic2NyaXB0aW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBQdXNoU3Vic2NyaXB0aW9u
OjpQdXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2No
VGltZVN0YQogewogfQogCi1QdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0aW9uKFJlZjxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbiwgU3RyaW5nJiYgZW5kcG9p
bnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lLCBWZWN0b3I8
dWludDhfdD4mJiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2xpZW50
RUNESFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2hhcmVkQXV0aGVudGljYXRpb25TZWNy
ZXQpCitQdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0aW9uKFJlZlB0cjxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbiwgU3RyaW5nJiYgZW5kcG9pbnQsIHN0ZDo6
b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lLCBWZWN0b3I8dWludDhfdD4m
JiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2xpZW50RUNESFB1Ymxp
Y0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpCiAgICAg
OiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKQogICAg
ICwgbV9lbmRwb2ludChXVEZNb3ZlKGVuZHBvaW50KSkKICAgICAsIG1fZXhwaXJhdGlvblRpbWUo
ZXhwaXJhdGlvblRpbWUpCkBAIC03Niw2ICs3NiwxNiBAQCBQdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cyYgUHVzaFN1YnNjcmlwdGlvbjo6b3B0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3B0aW9u
czsKIH0KIAorY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBQdXNoU3Vic2NyaXB0aW9uOjpjbGllbnRF
Q0RIUHVibGljS2V5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRFQ0RIUHVibGljS2V5
OworfQorCitjb25zdCBWZWN0b3I8dWludDhfdD4mIFB1c2hTdWJzY3JpcHRpb246OnNoYXJlZEF1
dGhlbnRpY2F0aW9uU2VjcmV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRBdXRoZW50
aWNhdGlvblNlY3JldDsKK30KKwogRXhjZXB0aW9uT3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
PiBQdXNoU3Vic2NyaXB0aW9uOjpnZXRLZXkoUHVzaEVuY3J5cHRpb25LZXlOYW1lIG5hbWUpIGNv
bnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+ICpzb3VyY2UgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaApp
bmRleCAwOWNjM2EwZDNlYTQ1Yzc0NTE5YWI3OThmYTQ4MWFkZDAxMTY3ZmQyLi4wNWQyMWU2Mzdh
YjQ4OGZmODNlOWFjOGU4NzU2NzIxYmIyMzAwN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaApAQCAtNTQsNiArNTQsOSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBlbmRwb2ludCgpIGNvbnN0OwogICAgIHN0ZDo6b3B0
aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lKCkgY29uc3Q7CiAgICAgUHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGNsaWVudEVDREhQdWJsaWNLZXkoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KCkgY29uc3Q7CisKICAgICBFeGNlcHRp
b25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGdldEtleShQdXNoRW5jcnlwdGlvbktleU5h
bWUpIGNvbnN0OwogICAgIHZvaWQgdW5zdWJzY3JpYmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKIApAQCAtNjEsNyArNjQsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFN1YnNjcmlwdGlvbihT
dHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlv
blRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKLSAg
ICBQdXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBTdHJp
bmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRp
bWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhf
dD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKKyAgICBQ
dXNoU3Vic2NyaXB0aW9uKFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBTdHJp
bmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRp
bWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhf
dD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKIAogICAg
IFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb247CiAgICAgU3RyaW5nIG1fZW5kcG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCmluZGV4IDYxYTNm
ZWNhNTM2MjEzYjRlNTNjNGUwZWQyYWE3YmE4YzY0ZWMxOTEuLmY1OWNjYmQ1OTNmMmU0ODY4MWY2
MGVjNGNjMDQ5Y2Y4YTExNDg4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCkBAIC0yNiwxMCArMjYsMjQg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5o
IgogCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaCIKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitQdXNoU3Vic2NyaXB0aW9uRGF0YSBQdXNoU3Vic2NyaXB0aW9uRGF0
YTo6Y3JlYXRlKGNvbnN0IFB1c2hTdWJzY3JpcHRpb24mIHN1YnNjcmlwdGlvbikKK3sKKyAgICBQ
dXNoU3Vic2NyaXB0aW9uRGF0YSBkYXRhOworICAgIGRhdGEuZW5kcG9pbnQgPSBzdWJzY3JpcHRp
b24uZW5kcG9pbnQoKTsKKyAgICBkYXRhLmV4cGlyYXRpb25UaW1lID0gc3Vic2NyaXB0aW9uLmV4
cGlyYXRpb25UaW1lKCk7CisgICAgZGF0YS5zZXJ2ZXJWQVBJRFB1YmxpY0tleSA9IHN1YnNjcmlw
dGlvbi5vcHRpb25zKCkuc2VydmVyVkFQSURQdWJsaWNLZXkoKTsKKyAgICBkYXRhLmNsaWVudEVD
REhQdWJsaWNLZXkgPSBzdWJzY3JpcHRpb24uY2xpZW50RUNESFB1YmxpY0tleSgpOworICAgIGRh
dGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQgPSBzdWJzY3JpcHRpb24uc2hhcmVkQXV0aGVu
dGljYXRpb25TZWNyZXQoKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwogUHVzaFN1YnNjcmlwdGlv
bkRhdGEgUHVzaFN1YnNjcmlwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAg
UHVzaFN1YnNjcmlwdGlvbkRhdGEgcmVzdWx0OwpAQCAtMzgsMTAgKzUyLDE0IEBAIFB1c2hTdWJz
Y3JpcHRpb25EYXRhIFB1c2hTdWJzY3JpcHRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAog
ICAgIHJlc3VsdC5zZXJ2ZXJWQVBJRFB1YmxpY0tleSA9IHNlcnZlclZBUElEUHVibGljS2V5Owog
ICAgIHJlc3VsdC5jbGllbnRFQ0RIUHVibGljS2V5ID0gY2xpZW50RUNESFB1YmxpY0tleTsKICAg
ICByZXN1bHQuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQgPSBzaGFyZWRBdXRoZW50aWNhdGlv
blNlY3JldDsKLQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZjxQdXNoU3Vic2NyaXB0aW9u
PiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEoUmVmUHRyPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24+IHJlZ2lzdHJhdGlvbiwgUHVzaFN1YnNjcmlwdGlvbkRhdGEmJiBkYXRhKQorewor
ICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShyZWdpc3RyYXRpb24p
LCBXVEZNb3ZlKGRhdGEuZW5kcG9pbnQpLCBkYXRhLmV4cGlyYXRpb25UaW1lLCBXVEZNb3ZlKGRh
dGEuc2VydmVyVkFQSURQdWJsaWNLZXkpLCBXVEZNb3ZlKGRhdGEuY2xpZW50RUNESFB1YmxpY0tl
eSksIFdURk1vdmUoZGF0YS5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRp
b25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRp
b25EYXRhLmgKaW5kZXggZTIyN2Y2MDQ2MTBiNWM5OTYwMmZmZTMxYzYzZTlhZWYwMDM1ODgxOS4u
ZWZjMzNkYzg1NTRjN2I0NmRkYzYzZDVlZjVkZTNiMzcwZDA1ZGM0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaApA
QCAtMjksMTAgKzI5LDE0IEBACiAKICNpbmNsdWRlICJFcG9jaFRpbWVTdGFtcC5oIgogCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQdXNoU3Vic2NyaXB0aW9uOworY2xhc3MgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjsKKwogc3RydWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsK
ICAgICBTdHJpbmcgZW5kcG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFcG9jaFRp
bWVTdGFtcD4gZXhwaXJhdGlvblRpbWU7CkBAIC00MCwxMiArNDQsMTYgQEAgc3RydWN0IFB1c2hT
dWJzY3JpcHRpb25EYXRhIHsKICAgICBWZWN0b3I8dWludDhfdD4gY2xpZW50RUNESFB1YmxpY0tl
eTsKICAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUHVzaFN1YnNjcmlwdGlvbkRhdGEgY3JlYXRlKGNvbnN0
IFB1c2hTdWJzY3JpcHRpb24mKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRp
b25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAorUmVmPFB1c2hTdWJzY3JpcHRpb24+IGNyZWF0ZVB1c2hTdWJzY3JpcHRp
b25Gcm9tRGF0YShSZWZQdHI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4sIFB1c2hTdWJzY3Jp
cHRpb25EYXRhJiYpOworCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBQdXNoU3Vic2Ny
aXB0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZStQdXNoQVBJLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCmluZGV4IGFlZDQ1YzBlN2NhNjBlOWEwZGIwOTU5
ZDhhODU4OTE3M2UyNmJlZDEuLjAyNDI3MzllOTRkMTY2YTg2Nzc1MjVkODA0N2ZkODMzY2YxOWVj
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCkBAIC0yOCw0ICsy
OCw1IEBACiAgICAgSW1wbGVtZW50ZWRCeT1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQdXNoQVBJ
CiBdIHBhcnRpYWwgaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbnB1c2g7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bnB1c2hzdWJzY3JpcHRpb25jaGFuZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDI2MWQ4OTM0NmZmYjQzNDY2ZmRhM2Ux
NTUxZDI2MmVmOTZhNjllYjguLmViNDM1NDVkOWI1MDE4MTBjYjFkYjJiZGZmMDVmNGM2ZmMxNDMy
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKQEAgLTQ1Myw2ICs0NTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
bWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJlZSkgXAogICAgIG1hY3JvKG1lZGlhU3RyZWFtVHJhY2tD
b25zdHJhaW50cykgXAogICAgIG1hY3JvKG9ucHVzaCkgXAorICAgIG1hY3JvKG9ucHVzaHN1YnNj
cmlwdGlvbmNoYW5nZSkgXAogICAgIG1hY3JvKG9ucnRjdHJhbnNmb3JtKSBcCiAgICAgbWFjcm8o
b250b3VjaGNhbmNlbCkgXAogICAgIG1hY3JvKG9udG91Y2hlbmQpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCmluZGV4IGUxZmE0ZDM5YzFjN2M1OWI1MDAzNmY2MGVhNDhmYjFhMDFlOTlkNzQuLmZm
ZjdiODNmY2UzMjJiODI1ZjM4NmY4MjI5MTA5MTNjM2JiZDM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaApAQCAtMjIyLDYgKzIyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNy
byhwcm9jZXNzb3JlcnJvcikgXAogICAgIG1hY3JvKHByb2dyZXNzKSBcCiAgICAgbWFjcm8ocHVz
aCkgXAorICAgIG1hY3JvKHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhyYXRl
Y2hhbmdlKSBcCiAgICAgbWFjcm8ocmVhZHlzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlamVj
dGlvbmhhbmRsZWQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuY3BwCmluZGV4IDhjNjc3NTk5NTA0OGJjMmVjNzNjYzUyZmM3Njc2MWMzOGJm
N2I0NDAuLjY2MDYyMzY4OTk3ODQxYjE1MTA1MTg1ZTM2ZjM0ODNkNzI4ZTljMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJKU0ZldGNo
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiUHVz
aFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogCkBAIC04Miw2ICs4MywyMSBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJJbnRlcm5hbHM6OnNjaGVkdWxlUHVzaEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
UmVmUHRyPERlZgogICAgIH0pOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNj
aGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9u
PiYmIG5ld1N1YnNjcmlwdGlvbiwgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+JiYgb2xkU3Vic2Ny
aXB0aW9uKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+IG5ld1N1
YnNjcmlwdGlvbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4g
b2xkU3Vic2NyaXB0aW9uRGF0YTsKKworICAgIGlmIChuZXdTdWJzY3JpcHRpb24pCisgICAgICAg
IG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBQdXNoU3Vic2NyaXB0aW9uRGF0YTo6Y3JlYXRlKCpuZXdT
dWJzY3JpcHRpb24pLmlzb2xhdGVkQ29weSgpOworICAgIGlmIChvbGRTdWJzY3JpcHRpb24pCisg
ICAgICAgIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBQdXNoU3Vic2NyaXB0aW9uRGF0YTo6Y3JlYXRl
KCpvbGRTdWJzY3JpcHRpb24pLmlzb2xhdGVkQ29weSgpOworCisgICAgY2FsbE9uTWFpblRocmVh
ZChbaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgbmV3U3Vic2NyaXB0aW9uRGF0YSA9IFdURk1v
dmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG9s
ZFN1YnNjcmlwdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5maXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KGlkZW50aWZpZXIs
IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0
YSkpOworICAgIH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OndhaXRGb3JG
ZXRjaEV2ZW50VG9GaW5pc2goRmV0Y2hFdmVudCYgZXZlbnQsIERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+JiYgcHJvbWlzZSkKIHsKICAgICBldmVudC5vblJl
c3BvbnNlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXZlbnQgPSBSZWYgeyBldmVudCB9
XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IDEzOGIyNzFkMzE4ZmJiMzBlNjcxMDQ1Yjll
OWE0MWM0NTRmYjljNjAuLmY0NTI3MGUzN2UzMDkyZjZkN2Y4NDEwYjkxOWU1ZmFhZGZjMzRjN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5o
CkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRl
T3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAg
ICAgdm9pZCBzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmLCBSZWZQdHI8RGVmZXJyZWRQ
cm9taXNlPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiYmIG5ld1N1YnNjcmlwdGlvbiwgUmVmUHRyPFB1c2hT
dWJzY3JpcHRpb24+JiYgb2xkU3Vic2NyaXB0aW9uKTsKICAgICBWZWN0b3I8U3RyaW5nPiBmZXRj
aFJlc3BvbnNlSGVhZGVyTGlzdChGZXRjaFJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgcHJvY2Vz
c05hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuaWRsCmluZGV4IDg0NjQ1NWM2MjY4Zjg1YzlmYjE1OTg4ZjNhZWExM2VjOTFi
ZDc3MzIuLmVhYmM2NTM0ZDc1OTBjNjBiOGFkNWFmZGRiZDlhODQ3MzMyM2U5ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAt
MzksNiArMzksNyBAQAogICAgIHNlcXVlbmNlPEJ5dGVTdHJpbmc+IGZldGNoUmVzcG9uc2VIZWFk
ZXJMaXN0KEZldGNoUmVzcG9uc2UgcmVzcG9uc2UpOwogCiAgICAgUHJvbWlzZTxib29sZWFuPiBz
Y2hlZHVsZVB1c2hFdmVudChvcHRpb25hbCBET01TdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVk
IHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFB1c2hTdWJzY3JpcHRpb24/IG5l
d1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlwdGlvbj8gb2xkU3Vic2NyaXB0aW9uKTsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJvY2Vzc05hbWU7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNUaHJvdHRsZWFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXgg
ZGM3OTIyMjczODBjOWMwMzQyZGNkODlmMWRkNzA4MWU3OTUxN2JmOS4uZWIzYmU2ZDJmOWViYzUw
MmIyYzRhNzEyY2Y4NjFiOGY5NjBkMWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNTUyLDEx
ICs1NTIsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlv
bihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpcwogICAgIG1fcmVnaXN0cmF0aW9ucy5y
ZW1vdmUocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyBSZWY8UHVzaFN1
YnNjcmlwdGlvbj4gY3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKFJlZjxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uPiByZWdpc3RyYXRpb24sIFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0
YSkKLXsKLSAgICByZXR1cm4gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUocmVnaXN0
cmF0aW9uKSwgV1RGTW92ZShkYXRhLmVuZHBvaW50KSwgZGF0YS5leHBpcmF0aW9uVGltZSwgV1RG
TW92ZShkYXRhLnNlcnZlclZBUElEUHVibGljS2V5KSwgV1RGTW92ZShkYXRhLmNsaWVudEVDREhQ
dWJsaWNLZXkpLCBXVEZNb3ZlKGRhdGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKTsKLX0K
LQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFj
ZTxQdXNoU3Vic2NyaXB0aW9uPj4mJiBwcm9taXNlKQogewogICAgIGVuc3VyZVNXQ2xpZW50Q29u
bmVjdGlvbigpLnN1YnNjcmliZVRvUHVzaFNlcnZpY2UocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIo
KSwgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFtwcm90ZWN0ZWRSZWdpc3RyYXRpb24gPSBSZWYgeyBy
ZWdpc3RyYXRpb24gfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA1MTA0NTM0ZTU1ZjkxZWFhYzYy
NDExNzJjOGE4MjExOGIzZjhhNGRjLi40Y2VlOGRmZDRkMjNkMmJjZjNlOWUzZjFlYjY3MzQ2Mjlj
MzI1MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTIwLDYgKzEyMCwxNSBAQCB2b2lk
IFNXQ29udGV4dE1hbmFnZXI6OmZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgc3RkOjpvcAogICAgIHNlcnZpY2VXb3JrZXItPmZpcmVQdXNoRXZlbnQoV1RG
TW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFn
ZXI6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdT
dWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9s
ZFN1YnNjcmlwdGlvbkRhdGEpCit7CisgICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2Vy
TWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHNlcnZpY2VXb3JrZXItPmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQoV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgV1RGTW92ZShvbGRTdWJzY3JpcHRpb25E
YXRhKSk7Cit9CisKIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXgg
Yzc2NWM1N2QyMDIzZjE0Y2FiYmJkYmI5MGI2ODNlYTY1NDU3MDdjYi4uMjk1ZGRmMGQ0ZjYwNjVl
YWEyMTAxN2M4YzE1NGNlZjBiZGUzZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgpAQCAtOTEs
NiArOTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFsbEV2
ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlv
bkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0
aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVv
dXQsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZl
U2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYsIEhh
c2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKaW5kZXggZjZkZGY4OGJjMzIzNGM0NTg5ZTM0MmFlZjcyMTUyNzJhODg4
ZjUwMi4uODAzMzk1MGQ3NjM3ZTA4YzIzNmQ1Y2IzMjFmZTgwOGFlOWI4N2ZjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUHVzaEV2ZW50
LmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgpA
QCAtMjM1LDYgKzIzNywzMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90PgogICAgIH0pOwogfQog
Cit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1
YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xk
U3Vic2NyaXB0aW9uRGF0YSkKK3sKKyAgICBSZWYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7CisgICAg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLCBuZXdTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShuZXdTdWJz
Y3JpcHRpb25EYXRhKSwgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IFdURk1vdmUob2xkU3Vic2NyaXB0
aW9uRGF0YSldKCkgbXV0YWJsZSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQgZmlyaW5nIGV2ZW50IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgICAg
ICBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gbmV3U3Vic2NyaXB0aW9uOworICAgICAgICBSZWZQ
dHI8UHVzaFN1YnNjcmlwdGlvbj4gb2xkU3Vic2NyaXB0aW9uOworCisgICAgICAgIGlmIChuZXdT
dWJzY3JpcHRpb25EYXRhKQorICAgICAgICAgICAgbmV3U3Vic2NyaXB0aW9uID0gY3JlYXRlUHVz
aFN1YnNjcmlwdGlvbkZyb21EYXRhKG51bGxwdHIsIFdURk1vdmUoKm5ld1N1YnNjcmlwdGlvbkRh
dGEpKTsKKyAgICAgICAgaWYgKG9sZFN1YnNjcmlwdGlvbkRhdGEpCisgICAgICAgICAgICBvbGRT
dWJzY3JpcHRpb24gPSBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEobnVsbHB0ciwgV1RG
TW92ZSgqb2xkU3Vic2NyaXB0aW9uRGF0YSkpOworCisgICAgICAgIGF1dG8gcHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50ID0gUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnB1c2hzdWJzY3JpcHRpb25jaGFuZ2VFdmVudCwgeyB9LCBXVEZNb3ZlKG5ld1N1
YnNjcmlwdGlvbiksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uKSwgRXh0ZW5kYWJsZUV2ZW50OjpJ
c1RydXN0ZWQ6Olllcyk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0
Y2hFdmVudChwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOworCisgICAgICAgIHB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0
bGVkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXShhdXRvJiYpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0g
eworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29y
a2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmlu
aXNoaW5nIGZvciB3b3JrZXIgJWxsdSIsIHdlYWtUaGlzID8gd2Vha1RoaXMtPmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpIDogMCk7CisgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgICAgICB3ZWFrVGhpcy0+ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwog
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKQogewog
ICAgIEFTU0VSVChnbG9iYWxTY29wZSgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CkBAIC0yOTUsNyAr
MzI0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkK
IHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCgpCiB7CiAgICAg
aWYgKCFtX29uZ29pbmdIZWFydEJlYXRDaGVjaykgewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nIHx8IG1faXNI
YW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9pc0hhbmRsaW5nUHVzaEV2ZW50IHx8IG1fbWVzc2FnZUV2
ZW50Q291bnQpCisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8IG1f
c3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8fCBt
X2lzSGFuZGxpbmdQdXNoRXZlbnQgfHwgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3Vu
dCB8fCBtX21lc3NhZ2VFdmVudENvdW50KQogICAgICAgICAgICAgc3RhcnRIZWFydEJlYXRUaW1l
cigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzYyLDYgKzM5MSwxOCBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRmlyaW5nTWVzc2FnZUV2ZW50KCkKICAgICAtLW1f
bWVzc2FnZUV2ZW50Q291bnQ7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6d2lsbFBv
c3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCkKK3sKKyAgICBpZiAoIW1f
cHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQrKykKKyAgICAgICAgc3RhcnRIZWFydEJl
YXRUaW1lcigpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRmlyaW5n
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCkKK3sKKyAgICBBU1NFUlQobV9wdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnRDb3VudCk7CisgICAgLS1tX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudENvdW50OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMDY4MWIzM2Nm
Y2NhYmYzOTAwYTc0N2Y3MGUxMTU4NzIxMDhjMDBiYy4uNzYzMTRmMmQyNmQ3MjM0NWNlYTJlMTVl
YjgyYmRlMDAxMjNlNTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUHVzaFN1YnNj
cmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oIgpAQCAtNjEsMTIgKzYyLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQb3N0
VGFza1RvRmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlQWN0
aXZhdGVFdmVudCgpOwogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50KCk7
CisgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQo
KTsKIAogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtl
ckZldGNoOjpDbGllbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRp
b25zJiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAg
dm9pZCBxdWV1ZVRhc2tUb0ZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHF1ZXVlVGFza1Rv
RmlyZUFjdGl2YXRlRXZlbnQoKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgRnVuY3Rpb248dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3Rk
OjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBz
dGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEp
OwogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2pvYkRhdGFJZGVudGlmaWVyOyB9CkBAIC05MCw2ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmaW5pc2hlZEZpcmluZ0luc3RhbGxFdmVudChib29sIGhhc1JlamVjdGVkQW55UHJv
bWlzZSk7CiAgICAgdm9pZCBmaW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKICAgICB2b2lk
IGZpbmlzaGVkRmlyaW5nTWVzc2FnZUV2ZW50KCk7CisgICAgdm9pZCBmaW5pc2hlZEZpcmluZ1B1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogICAgIHZvaWQgZmluaXNoZWRTdGFydGluZygp
OwogCiAgICAgdm9pZCBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CkBAIC0xMDUsNiArMTA5LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1f
cHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgeyAwIH07CiAgICAgdWludDY0X3QgbV9t
ZXNzYWdlRXZlbnRDb3VudCB7IDAgfTsKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsgSWRsZSwgU3Rh
cnRpbmcsIEluc3RhbGxpbmcsIEFjdGl2YXRpbmcgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3Rh
dGU6OklkbGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDA3
M2I0MmU5MzZlYmZkZTE5Yjk1ZWFmNTEwNTg1MGUyNGE5Yjk0Y2QuLjA3NTJmNDliYWRkZDI3ZjAw
M2E0MThmZjA3MTE5ODZkZjI2OTIzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcApAQCAtMzIwLDYgKzMyMCwxOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6ZmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYQogICAg
ICAgICBtX29uZ29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CiB9CiAKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9u
RGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRp
b25EYXRhKQoreworICAgIGlmIChuZXdTdWJzY3JpcHRpb25EYXRhKQorICAgICAgICBuZXdTdWJz
Y3JpcHRpb25EYXRhID0gbmV3U3Vic2NyaXB0aW9uRGF0YS0+aXNvbGF0ZWRDb3B5KCk7CisgICAg
aWYgKG9sZFN1YnNjcmlwdGlvbkRhdGEpCisgICAgICAgIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBv
bGRTdWJzY3JpcHRpb25EYXRhLT5pc29sYXRlZENvcHkoKTsKKworICAgIHRocmVhZCgpLndpbGxQ
b3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgIHRocmVhZCgp
LnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBvbGRT
dWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKV0oYXV0byYpIG11
dGFibGUgeworICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQoV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgV1RGTW92ZShvbGRTdWJz
Y3JpcHRpb25EYXRhKSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmgKaW5kZXggY2VmYmM1ZTE2MzY4YzM4YTgzYTdlMTE1ZmQ1NzQ3MmNhZjVjNWI5OC4u
ZTViMmI2ZTIzNTliZDI2ZTk3Yjk5NmQ1MzhjOWNkZTI3Yzk4YmRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkZldGNoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJE
ZWJ1Z2dhYmxlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTgxLDYgKzgyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoKTsKICAgICB2b2lkIGZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZmly
ZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlw
dGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CiAKICAgICB2b2lkIGRpZFNhdmVTY3Jp
cHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGlt
cG9ydGVkU2NyaXB0cyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OWJjYzA2N2NmZDVjYmIxZjk0NTc2ZTdkZmI3YTJj
YzNmY2I3ZGQ0Li4zMDE4MWY1M2MyZTBlNDg3YjY1MmRkZTI0Yzk2ZWVlZThjMGQwMmZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMTEtMTMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBldmVu
dCBoYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAgLSBNb2RpZmllZCB0aGUgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSB0ZXN0IHRvIHNlbmQgYSBy
ZWFsIGV2ZW50IHRvIHRoZSBzZXJ2aWNlIHdvcmtlci4KKyAgICAgICAgIC0gTW9kaWZpZWQgdGhl
IHNlcnZpY2Ugd29ya2VyIHNwaW5uaW5nIHRlc3RzIHRvIHRlc3QgZm9yIGd1YXJkaW5nIGFnYWlu
c3QgaW5maW5pdGUgbG9vcHMgaW4KKyAgICAgICAgICAgdGhlIHB1c2ggYW5kIHB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcnMuCisKKyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzOgorICAgICAgICAocHJvbWlzZV90
ZXN0KToKKyAgICAgICAgKGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbCk6CisgICAgICAgICh0
ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKHByb21pc2VfdGVzdC5hc3luYyBuZXdTdWJzY3JpcHRp
b24pOiBEZWxldGVkLgorICAgICAgICAocHJvbWlzZV90ZXN0LmFzeW5jIHJldHVybik6IERlbGV0
ZWQuCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzOgorICAgICAgICAoYXN5bmMgc2Vu
ZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNo
Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLXdvcmtlci5qczoKKyAgICAgICAgKHJlc3BvbmRUb1BlbmRpbmdFdmVudCk6CisgICAg
ICAgIChwdXNoVGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gYWNjZXNzaW5nIHJlYXNvbiBwcm9wZXJ0eSBvZiBh
IG5ld2x5IGNyZWF0ZWQgQWJvcnRTaWduYWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmlu
ZGV4IGIxZGQxZDViMjRlNGU1ODU2ZWE5YTRmNjY2MzdlYzFjYTU2YTMzM2EuLmU2MTFhNDA1YjQ3
ZjhjMjU0OTE1NzI4ZTE1MjAyNDM5MjVkN2RkZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTEzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2Ug
ZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmViYXNlbGluZSB0ZXN0IHJlc3VsdHMgc2luY2Ugd2Ugbm93IHN1cHBvcnQgb25wdXNo
c3Vic2NyaXB0aW9uY2hhbmdlLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gt
YXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTExLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg1NTgzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5h
bnkuanMKaW5kZXggODJjNDIxZjVhZjIxMDBlYjk5MjRkNTU1NGRmODcwNTEwYjA0Nzc1NS4uOGMz
NGQzNDQ3NDU5NWJjYWNkNDE4OTQ4N2FjNmM1YjY4OWJjMjIyOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQuYW55LmpzCkBAIC0yLDI3ICsyLDIzIEBACiAvLyBNRVRBOiBnbG9iYWw9c2Vydmlj
ZXdvcmtlcgogLy8gTUVUQTogc2NyaXB0PWNvbnN0YW50cy5qcwogCi10ZXN0KCgpID0+IHsKLSAg
ICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24s
IG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwg
bnVsbCwgIm9sZCIpOwotfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IGRh
dGEiKTsKLQotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9u
OiBudWxsLCBvbGRTdWJzY3JpcHRpb246IG51bGwgfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVu
dC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50
Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOwotfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCB3aXRob3V0IHN1YnNjcmlwdGlvbnMiKTsKK2xldCBhY3RpdmF0ZVByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25hY3RpdmF0ZSA9IHJlc29sdmUpOworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgIHJldHVybiBhY3RpdmF0ZVByb21pc2U7Cit9LCAid2FpdCBmb3Ig
YWN0aXZlIHNlcnZpY2Ugd29ya2VyIik7CiAKIGxldCBuZXdTdWJzY3JpcHRpb24gPSBudWxsOwog
bGV0IG9sZFN1YnNjcmlwdGlvbiA9IG51bGw7CiAKLWxldCBhY3RpdmF0ZVByb21pc2UgPSBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25hY3RpdmF0ZSA9IHJlc29sdmUpOwotcHJvbWlzZV90
ZXN0KGFzeW5jICgpID0+IHsKLSAgIHJldHVybiBhY3RpdmF0ZVByb21pc2U7Ci19LCAid2FpdCBm
b3IgYWN0aXZlIHNlcnZpY2Ugd29ya2VyIik7CitmdW5jdGlvbiBhc3NlcnRTdWJzY3JpcHRpb25z
QXJlRXF1YWwoYSwgYiwgcmVhc29uKQoreworICAgIGlmICghYSB8fCAhYikKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhhLCBiLCByZWFzb24pOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhKU09OLnN0cmluZ2lmeShhLnRvSlNPTigpKSwgSlNPTi5zdHJpbmdpZnkoYi50b0pTT04oKSks
IHJlYXNvbik7Cit9CiAKLXByb21pc2VfdGVzdChhc3luYygpID0+IHsKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CiAgICAgbmV3U3Vic2NyaXB0aW9uID0gc2VsZi5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1
YnNjcmlwdGlvbihFTkRQT0lOVCwgRVhQSVJBVElPTl9USU1FLCBWQUxJRF9TRVJWRVJfS0VZLCBD
TElFTlRfS0VZXzEsIEFVVEgpOwogICAgIG9sZFN1YnNjcmlwdGlvbiA9IHNlbGYuaW50ZXJuYWxz
LmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24oRU5EUE9JTlQsIEVYUElSQVRJT05fVElNRSwgVkFMSURf
U0VSVkVSX0tFWSwgQ0xJRU5UX0tFWV8yLCBBVVRIKTsKIApAQCAtMzIsMjAgKzI4LDMwIEBAIHBy
b21pc2VfdGVzdChhc3luYygpID0+IHsKICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiByZXNvbHZlKCkpOwogfSwgImNyZWF0ZSBzdWJzY3JpcHRpb25zIik7CiAKLXRlc3QoKCkgPT4g
ewotICAgIGxldCBldmVudCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UiLCB7IG5ld1N1YnNjcmlwdGlvbiB9KTsKLSAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7Ci0gICAg
YXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKK3Byb21p
c2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudChudWxsLCBudWxsKTsKKyAgICBsZXQgZXZlbnQgPSBhd2FpdCBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0gcmVz
b2x2ZSk7CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm5ld1N1YnNjcmlw
dGlvbiwgbnVsbCwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVu
dC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKK30sICJQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25zIik7CisKK3Byb21pc2VfdGVzdChhc3luYygp
ID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudChuZXdTdWJzY3JpcHRpb24sIG51bGwpOworICAgIGxldCBldmVudCA9IGF3YWl0IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgPSByZXNvbHZl
KTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQubmV3U3Vic2NyaXB0aW9u
LCBuZXdTdWJzY3JpcHRpb24sICJuZXciKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1
YWwoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBudWxsLCAib2xkIik7CiB9LCAiUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50IHdpdGggbmV3IHN1YnNjcmlwdGlvbiIpOwogCi10ZXN0KCgpID0+IHsK
LSAgICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIiwgeyBvbGRTdWJzY3JpcHRpb24gfSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uLCAib2xkIik7Citwcm9taXNl
X3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQobnVsbCwgb2xkU3Vic2NyaXB0aW9uKTsKKyAgICBsZXQgZXZlbnQg
PSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hh
bmdlID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm5l
d1N1YnNjcmlwdGlvbiwgbnVsbCwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVF
cXVhbChldmVudC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwg
IlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG9sZCBzdWJzY3JpcHRpb24iKTsKIAot
dGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJz
Y3JpcHRpb24gfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG5l
d1N1YnNjcmlwdGlvbiwgIm5ldyIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2Ny
aXB0aW9uLCBvbGRTdWJzY3JpcHRpb24sICJvbGQiKTsKK3Byb21pc2VfdGVzdChhc3luYygpID0+
IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dChuZXdTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbik7CisgICAgbGV0IGV2ZW50ID0gYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9
IHJlc29sdmUpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5uZXdTdWJz
Y3JpcHRpb24sIG5ld1N1YnNjcmlwdGlvbiwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlv
bnNBcmVFcXVhbChldmVudC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIp
OwogfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBhbmQgb2xkIHN1YnNj
cmlwdGlvbiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dC5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggOTVmYTJiMTc0NzJlMjdmNDYz
ZWMxY2FiMTYyMDI2MzlhYTZiZTBhYi4uMjkxNmIyNmUwNTgyYjU3NmE1NDZkYTg4MjdkZjU3NDg4
MDZkMWRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsNyBAQAogCi1QQVNT
IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IGRhdGEKLVBBU1MgUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyB3YWl0IGZvciBh
Y3RpdmUgc2VydmljZSB3b3JrZXIKIFBBU1MgY3JlYXRlIHN1YnNjcmlwdGlvbnMKK1BBU1MgUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyBQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBuZXcgc3Vic2NyaXB0aW9uCiBQQVNTIFB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG9sZCBzdWJzY3JpcHRpb24KIFBBU1MgUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGggbmV3IGFuZCBvbGQgc3Vic2NyaXB0aW9uCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Jv
dXRpbmVzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9yb3V0aW5lcy5qcwppbmRleCA3NjQ5NzA5MGU2MDhjNGYxNWRjZjRkZjcyYmFmMGM3YzlhYTll
MWU0Li5lMzYzMzBjM2Q0Yjk1NTVlNzIzZGMxOWVhNTk0MzAyZDg2MjdmZjNiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVz
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMv
cm91dGluZXMuanMKQEAgLTI4LDYgKzI4LDE4IEBAIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZSh3b3Jr
ZXIsIHN0YXRlKQogICAgIH0pOwogfQogCithc3luYyBmdW5jdGlvbiBzZW5kU3luY01lc3NhZ2Uo
d29ya2VyLCBtZXNzYWdlTmFtZSwgdGltZW91dCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgicmVxdWlyZXMgaW50ZXJuYWxzIik7
CisKKyAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgY29uc3Qg
cmVjZWl2ZWRNZXNzYWdlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjaGFubmVsLnBvcnQxLm9u
bWVzc2FnZSA9IHJlc29sdmUpOworICAgIGNvbnN0IHRpbWVkT3V0ID0gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4gc2V0VGltZW91dChyZWplY3QsIHRpbWVvdXQgfHwgNTAwMCkpOwor
ICAgIHdvcmtlci5wb3N0TWVzc2FnZShtZXNzYWdlTmFtZSwgW2NoYW5uZWwucG9ydDJdKTsKKyAg
ICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyZWNlaXZlZE1lc3NhZ2UsIHRpbWVkT3V0XSk7Cit9CisK
IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtl
cikKIHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjRmYjljZTViZjcyOTUwODgxMjFkY2VhMDU1OWVlNTQ2ZTI5Y2QzZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1wdXNoLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFT
UyBTcGluIGluIHB1c2gKK1BBU1MgU3BpbiBhZnRlciBwdXNoCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1w
dXNoLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzQ1N2M3
ODRmZmU0ZWJjYTI5MDc5M2ZhZTk0NmEyZDUwZjRkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
cHVzaC5odHRwcy5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgU2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dD10cnVl
IF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBz
Y29wZSA6ICJzcGluLXB1c2giIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5p
bnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxs
aW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAi
cHVzaCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5n
KHdvcmtlcik7Cit9LCAiU3BpbiBpbiBwdXNoIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNj
b3BlIDogInNwaW4tYWZ0ZXItcHVzaCIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0
aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmlu
c3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3Jr
ZXIsICJwdXNoIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1
bm5pbmcod29ya2VyKTsKK30sICJTcGluIGFmdGVyIHB1c2giKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiM2ZiMGNmZjA0NTU0MWU3Y2JkZDFhYWRmY2E1ZWYyZjFiMGYyZDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBwdXNoc3Vic2NyaXB0aW9u
Y2hhbmdlCitQQVNTIFNwaW4gYWZ0ZXIgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
c3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzA4MjljYzczMzE3NTI0NjI1
YTAzY2Y3OTc3YTE1ODQ1NGMyYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UuaHR0cHMuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVv
dXQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5q
cyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiB9KTsKKyAgICBjb25z
dCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JT
dGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQg
c2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKworICAg
IHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwg
IlNwaW4gaW4gcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwg
eyBzY29wZSA6ICJzcGluLWFmdGVyLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIH0pOworICAgIGNv
bnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZv
clN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBhd2Fp
dCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOworCisg
ICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9
LCAiU3BpbiBhZnRlciBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCmlu
ZGV4IDVlZjgzNzkxYjc5N2ViODFlYzAyNDNhODE3MzE3ODM4YjI0MmViZjQuLmZiZGZmZDIxOTk0
MjI3YjBkMTg5OTUwMjBhMGFiZjFiNGE2M2MxYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLXdvcmtlci5qcwpAQCAtMSwzICsxLDE0IEBACitsZXQgcGVuZGluZ0V2ZW50ID0g
bnVsbDsKKworZnVuY3Rpb24gcmVzcG9uZFRvUGVuZGluZ0V2ZW50KCkKK3sKKyAgICBpZiAoIXBl
bmRpbmdFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGVuZGluZ0V2ZW50LnBvcnRzWzBd
LnBvc3RNZXNzYWdlKCdyZWNlaXZlZCcpOworICAgIHBlbmRpbmdFdmVudCA9IG51bGw7Cit9CisK
IGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1ydW4iKSkKICAgICB3
aGlsZSh0cnVlKSB7IH07CiAKQEAgLTE5LDYgKzMwLDE3IEBAIGZ1bmN0aW9uIGFjdGl2YXRlVGVz
dChldmVudCkKIAogZnVuY3Rpb24gbWVzc2FnZVRlc3QoZXZlbnQpCiB7CisgICAgc3dpdGNoIChl
dmVudC5kYXRhKSB7CisgICAgY2FzZSAicHVzaCI6CisgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNj
aGVkdWxlUHVzaEV2ZW50KCJ0ZXN0Iik7CisgICAgICAgIHBlbmRpbmdFdmVudCA9IGV2ZW50Owor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSI6CisgICAg
ICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51
bGwsIG51bGwpOworICAgICAgICBwZW5kaW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bp
bi1tZXNzYWdlIikpCiAgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKICAgICBpZiAoc2VsZi5yZWdp
c3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItbWVzc2FnZSIpKQpAQCAtMzQsOCAr
NTYsMjkgQEAgZnVuY3Rpb24gZmV0Y2hUZXN0KGV2ZW50KQogICAgIGV2ZW50LnJlc3BvbmRXaXRo
KG5ldyBSZXNwb25zZSgib2siKSk7CiB9CiAKK2Z1bmN0aW9uIHB1c2hUZXN0KGV2ZW50KQorewor
ICAgIHJlc3BvbmRUb1BlbmRpbmdFdmVudCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9u
LnNjb3BlLmluY2x1ZGVzKCJzcGluLXB1c2giKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9Owor
ICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1wdXNo
IikpCisgICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwg
MCk7Cit9CisKK2Z1bmN0aW9uIHB1c2hTdWJzY3JpcHRpb25DaGFuZ2VUZXN0KGV2ZW50KQorewor
ICAgIHJlc3BvbmRUb1BlbmRpbmdFdmVudCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9u
LnNjb3BlLmluY2x1ZGVzKCJzcGluLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKSkKKyAgICAgICAg
d2hpbGUodHJ1ZSkgeyB9OworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRl
cygic3Bpbi1hZnRlci1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIikpCisgICAgICAgIHNlbGYuc2V0
VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CiAKIHNlbGYuYWRkRXZl
bnRMaXN0ZW5lcigiaW5zdGFsbCIsIGluc3RhbGxUZXN0KTsKIHNlbGYuYWRkRXZlbnRMaXN0ZW5l
cigiYWN0aXZhdGUiLCBhY3RpdmF0ZVRlc3QpOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgbWVzc2FnZVRlc3QpOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNo
VGVzdCk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCBwdXNoVGVzdCk7CitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCBwdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlVGVzdCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4
dAppbmRleCA2MzNhZDc3ODMyZjk0NTNlOThlZThjMmFjNjU5ZDRhMTNkMDlmYTVmLi5lMGI1ZTU0
YTg2M2ZkZWU3OGVkMTIyMTFlNjljNDY5ZmRlMWNmNjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0
cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnku
c2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTgwLDcgKzgwLDcgQEAgUEFTUyBQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQgaW50ZXJmYWNlOiBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KCJwdXMKIFBBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IGF0
dHJpYnV0ZSBwdXNoTWFuYWdlcgogUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVy
ZmFjZTogcmVnaXN0cmF0aW9uIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAicHVzaE1hbmFnZXIiIHdp
dGggdGhlIHByb3BlciB0eXBlCiBQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZh
Y2U6IGF0dHJpYnV0ZSBvbnB1c2gKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVy
ZmFjZTogYXR0cmlidXRlIG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBhc3NlcnRfb3duX3Byb3Bl
cnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAib25wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlIiBleHBlY3RlZCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdl
IiBtaXNzaW5nCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UKIFBBU1MgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIGludGVyZmFjZTogc2VsZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaCIgd2l0aCB0
aGUgcHJvcGVyIHR5cGUKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTog
c2VsZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0
aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkg
Im9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA0MTI2NTdjYmYwZGE5OTAwOWQwYjJhOTdjNzllNTcwYjU0ZmQxMjczLi4yZDg2YzIzYTllMmNk
NzZlMzY1ZjY3MGYwNmI2ODliOGU0MzE1NTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNiw2ICsx
MzYsOCBAQCB3ZWJraXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odAogd2Via2l0Lm9yZy9iLzIxNzY2OSBodHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMu
aHRtbCBbIFBhc3MgVGltZW91dCBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMu
aHRtbCBbIFBhc3MgVGltZW91dCBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMu
aHRtbCBbIFBhc3MgVGltZW91dCBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRt
bCBbIFBhc3MgVGltZW91dCBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25j
aGFuZ2UuaHR0cHMuaHRtbCBbIFBhc3MgVGltZW91dCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzIxNzY4NyBhY2Nlc3NpYmlsaXR5L2FyaWEtY3VycmVudC5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
IHdlYmtpdC5vcmcvYi8yMTc2ODcgYWNjZXNzaWJpbGl0eS9pbnNlcnQtbmV3bGluZS5odG1sIFsg
UGFzcyBUaW1lb3V0IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444534</attachid>
            <date>2021-11-17 10:30:16 -0800</date>
            <delta_ts>2021-11-17 16:23:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233088-20211117103015.patch</filename>
            <type>text/plain</type>
            <size>45415</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhN2ExYWVhZDE5ZmU2
ZDAzODg3MWQ3NDg5NjY3NzcwNzBjOWNmZC4uM2NlYjE1YTFkMGI3YjY4YTRhMjkzODMwNzExNTc4
NzEzNzNmZTE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIHNlbmQgYSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIG9u
CisgICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4gSSBkaWRuJ3QgaW1wbGVtZW50IGEg
Y29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgZXZlbnQgKGFzIHdlIGRvCisgICAgICAgIGZvciB0
aGUgcHVzaCBldmVudCkgc2luY2UgaXQncyBub3QgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkIGFu
ZCBJIGRvbid0IHRoaW5rIHdlJ2QgdXNlIGl0LgorICAgICAgICBXZSBvbmx5IHBsYW4gb24gZmly
aW5nIHRoaXMgZXZlbnQgdGhlIGZpcnN0IHRpbWUgeW91IHZpc2l0IGFuIG9yaWdpbiBhZnRlciB3
ZSBkZXJlZ2lzdGVyIGEKKyAgICAgICAgUHVzaFN1YnNjcmlwdGlvbiBmb3IgcmVjZWl2aW5nIHRv
byBtYW55IHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSB0ZXN0cyBpbiBodHRw
L3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzIGFuZAorICAg
ICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVz
aHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9wdXNo
LWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb246OlB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbjo6Y2xpZW50RUNESFB1YmxpY0tleSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
U3Vic2NyaXB0aW9uOjpzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
dXNoU3Vic2NyaXB0aW9uRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJz
Y3JpcHRpb25EYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBp
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZStQdXNoQVBJLmlkbDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6c2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQpOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2Ny
aXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVB1c2hTdWJzY3JpcHRpb25Gcm9tRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tU
b0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKwogMjAyMS0xMS0xMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gYWNj
ZXNzaW5nIHJlYXNvbiBwcm9wZXJ0eSBvZiBhIG5ld2x5IGNyZWF0ZWQgQWJvcnRTaWduYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24u
Y3BwCmluZGV4IGUxY2U4MzgxNGMzY2FkNTBjNGJkNTlmYmIyOGUzN2JmZjI0NjY0MmYuLjg5ZjUz
NGRjYmNlNmY5MmQwYjUzODkwN2MyODQ0YjViNzFmY2E2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcApAQCAtNDksMTMg
KzQ5LDEzIEBAIFB1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24oU3RyaW5nJiYgZW5k
cG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhCiB7CiB9CiAKLVB1c2hTdWJzY3JpcHRp
b246OlB1c2hTdWJzY3JpcHRpb24oUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+JiYgcmVn
aXN0cmF0aW9uLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFt
cD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5
LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4m
JiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJz
Y3JpcHRpb24oUmVmUHRyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9u
LCBQdXNoU3Vic2NyaXB0aW9uRGF0YSYmIGRhdGEpCiAgICAgOiBtX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKQotICAgICwgbV9lbmRwb2ludChXVEZNb3Zl
KGVuZHBvaW50KSkKLSAgICAsIG1fZXhwaXJhdGlvblRpbWUoZXhwaXJhdGlvblRpbWUpCi0gICAg
LCBtX29wdGlvbnMoUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZShXVEZNb3ZlKHNlcnZl
clZBUElEUHVibGljS2V5KSkpCi0gICAgLCBtX2NsaWVudEVDREhQdWJsaWNLZXkoV1RGTW92ZShj
bGllbnRFQ0RIUHVibGljS2V5KSkKLSAgICAsIG1fc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQo
V1RGTW92ZShzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkpCisgICAgLCBtX2VuZHBvaW50KFdU
Rk1vdmUoZGF0YS5lbmRwb2ludCkpCisgICAgLCBtX2V4cGlyYXRpb25UaW1lKGRhdGEuZXhwaXJh
dGlvblRpbWUpCisgICAgLCBtX29wdGlvbnMoUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEuc2VydmVyVkFQSURQdWJsaWNLZXkpKSkKKyAgICAsIG1fY2xpZW50RUNE
SFB1YmxpY0tleShXVEZNb3ZlKGRhdGEuY2xpZW50RUNESFB1YmxpY0tleSkpCisgICAgLCBtX3No
YXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KFdURk1vdmUoZGF0YS5zaGFyZWRBdXRoZW50aWNhdGlv
blNlY3JldCkpCiB7CiB9CiAKQEAgLTc2LDYgKzc2LDE2IEBAIFB1c2hTdWJzY3JpcHRpb25PcHRp
b25zJiBQdXNoU3Vic2NyaXB0aW9uOjpvcHRpb25zKCkgY29uc3QKICAgICByZXR1cm4gbV9vcHRp
b25zOwogfQogCitjb25zdCBWZWN0b3I8dWludDhfdD4mIFB1c2hTdWJzY3JpcHRpb246OmNsaWVu
dEVDREhQdWJsaWNLZXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudEVDREhQdWJsaWNL
ZXk7Cit9CisKK2NvbnN0IFZlY3Rvcjx1aW50OF90PiYgUHVzaFN1YnNjcmlwdGlvbjo6c2hhcmVk
QXV0aGVudGljYXRpb25TZWNyZXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYXJlZEF1dGhl
bnRpY2F0aW9uU2VjcmV0OworfQorCiBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4+IFB1c2hTdWJzY3JpcHRpb246OmdldEtleShQdXNoRW5jcnlwdGlvbktleU5hbWUgbmFtZSkg
Y29uc3QKIHsKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gKnNvdXJjZSA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5o
CmluZGV4IDA5Y2MzYTBkM2VhNDVjNzQ1MTlhYjc5OGZhNDgxYWRkMDExNjdmZDIuLmQzOTE4Njlj
YWQwYmI4NDY2MDc5ZWYxZDk1ZDFiZmMwZWJmMWU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIlB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oIgorI2luY2x1ZGUgIlB1c2hT
dWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkpTT04uaCIKIAog
I2luY2x1ZGUgPG9wdGlvbmFsPgpAQCAtNTQsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBlbmRwb2ludCgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3Rh
bXA+IGV4cGlyYXRpb25UaW1lKCkgY29uc3Q7CiAgICAgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMm
IG9wdGlvbnMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudEVDREhQ
dWJsaWNLZXkoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNoYXJlZEF1dGhl
bnRpY2F0aW9uU2VjcmV0KCkgY29uc3Q7CisKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4+IGdldEtleShQdXNoRW5jcnlwdGlvbktleU5hbWUpIGNvbnN0OwogICAgIHZv
aWQgdW5zdWJzY3JpYmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVByb21pc2VEZWZlcnJl
ZDxJRExCb29sZWFuPiYmKTsKIApAQCAtNjEsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFN1YnNjcmlwdGlvbihTdHJpbmcmJiBlbmRwb2ludCwg
c3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50
OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RI
UHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKLSAgICBQdXNoU3Vic2NyaXB0aW9u
KFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBTdHJpbmcmJiBlbmRwb2ludCwgc3Rk
OjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90
PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVi
bGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKKyAgICBQdXNoU3Vic2NyaXB0aW9uKFJl
ZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBQdXNoU3Vic2NyaXB0aW9uRGF0YSYm
KTsKIAogICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBtX3NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb247CiAgICAgU3RyaW5nIG1fZW5kcG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCmlu
ZGV4IDYxYTNmZWNhNTM2MjEzYjRlNTNjNGUwZWQyYWE3YmE4YzY0ZWMxOTEuLjYzZTU0Y2MyZTNl
OTkxNDY5OTQxNDBmZTUwMjg1YTY3ZDliOWM1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCkBAIC0yNiwx
MCArMjYsMjUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0
aW9uRGF0YS5oIgogCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1
c2hTdWJzY3JpcHRpb25PcHRpb25zLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5oIgorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK1B1c2hTdWJzY3JpcHRpb25EYXRhIFB1c2hTdWJzY3JpcHRpb25EYXRhOjpjcmVhdGUo
Y29uc3QgUHVzaFN1YnNjcmlwdGlvbiYgc3Vic2NyaXB0aW9uKQoreworICAgIFB1c2hTdWJzY3Jp
cHRpb25EYXRhIGRhdGE7CisgICAgZGF0YS5lbmRwb2ludCA9IHN1YnNjcmlwdGlvbi5lbmRwb2lu
dCgpOworICAgIGRhdGEuZXhwaXJhdGlvblRpbWUgPSBzdWJzY3JpcHRpb24uZXhwaXJhdGlvblRp
bWUoKTsKKyAgICBkYXRhLnNlcnZlclZBUElEUHVibGljS2V5ID0gc3Vic2NyaXB0aW9uLm9wdGlv
bnMoKS5zZXJ2ZXJWQVBJRFB1YmxpY0tleSgpOworICAgIGRhdGEuY2xpZW50RUNESFB1YmxpY0tl
eSA9IHN1YnNjcmlwdGlvbi5jbGllbnRFQ0RIUHVibGljS2V5KCk7CisgICAgZGF0YS5zaGFyZWRB
dXRoZW50aWNhdGlvblNlY3JldCA9IHN1YnNjcmlwdGlvbi5zaGFyZWRBdXRoZW50aWNhdGlvblNl
Y3JldCgpOworICAgIHJldHVybiBkYXRhOworfQorCiBQdXNoU3Vic2NyaXB0aW9uRGF0YSBQdXNo
U3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICBQdXNoU3Vic2Ny
aXB0aW9uRGF0YSByZXN1bHQ7CkBAIC0zOCw3ICs1Myw2IEBAIFB1c2hTdWJzY3JpcHRpb25EYXRh
IFB1c2hTdWJzY3JpcHRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJlc3VsdC5z
ZXJ2ZXJWQVBJRFB1YmxpY0tleSA9IHNlcnZlclZBUElEUHVibGljS2V5OwogICAgIHJlc3VsdC5j
bGllbnRFQ0RIUHVibGljS2V5ID0gY2xpZW50RUNESFB1YmxpY0tleTsKICAgICByZXN1bHQuc2hh
cmVkQXV0aGVudGljYXRpb25TZWNyZXQgPSBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldDsKLQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaAppbmRleCBlMjI3ZjYwNDYxMGI1Yzk5
NjAyZmZlMzFjNjNlOWFlZjAwMzU4ODE5Li5hMjM4OWQ4ZDM1ZWU2OGJlNzkzMWRkYjQ2MmNlYzVh
YTg1N2JkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hTdWJzY3JpcHRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFw
aS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCkBAIC0yOSwxMCArMjksMTQgQEAKIAogI2luY2x1ZGUg
IkVwb2NoVGltZVN0YW1wLmgiCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFB1
c2hTdWJzY3JpcHRpb247CitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOworCiBzdHJ1
Y3QgUHVzaFN1YnNjcmlwdGlvbkRhdGEgewogICAgIFN0cmluZyBlbmRwb2ludDsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZTsKQEAgLTQw
LDYgKzQ0LDggQEAgc3RydWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gY2xpZW50RUNESFB1YmxpY0tleTsKICAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkQXV0
aGVudGljYXRpb25TZWNyZXQ7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUHVzaFN1YnNj
cmlwdGlvbkRhdGEgY3JlYXRlKGNvbnN0IFB1c2hTdWJzY3JpcHRpb24mKTsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBp
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZStQdXNoQVBJLmlkbAppbmRleCBhZWQ0NWMwZTdjYTYw
ZTlhMGRiMDk1OWQ4YTg1ODkxNzNlMjZiZWQxLi4wMjQyNzM5ZTk0ZDE2NmE4Njc3NTI1ZDgwNDdm
ZDgzM2NmMTllYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBp
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZStQdXNoQVBJLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZStQdXNoQVBJLmlkbApA
QCAtMjgsNCArMjgsNSBAQAogICAgIEltcGxlbWVudGVkQnk9U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlUHVzaEFQSQogXSBwYXJ0aWFsIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
ewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25wdXNoOworICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAyNjFkODkzNDZmZmI0
MzQ2NmZkYTNlMTU1MWQyNjJlZjk2YTY5ZWI4Li5lYjQzNTQ1ZDliNTAxODEwY2IxZGIyYmRmZjA1
ZjRjNmZjMTQzMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oCkBAIC00NTMsNiArNDUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIG1hY3JvKG1hdGNoaW5nRWxlbWVudEluRmxhdFRyZWUpIFwKICAgICBtYWNybyhtZWRpYVN0
cmVhbVRyYWNrQ29uc3RyYWludHMpIFwKICAgICBtYWNybyhvbnB1c2gpIFwKKyAgICBtYWNybyhv
bnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhvbnJ0Y3RyYW5zZm9ybSkgXAog
ICAgIG1hY3JvKG9udG91Y2hjYW5jZWwpIFwKICAgICBtYWNybyhvbnRvdWNoZW5kKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlMWZhNGQzOWMxYzdjNTliNTAwMzZmNjBlYTQ4ZmIxYTAx
ZTk5ZDc0Li5mZmY3YjgzZmNlMzIyYjgyNWYzODZmODIyOTEwOTEzYzNiYmQzNjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8ocHJvY2Vzc29yZXJyb3IpIFwKICAgICBtYWNybyhwcm9ncmVzcykgXAogICAg
IG1hY3JvKHB1c2gpIFwKKyAgICBtYWNybyhwdXNoc3Vic2NyaXB0aW9uY2hhbmdlKSBcCiAgICAg
bWFjcm8ocmF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlYWR5c3RhdGVjaGFuZ2UpIFwKICAgICBt
YWNybyhyZWplY3Rpb25oYW5kbGVkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCA4YzY3NzU5OTUwNDhiYzJlYzczY2M1MmZj
NzY3NjFjMzhiZjdiNDQwLi42NjA2MjM2ODk5Nzg0MWIxNTEwNTE4NWUzNmYzNDgzZDcyOGU5YzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAjaW5jbHVk
ZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KIApAQCAtODIsNiArODMsMjEgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIFJlZlB0cjxEZWYKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzOjpzY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChSZWZQdHI8UHVzaFN1
YnNjcmlwdGlvbj4mJiBuZXdTdWJzY3JpcHRpb24sIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiYm
IG9sZFN1YnNjcmlwdGlvbikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25E
YXRhPiBuZXdTdWJzY3JpcHRpb25EYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlw
dGlvbkRhdGE+IG9sZFN1YnNjcmlwdGlvbkRhdGE7CisKKyAgICBpZiAobmV3U3Vic2NyaXB0aW9u
KQorICAgICAgICBuZXdTdWJzY3JpcHRpb25EYXRhID0gUHVzaFN1YnNjcmlwdGlvbkRhdGE6OmNy
ZWF0ZSgqbmV3U3Vic2NyaXB0aW9uKS5pc29sYXRlZENvcHkoKTsKKyAgICBpZiAob2xkU3Vic2Ny
aXB0aW9uKQorICAgICAgICBvbGRTdWJzY3JpcHRpb25EYXRhID0gUHVzaFN1YnNjcmlwdGlvbkRh
dGE6OmNyZWF0ZSgqb2xkU3Vic2NyaXB0aW9uKS5pc29sYXRlZENvcHkoKTsKKworICAgIGNhbGxP
bk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIG5ld1N1YnNjcmlwdGlvbkRh
dGEgPSBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBvbGRTdWJzY3JpcHRpb25EYXRhID0g
V1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChp
ZGVudGlmaWVyLCBXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBXVEZNb3ZlKG9sZFN1YnNj
cmlwdGlvbkRhdGEpKTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxz
Ojp3YWl0Rm9yRmV0Y2hFdmVudFRvRmluaXNoKEZldGNoRXZlbnQmIGV2ZW50LCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PiYmIHByb21pc2UpCiB7CiAgICAg
ZXZlbnQub25SZXNwb25zZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV2ZW50ID0gUmVm
IHsgZXZlbnQgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCAxMzhiMjcxZDMxOGZiYjMw
ZTY3MTA0NWI5ZTlhNDFjNDU0ZmI5YzYwLi5mNDUyNzBlMzdlMzA5MmY2ZDdmODQxMGI5MTllNWZh
YWRmYzM0YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgUmVmPEZldGNoUmVzcG9u
c2U+IGNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKIAogICAgIHZvaWQgc2NoZWR1bGVQdXNoRXZlbnQoY29uc3QgU3RyaW5nJiwgUmVmUHRy
PERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudChSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4mJiBuZXdTdWJzY3JpcHRpb24sIFJl
ZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiYmIG9sZFN1YnNjcmlwdGlvbik7CiAgICAgVmVjdG9yPFN0
cmluZz4gZmV0Y2hSZXNwb25zZUhlYWRlckxpc3QoRmV0Y2hSZXNwb25zZSYpOwogCiAgICAgU3Ry
aW5nIHByb2Nlc3NOYW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAppbmRleCA4NDY0NTVjNjI2OGY4NWM5ZmIxNTk4OGYz
YWVhMTNlYzkxYmQ3NzMyLi5lYWJjNjUzNGQ3NTkwYzYwYjhhZDVhZmRkYmQ5YTg0NzMzMjNlOWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5pZGwKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBzZXF1ZW5jZTxCeXRlU3RyaW5nPiBmZXRjaFJl
c3BvbnNlSGVhZGVyTGlzdChGZXRjaFJlc3BvbnNlIHJlc3BvbnNlKTsKIAogICAgIFByb21pc2U8
Ym9vbGVhbj4gc2NoZWR1bGVQdXNoRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIGRhdGEpOworICAg
IHVuZGVmaW5lZCBzY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChQdXNoU3Vic2Ny
aXB0aW9uPyBuZXdTdWJzY3JpcHRpb24sIFB1c2hTdWJzY3JpcHRpb24/IG9sZFN1YnNjcmlwdGlv
bik7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb2Nlc3NOYW1lOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVGhyb3R0bGVhYmxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCmluZGV4IGRjNzkyMjI3MzgwYzljMDM0MmRjZDg5ZjFkZDcwODFlNzk1MTdiZjkuLmQ5NjBj
YjE0ODgwMDlkNzdmMDI1ODlkZGNhMDRkMmQ1OWY5NjgzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
QEAgLTU1MiwxMSArNTUyLDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVS
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXMKICAgICBtX3JlZ2lz
dHJhdGlvbnMucmVtb3ZlKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMg
UmVmPFB1c2hTdWJzY3JpcHRpb24+IGNyZWF0ZVB1c2hTdWJzY3JpcHRpb25Gcm9tRGF0YShSZWY8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4gcmVnaXN0cmF0aW9uLCBQdXNoU3Vic2NyaXB0aW9u
RGF0YSYmIGRhdGEpCi17Ci0gICAgcmV0dXJuIFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZN
b3ZlKHJlZ2lzdHJhdGlvbiksIFdURk1vdmUoZGF0YS5lbmRwb2ludCksIGRhdGEuZXhwaXJhdGlv
blRpbWUsIFdURk1vdmUoZGF0YS5zZXJ2ZXJWQVBJRFB1YmxpY0tleSksIFdURk1vdmUoZGF0YS5j
bGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShkYXRhLnNoYXJlZEF1dGhlbnRpY2F0aW9uU2Vj
cmV0KSk7Ci19Ci0KIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3Vic2NyaWJlVG9QdXNo
U2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+JiYgcHJvbWlzZSkKIHsKICAgICBlbnN1cmVT
V0NsaWVudENvbm5lY3Rpb24oKS5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbi5p
ZGVudGlmaWVyKCksIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBbcHJvdGVjdGVkUmVnaXN0cmF0aW9u
ID0gUmVmIHsgcmVnaXN0cmF0aW9uIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKQEAgLTU2NSw3ICs1NjAsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbiYgcgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBwcm9taXNlLnJlc29sdmUoY3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKFdURk1vdmUo
cHJvdGVjdGVkUmVnaXN0cmF0aW9uKSwgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7Cisg
ICAgICAgIHByb21pc2UucmVzb2x2ZShQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShw
cm90ZWN0ZWRSZWdpc3RyYXRpb24pLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKICAg
ICB9KTsKIH0KIApAQCAtNTkwLDcgKzU4NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwcm9taXNlLnJlc29sdmUo
Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKFdURk1vdmUocHJvdGVjdGVkUmVnaXN0cmF0
aW9uKSwgV1RGTW92ZSgqb3B0aW9uYWxQdXNoU3Vic2NyaXB0aW9uRGF0YSkpLnB0cigpKTsKKyAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKHBy
b3RlY3RlZFJlZ2lzdHJhdGlvbiksIFdURk1vdmUoKm9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRh
dGEpKS5wdHIoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNTEw
NDUzNGU1NWY5MWVhYWM2MjQxMTcyYzhhODIxMThiM2Y4YTRkYy4uNGNlZThkZmQ0ZDIzZDJiY2Yz
ZTllM2YxZWI2NzM0NjI5YzMyNTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTEyMCw2
ICsxMjAsMTUgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3AKICAgICBzZXJ2aWNlV29ya2VyLT5m
aXJlUHVzaEV2ZW50KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlw
dGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2Ny
aXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKQoreworICAgIGF1dG8qIHNlcnZpY2VX
b3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzZXJ2aWNlV29y
a2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2VyLT5maXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUo
b2xkU3Vic2NyaXB0aW9uRGF0YSkpOworfQorCiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVy
bWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uZHMg
dGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oCmluZGV4IGM3NjVjNTdkMjAyM2YxNGNhYmJiZGJiOTBiNjgzZWE2NTQ1NzA3Y2Iu
LjI5NWRkZjBkNGY2MDY1ZWFhMjEwMTdjOGMxNTRjZWYwYmRlM2Q4MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50
aWZpZXIuaCIKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9u
YWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNj
cmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGY2ZGRmODhiYzMyMzRjNDU4OWUz
NDJhZWY3MjE1MjcyYTg4OGY1MDIuLjE3OWIzZTBmMjcwMzI0ZTljMDI2MTU4YTYxYjNjMDViYTE0
ZDVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIlB1c2hFdmVudC5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKKyNpbmNs
dWRlICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJTV0NvbnRleHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRmV0Y2guaCIKQEAgLTIzNSw2ICsyMzcsMzMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4KICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0
aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3Jp
cHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpCit7CisgICAgUmVmIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmdsb2Jh
bFNjb3BlKCkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVl
dWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbmV3U3Vic2NyaXB0aW9uRGF0YSA9
IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBXVEZN
b3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBSRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2
NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisKKyAgICAgICAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG5ld1N1YnNjcmlwdGlv
bjsKKyAgICAgICAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG9sZFN1YnNjcmlwdGlvbjsKKwor
ICAgICAgICBpZiAobmV3U3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG5ld1N1YnNjcmlw
dGlvbiA9IFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZSgmc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT5yZWdpc3RyYXRpb24oKSwgV1RGTW92ZSgqbmV3U3Vic2NyaXB0aW9uRGF0YSkpOworICAgICAg
ICBpZiAob2xkU3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG9sZFN1YnNjcmlwdGlvbiA9
IFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKCpvbGRTdWJzY3JpcHRp
b25EYXRhKSk7CisKKyAgICAgICAgYXV0byBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgPSBQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVzaHN1YnNj
cmlwdGlvbmNoYW5nZUV2ZW50LCB7IH0sIFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwgV1RGTW92
ZShvbGRTdWJzY3JpcHRpb24pLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAg
ICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudCk7CisKKyAgICAgICAgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyldKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFz
a1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCBmaW5pc2hpbmcgZm9yIHdvcmtlciAl
bGx1Iiwgd2Vha1RoaXMgPyB3ZWFrVGhpcy0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwKTsK
KyAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5maW5pc2hlZEZpcmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKGdsb2JhbFNj
b3BlKCktPmlzQ29udGV4dFRocmVhZCgpKTsKQEAgLTI5NSw3ICszMjQsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIoKQogdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIW1fb25nb2luZ0hlYXJ0
QmVhdENoZWNrKSB7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8
fCBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgfHwgbV9tZXNzYWdlRXZlbnRDb3VudCkKKyAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0
aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ1B1c2hFdmVu
dCB8fCBtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHx8IG1fbWVzc2FnZUV2ZW50
Q291bnQpCiAgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNjIsNiArMzkxLDE4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
ZmluaXNoZWRGaXJpbmdNZXNzYWdlRXZlbnQoKQogICAgIC0tbV9tZXNzYWdlRXZlbnRDb3VudDsK
IH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQoKQoreworICAgIGlmICghbV9wdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnRDb3VudCsrKQorICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7Cit9CisKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQoKQoreworICAgIEFTU0VSVChtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENv
dW50KTsKKyAgICAtLW1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCAwNjgxYjMzY2ZjY2FiZjM5MDBhNzQ3ZjcwZTEx
NTg3MjEwOGMwMGJjLi43NjMxNGYyZDI2ZDcyMzQ1Y2VhMmUxNWViODJiZGUwMDEyM2U1NTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJGZXRjaC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCkBAIC02MSwx
MiArNjIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlSW5zdGFsbEV2
ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAg
dm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIHdpbGxQb3N0
VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogCiAgICAgdm9pZCBxdWV1
ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJik7CiAgICAgdm9pZCBx
dWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VX
b3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmly
ZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgp
OwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHF1ZXVlVGFz
a1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJz
Y3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1
YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CiAKICAgICBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YUlkZW50
aWZpZXI7IH0KQEAgLTkwLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaGVkRmly
aW5nSW5zdGFsbEV2ZW50KGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKICAgICB2b2lkIGZp
bmlzaGVkRmlyaW5nQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgZmluaXNoZWRGaXJpbmdNZXNz
YWdlRXZlbnQoKTsKKyAgICB2b2lkIGZpbmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KCk7CiAgICAgdm9pZCBmaW5pc2hlZFN0YXJ0aW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0
SGVhcnRCZWF0VGltZXIoKTsKQEAgLTEwNSw2ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNIYW5kbGlu
Z1B1c2hFdmVudCB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9wdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnRDb3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21lc3NhZ2VFdmVudENvdW50IHsg
MCB9OwogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBTdGFydGluZywgSW5zdGFsbGluZywg
QWN0aXZhdGluZyB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggMDczYjQyZTkzNmViZmRlMTliOTVl
YWY1MTA1ODUwZTI0YTliOTRjZC4uMDc1MmY0OWJhZGRkMjdmMDAzYTQxOGZmMDcxMTk4NmRmMjY5
MjM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0zMjAsNiAr
MzIwLDE5IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaEV2ZW50KHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRhCiAgICAgICAgIG1fb25nb2luZ1B1c2hU
YXNrcy50YWtlKGlkZW50aWZpZXIpKGZhbHNlKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFs
PFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpCit7CisgICAgaWYg
KG5ld1N1YnNjcmlwdGlvbkRhdGEpCisgICAgICAgIG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBuZXdT
dWJzY3JpcHRpb25EYXRhLT5pc29sYXRlZENvcHkoKTsKKyAgICBpZiAob2xkU3Vic2NyaXB0aW9u
RGF0YSkKKyAgICAgICAgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IG9sZFN1YnNjcmlwdGlvbkRhdGEt
Pmlzb2xhdGVkQ29weSgpOworCisgICAgdGhyZWFkKCkud2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7CisgICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmV3U3Vic2NyaXB0aW9uRGF0
YSA9IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBX
VEZNb3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIHRo
cmVhZCgpLnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChXVEZNb3Zl
KG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEpKTsKKyAg
ICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBjZWZi
YzVlMTYzNjhjMzhhODNhN2UxMTVmZDU3NDcyY2FmNWM1Yjk4Li5lNWIyYjZlMjM1OWJkMjZlOTdi
OTk2ZDUzOGM5Y2RlMjdjOThiZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmV0
Y2hJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3Jp
cHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRlYnVnZ2FibGUuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJ
bnNwZWN0b3JQcm94eS5oIgpAQCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJl
SW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQg
ZmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBmaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2Ny
aXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJz
Y3JpcHRpb25EYXRhKTsKIAogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVm
ZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDQ5YmNjMDY3Y2ZkNWNiYjFmOTQ1NzZlN2RmYjdhMmNjM2ZjYjdkZDQuLjk0Y2QwNjRh
Yjk1ZTQ4N2QxZGQ4ODY5ZTg2NTBlN2Q4NDE1ODk1ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAyMS0xMS0xMyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhhbmRsZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICAtIE1vZGlmaWVkIHRoZSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIHRlc3QgdG8gc2VuZCBhIHJlYWwgZXZlbnQgdG8gdGhlIHNl
cnZpY2Ugd29ya2VyLgorICAgICAgICAgLSBNb2RpZmllZCB0aGUgc2VydmljZSB3b3JrZXIgc3Bp
bm5pbmcgdGVzdHMgdG8gdGVzdCBmb3IgZ3VhcmRpbmcgYWdhaW5zdCBpbmZpbml0ZSBsb29wcyBp
bgorICAgICAgICAgICB0aGUgcHVzaCBhbmQgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBldmVudCBo
YW5kbGVycy4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIGV4aXN0aW5nIHNwaW5uaW5nIHRlc3Rz
IGFyZSBtYXJrZWQgYXMgZmxha3kgb24gaW9zLXdrMi4gV2UgZG8gdGhlIHNhbWUgaGVyZQorICAg
ICAgICBzaW5jZSB0aGUgdGVzdCBwYXNzZXMgbG9jYWxseSBidXQgaXMgZmxha3kgaW4gRVdTLgor
CisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
LmFueS5qczoKKyAgICAgICAgKHByb21pc2VfdGVzdCk6CisgICAgICAgIChhc3NlcnRTdWJzY3Jp
cHRpb25zQXJlRXF1YWwpOgorICAgICAgICAodGVzdCk6IERlbGV0ZWQuCisgICAgICAgIChwcm9t
aXNlX3Rlc3QuYXN5bmMgbmV3U3Vic2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKHByb21p
c2VfdGVzdC5hc3luYyByZXR1cm4pOiBEZWxldGVkLgorICAgICAgICAqIGh0dHAvd3B0L3B1c2gt
YXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2VydmljZXdvcmtlci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0
aW5lcy5qczoKKyAgICAgICAgKGFzeW5jIHNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1
YnNjcmlwdGlvbmNoYW5nZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanM6CisgICAgICAgIChy
ZXNwb25kVG9QZW5kaW5nRXZlbnQpOgorICAgICAgICAocHVzaFRlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMTEtMTIg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB3aGVuIGFj
Y2Vzc2luZyByZWFzb24gcHJvcGVydHkgb2YgYSBuZXdseSBjcmVhdGVkIEFib3J0U2lnbmFsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiMWRkMWQ1YjI0ZTRlNTg1NmVhOWE0ZjY2
NjM3ZWMxY2E1NmEzMzNhLi5lNjExYTQwNWI0N2Y4YzI1NDkxNTcyOGUxNTIwMjQzOTI1ZDdkZGY1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0x
MS0xMyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhhbmRsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgdGVzdCByZXN1bHRz
IHNpbmNlIHdlIG5vdyBzdXBwb3J0IG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2
aWNld29ya2VyLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0xMS0xMiAgUnlhbiBIYWRkYWQgIDxyeWFu
aGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NTU4
My4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudC5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9w
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzCmluZGV4IDgyYzQyMWY1YWYyMTAwZWI5
OTI0ZDU1NTRkZjg3MDUxMGIwNDc3NTUuLjhjMzRkMzQ0NzQ1OTViY2FjZDQxODk0ODdhYzZjNWI2
ODliYzIyMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
cHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcwpAQCAtMiwyNyArMiwy
MyBAQAogLy8gTUVUQTogZ2xvYmFsPXNlcnZpY2V3b3JrZXIKIC8vIE1FVEE6IHNjcmlwdD1jb25z
dGFudHMuanMKIAotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOwotICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKLX0sICJQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBkYXRhIik7Ci0KLXRlc3QoKCkgPT4gewotICAgIGxl
dCBldmVudCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRp
b25jaGFuZ2UiLCB7IG5ld1N1YnNjcmlwdGlvbjogbnVsbCwgb2xkU3Vic2NyaXB0aW9uOiBudWxs
IH0pOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3
Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQi
KTsKLX0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25z
Iik7CitsZXQgYWN0aXZhdGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9u
YWN0aXZhdGUgPSByZXNvbHZlKTsKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgICByZXR1cm4gYWN0
aXZhdGVQcm9taXNlOworfSwgIndhaXQgZm9yIGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciIpOwogCiBs
ZXQgbmV3U3Vic2NyaXB0aW9uID0gbnVsbDsKIGxldCBvbGRTdWJzY3JpcHRpb24gPSBudWxsOwog
Ci1sZXQgYWN0aXZhdGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9uYWN0
aXZhdGUgPSByZXNvbHZlKTsKLXByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7Ci0gICByZXR1cm4g
YWN0aXZhdGVQcm9taXNlOwotfSwgIndhaXQgZm9yIGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciIpOwor
ZnVuY3Rpb24gYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGEsIGIsIHJlYXNvbikKK3sKKyAg
ICBpZiAoIWEgfHwgIWIpCisgICAgICAgIGFzc2VydF9lcXVhbHMoYSwgYiwgcmVhc29uKTsKKyAg
ICBlbHNlCisgICAgICAgIGFzc2VydF9lcXVhbHMoSlNPTi5zdHJpbmdpZnkoYS50b0pTT04oKSks
IEpTT04uc3RyaW5naWZ5KGIudG9KU09OKCkpLCByZWFzb24pOworfQogCi1wcm9taXNlX3Rlc3Qo
YXN5bmMoKSA9PiB7Citwcm9taXNlX3Rlc3QoKCkgPT4gewogICAgIG5ld1N1YnNjcmlwdGlvbiA9
IHNlbGYuaW50ZXJuYWxzLmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24oRU5EUE9JTlQsIEVYUElSQVRJ
T05fVElNRSwgVkFMSURfU0VSVkVSX0tFWSwgQ0xJRU5UX0tFWV8xLCBBVVRIKTsKICAgICBvbGRT
dWJzY3JpcHRpb24gPSBzZWxmLmludGVybmFscy5jcmVhdGVQdXNoU3Vic2NyaXB0aW9uKEVORFBP
SU5ULCBFWFBJUkFUSU9OX1RJTUUsIFZBTElEX1NFUlZFUl9LRVksIENMSUVOVF9LRVlfMiwgQVVU
SCk7CiAKQEAgLTMyLDIwICsyOCwzMCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CiAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSgpKTsKIH0sICJjcmVhdGUgc3Vi
c2NyaXB0aW9ucyIpOwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiwgeyBuZXdTdWJz
Y3JpcHRpb24gfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG5l
d1N1YnNjcmlwdGlvbiwgIm5ldyIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2Ny
aXB0aW9uLCBudWxsLCAib2xkIik7Citwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2Vs
Zi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQobnVsbCwgbnVs
bCk7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9u
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOworICAgIGFzc2VydFN1YnNjcmlwdGlv
bnNBcmVFcXVhbChldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKKyAgICBhc3Nl
cnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBudWxsLCAib2xk
Iik7Cit9LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9u
cyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2No
ZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQobmV3U3Vic2NyaXB0aW9uLCBudWxsKTsK
KyAgICBsZXQgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNo
c3Vic2NyaXB0aW9uY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0Fy
ZUVxdWFsKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7Cisg
ICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVs
bCwgIm9sZCIpOwogfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBzdWJz
Y3JpcHRpb24iKTsKIAotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgb2xkU3Vic2Ny
aXB0aW9uIH0pOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxs
LCAibmV3Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1
YnNjcmlwdGlvbiwgIm9sZCIpOworcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4geworICAgIHNlbGYu
aW50ZXJuYWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51bGwsIG9sZFN1
YnNjcmlwdGlvbik7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOworICAgIGFzc2VydFN1
YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsK
KyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBv
bGRTdWJzY3JpcHRpb24sICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQg
d2l0aCBvbGQgc3Vic2NyaXB0aW9uIik7CiAKLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVudCA9
IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2Ui
LCB7IG5ld1N1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uIH0pOwotICAgIGFzc2VydF9lcXVh
bHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24sICJuZXciKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uLCAib2xk
Iik7Citwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1
bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQobmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJzY3Jp
cHRpb24pOworICAgIGxldCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2Vs
Zi5vbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRTdWJzY3Jp
cHRpb25zQXJlRXF1YWwoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24sICJu
ZXciKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2NyaXB0
aW9uLCBvbGRTdWJzY3JpcHRpb24sICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQgd2l0aCBuZXcgYW5kIG9sZCBzdWJzY3JpcHRpb24iKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnku
c2VydmljZXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQu
dHh0CmluZGV4IDk1ZmEyYjE3NDcyZTI3ZjQ2M2VjMWNhYjE2MjAyNjM5YWE2YmUwYWIuLjI5MTZi
MjZlMDU4MmI1NzZhNTQ2ZGE4ODI3ZGY1NzQ4ODA2ZDFkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2Vy
dmljZXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMSw4ICsxLDcgQEAKIAotUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQg
d2l0aG91dCBkYXRhCi1QQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1
YnNjcmlwdGlvbnMKIFBBU1Mgd2FpdCBmb3IgYWN0aXZlIHNlcnZpY2Ugd29ya2VyCiBQQVNTIGNy
ZWF0ZSBzdWJzY3JpcHRpb25zCitQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRo
b3V0IHN1YnNjcmlwdGlvbnMKIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGgg
bmV3IHN1YnNjcmlwdGlvbgogUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBv
bGQgc3Vic2NyaXB0aW9uCiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5l
dyBhbmQgb2xkIHN1YnNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKaW5kZXggNzY0OTcwOTBl
NjA4YzRmMTVkY2Y0ZGY3MmJhZjBjN2M5YWE5ZTFlNC4uZTM2MzMwYzNkNGI5NTU1ZTcyM2RjMTll
YTU5NDMwMmQ4NjI3ZmYzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCkBAIC0yOCw2ICsyOCwxOCBA
QCBmdW5jdGlvbiB3YWl0Rm9yU3RhdGUod29ya2VyLCBzdGF0ZSkKICAgICB9KTsKIH0KIAorYXN5
bmMgZnVuY3Rpb24gc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgbWVzc2FnZU5hbWUsIHRpbWVvdXQp
Cit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoInJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgY29uc3QgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbCgpOworICAgIGNvbnN0IHJlY2VpdmVkTWVzc2FnZSA9IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSByZXNvbHZlKTsKKyAgICBjb25z
dCB0aW1lZE91dCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHNldFRpbWVvdXQo
cmVqZWN0LCB0aW1lb3V0IHx8IDUwMDApKTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UobWVzc2Fn
ZU5hbWUsIFtjaGFubmVsLnBvcnQyXSk7CisgICAgcmV0dXJuIFByb21pc2UucmFjZShbcmVjZWl2
ZWRNZXNzYWdlLCB0aW1lZE91dF0pOworfQorCiBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yU2Vydmlj
ZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpCiB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2gu
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZmI5Y2U1YmY3Mjk1MDg4MTIxZGNlYTA1
NTllZTU0NmUyOWNkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBwdXNoCitQQVNTIFNwaW4gYWZ0
ZXIgcHVzaAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0
cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZWM0NTdjNzg0ZmZlNGViY2EyOTA3OTNmYWU5NDZhMmQ1MGY0
ZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDMz
IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFNob3VsZFVzZVNl
cnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0
aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNoIiB9KTsKKyAgICBj
b25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRG
b3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdh
aXQgc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1c2giKTsKKworICAgIHJldHVybiB3YWl0Rm9y
U2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gcHVzaCIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRp
b24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLXB1c2giIH0pOwor
ICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQg
d2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAg
ICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaCIpOworCisgICAgcmV0dXJuIHdh
aXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRl
ciBwdXNoIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1w
dXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjNmYjBjZmYwNDU1
NDFlN2NiZGQxYWFkZmNhNWVmMmYxYjBmMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQ
QVNTIFNwaW4gaW4gcHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorUEFTUyBTcGluIGFmdGVyIHB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjcwODI5Y2M3MzMxNzUyNDYyNWEwM2NmNzk3N2ExNTg0NTRjMmE0OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKQEAgLTAs
MCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBTaG91
bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJl
Z2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2
aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tcHVzaHN1YnNj
cmlwdGlvbmNoYW5nZSIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3Rh
bGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcs
ICJhY3RpdmF0ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNo
c3Vic2NyaXB0aW9uY2hhbmdlIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJO
b0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGluIGluIHB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5z
dGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGlu
ZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtl
ck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
d29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcwppbmRleCA1ZWY4Mzc5MWI3OTdlYjgxZWMwMjQzYTgx
NzMxNzgzOGIyNDJlYmY0Li5mYmRmZmQyMTk5NDIyN2IwZDE4OTk1MDIwYTBhYmYxYjRhNjNjMWM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKQEAgLTEsMyAr
MSwxNCBAQAorbGV0IHBlbmRpbmdFdmVudCA9IG51bGw7CisKK2Z1bmN0aW9uIHJlc3BvbmRUb1Bl
bmRpbmdFdmVudCgpCit7CisgICAgaWYgKCFwZW5kaW5nRXZlbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIHBlbmRpbmdFdmVudC5wb3J0c1swXS5wb3N0TWVzc2FnZSgncmVjZWl2ZWQnKTsKKyAg
ICBwZW5kaW5nRXZlbnQgPSBudWxsOworfQorCiBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUu
aW5jbHVkZXMoInNwaW4tcnVuIikpCiAgICAgd2hpbGUodHJ1ZSkgeyB9OwogCkBAIC0xOSw2ICsz
MCwxNyBAQCBmdW5jdGlvbiBhY3RpdmF0ZVRlc3QoZXZlbnQpCiAKIGZ1bmN0aW9uIG1lc3NhZ2VU
ZXN0KGV2ZW50KQogeworICAgIHN3aXRjaCAoZXZlbnQuZGF0YSkgeworICAgIGNhc2UgInB1c2gi
OgorICAgICAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hFdmVudCgidGVzdCIpOworICAg
ICAgICBwZW5kaW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgInB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiOgorICAgICAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChudWxsLCBudWxsKTsKKyAgICAgICAgcGVuZGluZ0V2
ZW50ID0gZXZlbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoc2VsZi5yZWdp
c3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tbWVzc2FnZSIpKQogICAgICAgICB3aGlsZSh0
cnVlKSB7IH07CiAgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGlu
LWFmdGVyLW1lc3NhZ2UiKSkKQEAgLTM0LDggKzU2LDI5IEBAIGZ1bmN0aW9uIGZldGNoVGVzdChl
dmVudCkKICAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UoIm9rIikpOwogfQogCitm
dW5jdGlvbiBwdXNoVGVzdChldmVudCkKK3sKKyAgICByZXNwb25kVG9QZW5kaW5nRXZlbnQoKTsK
KworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1wdXNoIikp
CisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2Nv
cGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItcHVzaCIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQo
KCkgPT4geyB3aGlsZSh0cnVlKSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBwdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlVGVzdChldmVudCkKK3sKKyAgICByZXNwb25kVG9QZW5kaW5nRXZlbnQoKTsK
KworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlIikpCisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2Vs
Zi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGlsZSh0cnVlKSB7
IH07IH0sIDApOworfQogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImluc3RhbGwiLCBpbnN0YWxs
VGVzdCk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImFjdGl2YXRlIiwgYWN0aXZhdGVUZXN0KTsK
IHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1lc3NhZ2VUZXN0KTsKIHNlbGYuYWRk
RXZlbnRMaXN0ZW5lcigiZmV0Y2giLCBmZXRjaFRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVy
KCJwdXNoIiwgcHVzaFRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoc3Vic2NyaXB0
aW9uY2hhbmdlIiwgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZVRlc3QpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJu
ZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5h
bnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNjMzYWQ3NzgzMmY5NDUzZTk4ZWU4
YzJhYzY1OWQ0YTEzZDA5ZmE1Zi4uZTBiNWU1NGE4NjNmZGVlNzhlZDEyMjExZTY5YzQ2OWZkZTFj
ZjY5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1
c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC04MCw3ICs4MCw3IEBAIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGludGVyZmFj
ZTogbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzCiBQQVNTIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcHVzaE1hbmFnZXIKIFBBU1MgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IHJlZ2lzdHJhdGlvbiBtdXN0IGluaGVy
aXQgcHJvcGVydHkgInB1c2hNYW5hZ2VyIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogUEFTUyBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoCi1GQUlMIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UgYXNzZXJ0X293bl9wcm9wZXJ0eTogVGhlIGdsb2JhbCBvYmplY3QgbXVzdCBo
YXZlIGEgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgZXhwZWN0ZWQgcHJvcGVy
dHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdl
CiBQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhl
cml0IHByb3BlcnR5ICJvbnB1c2giIHdpdGggdGhlIHByb3BlciB0eXBlCi1GQUlMIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJv
bnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9vd25f
cHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIG1p
c3NpbmcKK1BBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0
IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0aCB0aGUgcHJv
cGVyIHR5cGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRv
ci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0
b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDEyNjU3Y2JmMGRhOTkwMDlkMGIyYTk3Yzc5
ZTU3MGI1NGZkMTI3My4uMmQ4NmMyM2E5ZTJjZDc2ZTM2NWY2NzBmMDZiNjg5YjhlNDMxNTU2YiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMzYsNiArMTM2LDggQEAgd2Via2l0Lm9yZy9iLzIxNzY2OSBo
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUu
aHQKIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVv
dXQgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMTc2ODcgYWNjZXNzaWJpbGl0eS9hcmlhLWN1
cnJlbnQuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjE3Njg3IGFjY2Vzc2li
aWxpdHkvaW5zZXJ0LW5ld2xpbmUuaHRtbCBbIFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444597</attachid>
            <date>2021-11-17 16:23:25 -0800</date>
            <delta_ts>2021-11-17 17:27:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233088-20211117162324.patch</filename>
            <type>text/plain</type>
            <size>47706</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc2ZjU4MDkzMjEzMDZh
OGVmYTkzMjBmOGY1Y2FkNWUzMDFhZmNiZS4uODJhZjBlM2QyZDViNTFkMWVmMWU5NTljNTMzZTEy
ZWNmZTJlYzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIHNlbmQgYSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIG9u
CisgICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4gSSBkaWRuJ3QgaW1wbGVtZW50IGEg
Y29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgZXZlbnQgKGFzIHdlIGRvCisgICAgICAgIGZvciB0
aGUgcHVzaCBldmVudCkgc2luY2UgaXQncyBub3QgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkIGFu
ZCBJIGRvbid0IHRoaW5rIHdlJ2QgdXNlIGl0LgorICAgICAgICBXZSBvbmx5IHBsYW4gb24gZmly
aW5nIHRoaXMgZXZlbnQgdGhlIGZpcnN0IHRpbWUgeW91IHZpc2l0IGFuIG9yaWdpbiBhZnRlciB3
ZSBkZXJlZ2lzdGVyIGEKKyAgICAgICAgUHVzaFN1YnNjcmlwdGlvbiBmb3IgcmVjZWl2aW5nIHRv
byBtYW55IHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1w
dXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2Ny
aXB0aW9uOjpQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6
ZW5kcG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6ZXhw
aXJhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpjbGll
bnRFQ0RIUHVibGljS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b246OnNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hTdWJzY3JpcHRpb246OmdldEtleSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
U3Vic2NyaXB0aW9uOjp0b0pTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkv
UHVzaFN1YnNjcmlwdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNj
cmlwdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vi
c2NyaXB0aW9uRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIHRl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6
CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg6CisgICAgICAgICog
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hTdWJzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmZpcmVQdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1
ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OndpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpmaW5pc2hlZEZpcmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIxLTExLTE3ICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEludHJvZHVjZSBlbnVtIGNs
YXNzIEludHJpbnNpY1dpZHRoTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKaW5kZXggZTFjZTgzODE0YzNjYWQ1MGM0YmQ1
OWZiYjI4ZTM3YmZmMjQ2NjQyZi4uNzFlNmFjZTA0NjVkNTFmNTRmODM0MDNkNjYxMmZmNGVhNzhl
Y2IyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vi
c2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb24uY3BwCkBAIC00MSw1MSArNDEsNjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCiBQdXNoU3Vi
c2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlv
bmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2Vy
dmVyVkFQSURQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXks
IFZlY3Rvcjx1aW50OF90PiYmIHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9l
bmRwb2ludChXVEZNb3ZlKGVuZHBvaW50KSkKLSAgICAsIG1fZXhwaXJhdGlvblRpbWUoZXhwaXJh
dGlvblRpbWUpCi0gICAgLCBtX29wdGlvbnMoUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0
ZShXVEZNb3ZlKHNlcnZlclZBUElEUHVibGljS2V5KSkpCi0gICAgLCBtX2NsaWVudEVDREhQdWJs
aWNLZXkoV1RGTW92ZShjbGllbnRFQ0RIUHVibGljS2V5KSkKLSAgICAsIG1fc2hhcmVkQXV0aGVu
dGljYXRpb25TZWNyZXQoV1RGTW92ZShzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkpCisgICAg
OiBtX2RhdGEgeyBXVEZNb3ZlKGVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUoc2Vy
dmVyVkFQSURQdWJsaWNLZXkpLCBXVEZNb3ZlKGNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3Zl
KHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSB9CiB7CiB9CiAKLVB1c2hTdWJzY3JpcHRpb246
OlB1c2hTdWJzY3JpcHRpb24oUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0
cmF0aW9uLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4g
ZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBz
aGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKLSAgICA6IG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpCi0gICAgLCBtX2VuZHBvaW50KFdURk1vdmUoZW5k
cG9pbnQpKQotICAgICwgbV9leHBpcmF0aW9uVGltZShleHBpcmF0aW9uVGltZSkKLSAgICAsIG1f
b3B0aW9ucyhQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczo6Y3JlYXRlKFdURk1vdmUoc2VydmVyVkFQ
SURQdWJsaWNLZXkpKSkKLSAgICAsIG1fY2xpZW50RUNESFB1YmxpY0tleShXVEZNb3ZlKGNsaWVu
dEVDREhQdWJsaWNLZXkpKQotICAgICwgbV9zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldChXVEZN
b3ZlKHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hT
dWJzY3JpcHRpb24oUHVzaFN1YnNjcmlwdGlvbkRhdGEmJiBkYXRhLCBSZWZQdHI8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXRpb24pCisgICAgOiBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKKyAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJh
dGlvbikpCiB7CiB9CiAKIFB1c2hTdWJzY3JpcHRpb246On5QdXNoU3Vic2NyaXB0aW9uKCkgPSBk
ZWZhdWx0OwogCitjb25zdCBQdXNoU3Vic2NyaXB0aW9uRGF0YSYgUHVzaFN1YnNjcmlwdGlvbjo6
ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YTsKK30KKwogY29uc3QgU3RyaW5nJiBQ
dXNoU3Vic2NyaXB0aW9uOjplbmRwb2ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW5kcG9p
bnQ7CisgICAgcmV0dXJuIG1fZGF0YS5lbmRwb2ludDsKIH0KIAogc3RkOjpvcHRpb25hbDxFcG9j
aFRpbWVTdGFtcD4gUHVzaFN1YnNjcmlwdGlvbjo6ZXhwaXJhdGlvblRpbWUoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2V4cGlyYXRpb25UaW1lOworICAgIHJldHVybiBtX2RhdGEuZXhwaXJhdGlv
blRpbWU7CiB9CiAKIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zJiBQdXNoU3Vic2NyaXB0aW9uOjpv
cHRpb25zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcHRpb25zOworICAgIGlmICghbV9vcHRp
b25zKSB7CisgICAgICAgIGF1dG8ga2V5ID0gbV9kYXRhLnNlcnZlclZBUElEUHVibGljS2V5Owor
ICAgICAgICBtX29wdGlvbnMgPSBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczo6Y3JlYXRlKFdURk1v
dmUoa2V5KSk7CisgICAgfQorCisgICAgcmV0dXJuICptX29wdGlvbnM7Cit9CisKK2NvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgUHVzaFN1YnNjcmlwdGlvbjo6Y2xpZW50RUNESFB1YmxpY0tleSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS5jbGllbnRFQ0RIUHVibGljS2V5OworfQorCitjb25z
dCBWZWN0b3I8dWludDhfdD4mIFB1c2hTdWJzY3JpcHRpb246OnNoYXJlZEF1dGhlbnRpY2F0aW9u
U2VjcmV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLnNoYXJlZEF1dGhlbnRpY2F0aW9u
U2VjcmV0OwogfQogCiBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hT
dWJzY3JpcHRpb246OmdldEtleShQdXNoRW5jcnlwdGlvbktleU5hbWUgbmFtZSkgY29uc3QKIHsK
LSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gKnNvdXJjZSA9IG51bGxwdHI7CisgICAgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+KiBzb3VyY2UgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChuYW1lKSB7
CiAgICAgY2FzZSBQdXNoRW5jcnlwdGlvbktleU5hbWU6OlAyNTZkaDoKLSAgICAgICAgc291cmNl
ID0gJm1fY2xpZW50RUNESFB1YmxpY0tleTsKKyAgICAgICAgc291cmNlID0gJmNsaWVudEVDREhQ
dWJsaWNLZXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXNoRW5jcnlwdGlvbktleU5h
bWU6OkF1dGg6Ci0gICAgICAgIHNvdXJjZSA9ICZtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0
OworICAgICAgICBzb3VyY2UgPSAmc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTIs
MTEgKzEyNCwxMSBAQCB2b2lkIFB1c2hTdWJzY3JpcHRpb246OnVuc3Vic2NyaWJlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogUHVzaFN1YnNjcmlwdGlvbkpT
T04gUHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKIHsKICAgICByZXR1cm4gUHVzaFN1
YnNjcmlwdGlvbkpTT04gewotICAgICAgICBtX2VuZHBvaW50LAotICAgICAgICBtX2V4cGlyYXRp
b25UaW1lLAorICAgICAgICBlbmRwb2ludCgpLAorICAgICAgICBleHBpcmF0aW9uVGltZSgpLAog
ICAgICAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gewotICAgICAgICAg
ICAgeyAicDI1NmRoIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhtX2NsaWVudEVDREhQdWJs
aWNLZXkpIH0sCi0gICAgICAgICAgICB7ICJhdXRoIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSB9CisgICAgICAgICAgICB7ICJwMjU2ZGgi
X3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNsaWVudEVDREhQdWJsaWNLZXkoKSkgfSwKKyAg
ICAgICAgICAgIHsgImF1dGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKHNoYXJlZEF1dGhl
bnRpY2F0aW9uU2VjcmV0KCkpIH0KICAgICAgICAgfQogICAgIH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCmluZGV4IDA5Y2Mz
YTBkM2VhNDVjNzQ1MTlhYjc5OGZhNDgxYWRkMDExNjdmZDIuLjhmMzIzN2ZkZTFhOTdhY2MxNWVi
ZGEzNDYzNzU0ZmQ3ZTE0MTQ3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIlB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25E
YXRhLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkpTT04uaCIKIAogI2luY2x1ZGUgPG9w
dGlvbmFsPgpAQCAtNTEsOSArNTIsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0YXRpYyBSZWY8UHVzaFN1YnNjcmlwdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFB1c2hTdWJzY3JpcHRpb24oc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB+UHVzaFN1YnNjcmlwdGlv
bigpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUHVzaFN1YnNjcmlwdGlvbkRhdGEmIGRh
dGEoKSBjb25zdDsKKwogICAgIGNvbnN0IFN0cmluZyYgZW5kcG9pbnQoKSBjb25zdDsKICAgICBz
dGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSgpIGNvbnN0OwogICAg
IFB1c2hTdWJzY3JpcHRpb25PcHRpb25zJiBvcHRpb25zKCkgY29uc3Q7CisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjbGllbnRFQ0RIUHVibGljS2V5KCkgY29uc3Q7CisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCgpIGNvbnN0OworCiAgICAg
RXhjZXB0aW9uT3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBnZXRLZXkoUHVzaEVuY3J5cHRp
b25LZXlOYW1lKSBjb25zdDsKICAgICB2b2lkIHVuc3Vic2NyaWJlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CiAKQEAgLTYxLDE0ICs2
NywxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFN1YnNj
cmlwdGlvbihTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4g
ZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBh
dXRoKTsKLSAgICBQdXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
PiYmLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhw
aXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0
b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRo
KTsKKyAgICBleHBsaWNpdCBQdXNoU3Vic2NyaXB0aW9uKFB1c2hTdWJzY3JpcHRpb25EYXRhJiYs
IFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmID0gbnVsbHB0cik7CiAKKyAgICBQ
dXNoU3Vic2NyaXB0aW9uRGF0YSBtX2RhdGE7CiAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24+IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjsKLSAgICBTdHJpbmcgbV9lbmRw
b2ludDsKLSAgICBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBtX2V4cGlyYXRpb25UaW1l
OwotICAgIFJlZjxQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucz4gbV9vcHRpb25zOwotICAgIFZlY3Rv
cjx1aW50OF90PiBtX2NsaWVudEVDREhQdWJsaWNLZXk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
c2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7CisgICAgbXV0YWJsZSBSZWZQdHI8UHVzaFN1YnNj
cmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlw
dGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2Ny
aXB0aW9uRGF0YS5jcHAKaW5kZXggNjFhM2ZlY2E1MzYyMTNiNGU1M2M0ZTBlZDJhYTdiYThjNjRl
YzE5MS4uM2QxNGNmOGJiNmI1NjVhYTNhNDA3YzIzZTM4MGIwZGE3YjM3MzI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9u
RGF0YS5jcHAKQEAgLTI2LDYgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKIAorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24u
aCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArNDIsNiBAQCBQdXNoU3Vic2NyaXB0aW9uRGF0
YSBQdXNoU3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXN1bHQu
c2VydmVyVkFQSURQdWJsaWNLZXkgPSBzZXJ2ZXJWQVBJRFB1YmxpY0tleTsKICAgICByZXN1bHQu
Y2xpZW50RUNESFB1YmxpY0tleSA9IGNsaWVudEVDREhQdWJsaWNLZXk7CiAgICAgcmVzdWx0LnNo
YXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0ID0gc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7Ci0K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKaW5kZXggZTIyN2Y2MDQ2MTBiNWM5
OTYwMmZmZTMxYzYzZTlhZWYwMDM1ODgxOS4uZDM3OTA2OGFmNWYwMmE1MmE0YmIyMThjODQwNWQ5
NWViYzNmNTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoU3Vic2NyaXB0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1h
cGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaApAQCAtMjksMTAgKzI5LDE0IEBACiAKICNpbmNsdWRl
ICJFcG9jaFRpbWVTdGFtcC5oIgogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQ
dXNoU3Vic2NyaXB0aW9uOworY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjsKKwogc3Ry
dWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKICAgICBTdHJpbmcgZW5kcG9pbnQ7CiAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZStQdXNoQVBJLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCmluZGV4IGVjYWI2NTAwOTI3ODFiNmQz
OTA0MGVhYzkzZDBhOTBiNjQ0ZTczZGEuLmFhMDUwMThiYzdjNmJmNzdkODFlZTUzNmM1OTM4YzM0
NjljOGExZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsCkBAIC0y
Nyw0ICsyNyw1IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyRW5hYmxlZAog
XSBwYXJ0aWFsIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgewogICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25wdXNoOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25w
dXNoc3Vic2NyaXB0aW9uY2hhbmdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAyNjFkODkzNDZmZmI0MzQ2NmZkYTNlMTU1
MWQyNjJlZjk2YTY5ZWI4Li5lYjQzNTQ1ZDliNTAxODEwY2IxZGIyYmRmZjA1ZjRjNmZjMTQzMmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC00NTMsNiArNDUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKG1h
dGNoaW5nRWxlbWVudEluRmxhdFRyZWUpIFwKICAgICBtYWNybyhtZWRpYVN0cmVhbVRyYWNrQ29u
c3RyYWludHMpIFwKICAgICBtYWNybyhvbnB1c2gpIFwKKyAgICBtYWNybyhvbnB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhvbnJ0Y3RyYW5zZm9ybSkgXAogICAgIG1hY3JvKG9u
dG91Y2hjYW5jZWwpIFwKICAgICBtYWNybyhvbnRvdWNoZW5kKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAppbmRleCBlMWZhNGQzOWMxYzdjNTliNTAwMzZmNjBlYTQ4ZmIxYTAxZTk5ZDc0Li5mZmY3
YjgzZmNlMzIyYjgyNWYzODZmODIyOTEwOTEzYzNiYmQzNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
cHJvY2Vzc29yZXJyb3IpIFwKICAgICBtYWNybyhwcm9ncmVzcykgXAogICAgIG1hY3JvKHB1c2gp
IFwKKyAgICBtYWNybyhwdXNoc3Vic2NyaXB0aW9uY2hhbmdlKSBcCiAgICAgbWFjcm8ocmF0ZWNo
YW5nZSkgXAogICAgIG1hY3JvKHJlYWR5c3RhdGVjaGFuZ2UpIFwKICAgICBtYWNybyhyZWplY3Rp
b25oYW5kbGVkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmNwcAppbmRleCA4YzY3NzU5OTUwNDhiYzJlYzczY2M1MmZjNzY3NjFjMzhiZjdi
NDQwLi5mYzI1ZWU2NDVlYmVjZjk1MzIyYzJiNmJjNmFiYzZjNGJiYTQxNjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hT
dWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KIApAQCAtODIsNiArODMsMjEgQEAgdm9pZCBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJl
ZlB0cjxEZWYKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzY2hl
ZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChQdXNoU3Vic2NyaXB0aW9uKiBuZXdTdWJz
Y3JpcHRpb24sIFB1c2hTdWJzY3JpcHRpb24qIG9sZFN1YnNjcmlwdGlvbikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiBuZXdTdWJzY3JpcHRpb25EYXRhOworICAg
IHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+IG9sZFN1YnNjcmlwdGlvbkRhdGE7
CisKKyAgICBpZiAobmV3U3Vic2NyaXB0aW9uKQorICAgICAgICBuZXdTdWJzY3JpcHRpb25EYXRh
ID0gbmV3U3Vic2NyaXB0aW9uLT5kYXRhKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWYgKG9sZFN1
YnNjcmlwdGlvbikKKyAgICAgICAgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IG9sZFN1YnNjcmlwdGlv
bi0+ZGF0YSgpLmlzb2xhdGVkQ29weSgpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRp
ZmllciA9IG1faWRlbnRpZmllciwgbmV3U3Vic2NyaXB0aW9uRGF0YSA9IFdURk1vdmUobmV3U3Vi
c2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG9sZFN1YnNjcmlw
dGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5maXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KGlkZW50aWZpZXIsIFdURk1vdmUo
bmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworICAg
IH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OndhaXRGb3JGZXRjaEV2ZW50
VG9GaW5pc2goRmV0Y2hFdmVudCYgZXZlbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZh
Y2U8RmV0Y2hSZXNwb25zZT4+JiYgcHJvbWlzZSkKIHsKICAgICBldmVudC5vblJlc3BvbnNlKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXZlbnQgPSBSZWYgeyBldmVudCB9XSAoYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5oCmluZGV4IDEzOGIyNzFkMzE4ZmJiMzBlNjcxMDQ1YjllOWE0MWM0NTRm
YjljNjAuLmEwYWUzYzQwY2M0ZGFmMjc3NTVjMTQ2Y2QxYTVlOWE2MDZmMDBjOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBAIC01Niw2
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlT3BhcXVlV2l0
aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgdm9pZCBz
Y2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYm
KTsKKyAgICB2b2lkIHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFB1c2hTdWJz
Y3JpcHRpb24qIG5ld1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlwdGlvbiogb2xkU3Vic2NyaXB0
aW9uKTsKICAgICBWZWN0b3I8U3RyaW5nPiBmZXRjaFJlc3BvbnNlSGVhZGVyTGlzdChGZXRjaFJl
c3BvbnNlJik7CiAKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDg0NjQ1
NWM2MjY4Zjg1YzlmYjE1OTg4ZjNhZWExM2VjOTFiZDc3MzIuLmVhYmM2NTM0ZDc1OTBjNjBiOGFk
NWFmZGRiZDlhODQ3MzMyM2U5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtMzksNiArMzksNyBAQAogICAgIHNlcXVlbmNl
PEJ5dGVTdHJpbmc+IGZldGNoUmVzcG9uc2VIZWFkZXJMaXN0KEZldGNoUmVzcG9uc2UgcmVzcG9u
c2UpOwogCiAgICAgUHJvbWlzZTxib29sZWFuPiBzY2hlZHVsZVB1c2hFdmVudChvcHRpb25hbCBE
T01TdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KFB1c2hTdWJzY3JpcHRpb24/IG5ld1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlw
dGlvbj8gb2xkU3Vic2NyaXB0aW9uKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgcHJvY2Vzc05hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUaHJvdHRs
ZWFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggZGM3OTIyMjczODBjOWMwMzQyZGNkODlmMWRk
NzA4MWU3OTUxN2JmOS4uNDk1ZmRjYmRhOTVjODVkZDcxZjEyMjM2ZmVmZjI3YzZlMmYyNWQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtNTUyLDExICs1NTIsNiBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
JiByZWdpcwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9uLmlkZW50aWZp
ZXIoKSk7CiB9CiAKLXN0YXRpYyBSZWY8UHVzaFN1YnNjcmlwdGlvbj4gY3JlYXRlUHVzaFN1YnNj
cmlwdGlvbkZyb21EYXRhKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiByZWdpc3RyYXRp
b24sIFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSkKLXsKLSAgICByZXR1cm4gUHVzaFN1YnNj
cmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUocmVnaXN0cmF0aW9uKSwgV1RGTW92ZShkYXRhLmVuZHBv
aW50KSwgZGF0YS5leHBpcmF0aW9uVGltZSwgV1RGTW92ZShkYXRhLnNlcnZlclZBUElEUHVibGlj
S2V5KSwgV1RGTW92ZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3ZlKGRhdGEuc2hh
cmVkQXV0aGVudGljYXRpb25TZWNyZXQpKTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwg
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4mJiBwcm9t
aXNlKQogewogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLnN1YnNjcmliZVRvUHVzaFNl
cnZpY2UocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFtw
cm90ZWN0ZWRSZWdpc3RyYXRpb24gPSBSZWYgeyByZWdpc3RyYXRpb24gfSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewpAQCAtNTY1LDcgKzU2MCw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0
aW9uRnJvbURhdGEoV1RGTW92ZShwcm90ZWN0ZWRSZWdpc3RyYXRpb24pLCByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCkpKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1c2hTdWJzY3JpcHRp
b246OmNyZWF0ZShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUocHJvdGVjdGVk
UmVnaXN0cmF0aW9uKSkpOwogICAgIH0pOwogfQogCkBAIC01OTAsNyArNTg1LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24mIHJlZ2kKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEoV1RGTW92
ZShwcm90ZWN0ZWRSZWdpc3RyYXRpb24pLCBXVEZNb3ZlKCpvcHRpb25hbFB1c2hTdWJzY3JpcHRp
b25EYXRhKSkucHRyKCkpOworICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVzaFN1YnNjcmlwdGlv
bjo6Y3JlYXRlKFdURk1vdmUoKm9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEpLCBXVEZNb3Zl
KHByb3RlY3RlZFJlZ2lzdHJhdGlvbikpLnB0cigpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAppbmRleCA1MTA0NTM0ZTU1ZjkxZWFhYzYyNDExNzJjOGE4MjExOGIzZjhhNGRj
Li40Y2VlOGRmZDRkMjNkMmJjZjNlOWUzZjFlYjY3MzQ2MjljMzI1MmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcApAQCAtMTIwLDYgKzEyMCwxNSBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZp
cmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcAog
ICAgIHNlcnZpY2VXb3JrZXItPmZpcmVQdXNoRXZlbnQoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVQdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpCit7
CisgICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsK
KyAgICBpZiAoIXNlcnZpY2VXb3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHNlcnZpY2VX
b3JrZXItPmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoV1RGTW92ZShuZXdTdWJzY3Jp
cHRpb25EYXRhKSwgV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKSk7Cit9CisKIAogdm9pZCBT
V0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggYzc2NWM1N2QyMDIzZjE0Y2FiYmJk
YmI5MGI2ODNlYTY1NDU3MDdjYi4uMjk1ZGRmMGQ0ZjYwNjVlYWEyMTAxN2M4YzE1NGNlZjBiZGUz
ZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUHVz
aFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVQdXNoRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0
aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3Jp
cHRpb25EYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZm
ZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXgg
ZjZkZGY4OGJjMzIzNGM0NTg5ZTM0MmFlZjcyMTUyNzJhODg4ZjUwMi4uMWE3MTcyZTc1OTRjYjIy
ODJmYmVkOTA3MzQzYWNhODAyMDc5MGZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
QEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUHVzaEV2ZW50LmgiCisjaW5jbHVkZSAiUHVzaFN1
YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oIgog
I2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgpAQCAtMjM1LDYgKzIzNywzMyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90PgogICAgIH0pOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9w
dGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6
b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSkKK3sK
KyAgICBSZWYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBu
ZXdTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgb2xkU3Vi
c2NyaXB0aW9uRGF0YSA9IFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSldKCkgbXV0YWJsZSB7
CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFk
OjpxdWV1ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgZmlyaW5nIGV2ZW50
IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgp
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgICAgICBSZWZQdHI8UHVzaFN1YnNjcmlw
dGlvbj4gbmV3U3Vic2NyaXB0aW9uOworICAgICAgICBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4g
b2xkU3Vic2NyaXB0aW9uOworCisgICAgICAgIGlmIChuZXdTdWJzY3JpcHRpb25EYXRhKQorICAg
ICAgICAgICAgbmV3U3Vic2NyaXB0aW9uID0gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1v
dmUoKm5ld1N1YnNjcmlwdGlvbkRhdGEpLCAmc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5yZWdp
c3RyYXRpb24oKSk7CisgICAgICAgIGlmIChvbGRTdWJzY3JpcHRpb25EYXRhKQorICAgICAgICAg
ICAgb2xkU3Vic2NyaXB0aW9uID0gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUoKm9s
ZFN1YnNjcmlwdGlvbkRhdGEpKTsKKworICAgICAgICBhdXRvIHB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5wdXNoc3Vic2NyaXB0aW9uY2hhbmdlRXZlbnQsIHsgfSwgV1RGTW92ZShuZXdTdWJzY3JpcHRp
b24pLCBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbiksIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOworICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQo
cHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KTsKKworICAgICAgICBwdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oYXV0byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVh
ZDo6cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGZpbmlzaGluZyBm
b3Igd29ya2VyICVsbHUiLCB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSA6IDApOworICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkKIHsKICAgICBBU1NF
UlQoZ2xvYmFsU2NvcGUoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwpAQCAtMjk1LDcgKzMyNCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRIZWFydEJlYXRUaW1lcigpCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQoKQogewogICAgIGlmICghbV9v
bmdvaW5nSGVhcnRCZWF0Q2hlY2spIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Oklu
c3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdG
ZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ1B1c2hFdmVudCB8fCBtX21lc3NhZ2VFdmVudENvdW50
KQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09
IFN0YXRlOjpBY3RpdmF0aW5nIHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9pc0hhbmRs
aW5nUHVzaEV2ZW50IHx8IG1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQgfHwgbV9t
ZXNzYWdlRXZlbnRDb3VudCkKICAgICAgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM2Miw2ICszOTEsMTggQEAgdm9pZCBTZXJ2aWNlV29y
a2VyVGhyZWFkOjpmaW5pc2hlZEZpcmluZ01lc3NhZ2VFdmVudCgpCiAgICAgLS1tX21lc3NhZ2VF
dmVudENvdW50OwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OndpbGxQb3N0VGFza1Rv
RmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpCit7CisgICAgaWYgKCFtX3B1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudENvdW50KyspCisgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIo
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEZpcmluZ1B1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCgpCit7CisgICAgQVNTRVJUKG1fcHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50Q291bnQpOworICAgIC0tbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3Vu
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDA2ODFiMzNjZmNjYWJmMzkw
MGE3NDdmNzBlMTE1ODcyMTA4YzAwYmMuLjc2MzE0ZjJkMjZkNzIzNDVjZWEyZTE1ZWI4MmJkZTAw
MTIzZTU1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25E
YXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKQEAgLTYxLDEyICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0Zp
cmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZUFjdGl2YXRlRXZl
bnQoKTsKICAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpOworICAgIHZv
aWQgd2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7CiAKICAg
ICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6
Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYm
LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsK
ICAgICB2b2lkIHF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVl
dWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3Rp
dmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+JiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgcXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KHN0ZDo6b3B0aW9u
YWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRp
b25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKTsKIAogICAg
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9q
b2JEYXRhSWRlbnRpZmllcjsgfQpAQCAtOTAsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpOwog
ICAgIHZvaWQgZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBmaW5pc2hl
ZEZpcmluZ01lc3NhZ2VFdmVudCgpOworICAgIHZvaWQgZmluaXNoZWRGaXJpbmdQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQoKTsKICAgICB2b2lkIGZpbmlzaGVkU3RhcnRpbmcoKTsKIAogICAg
IHZvaWQgc3RhcnRIZWFydEJlYXRUaW1lcigpOwpAQCAtMTA1LDYgKzEwOSw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc0hhbmRsaW5nUHVzaEV2ZW50IHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3B1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHsgMCB9OwogICAgIHVpbnQ2NF90IG1fbWVzc2FnZUV2
ZW50Q291bnQgeyAwIH07CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7IElkbGUsIFN0YXJ0aW5nLCBJ
bnN0YWxsaW5nLCBBY3RpdmF0aW5nIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCAwNzNiNDJlOTM2
ZWJmZGUxOWI5NWVhZjUxMDU4NTBlMjRhOWI5NGNkLi4wNzUyZjQ5YmFkZGQyN2YwMDNhNDE4ZmYw
NzExOTg2ZGYyNjkyMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAK
QEAgLTMyMCw2ICszMjAsMTkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVQ
dXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGEKICAgICAgICAgbV9v
bmdvaW5nUHVzaFRhc2tzLnRha2UoaWRlbnRpZmllcikoZmFsc2UpOwogfQogCit2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0
ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSkK
K3sKKyAgICBpZiAobmV3U3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgbmV3U3Vic2NyaXB0aW9u
RGF0YSA9IG5ld1N1YnNjcmlwdGlvbkRhdGEtPmlzb2xhdGVkQ29weSgpOworICAgIGlmIChvbGRT
dWJzY3JpcHRpb25EYXRhKQorICAgICAgICBvbGRTdWJzY3JpcHRpb25EYXRhID0gb2xkU3Vic2Ny
aXB0aW9uRGF0YS0+aXNvbGF0ZWRDb3B5KCk7CisKKyAgICB0aHJlYWQoKS53aWxsUG9zdFRhc2tU
b0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKKyAgICB0aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuZXdTdWJz
Y3JpcHRpb25EYXRhID0gV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgb2xkU3Vic2NyaXB0
aW9uRGF0YSA9IFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSldKGF1dG8mKSBtdXRhYmxlIHsK
KyAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9u
RGF0YSkpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
CmluZGV4IGNlZmJjNWUxNjM2OGMzOGE4M2E3ZTExNWZkNTc0NzJjYWY1YzViOTguLmU1YjJiNmUy
MzU5YmQyNmU5N2I5OTZkNTM4YzljZGUyN2M5OGJkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGZXRjaElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRGVidWdnYWJs
ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7
CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4m
JiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRh
PiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpOwogCiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlz
ayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNj
cmlwdHMpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYjUxZmZkNGEzZWZiMjU5Y2E3Y2I4OTQxNDRmZGFkNWU0Zjg2NTA5
My4uMTJmZDI4NGJjMWU1ZTg0ZjU4MmZiNGEwZjQwNTQyYzE1N2Q3NDc4ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTExLTEzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIC0gTW9k
aWZpZWQgdGhlIHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgdGVzdCB0byBzZW5kIGEgcmVhbCBldmVu
dCB0byB0aGUgc2VydmljZSB3b3JrZXIuCisgICAgICAgICAtIE1vZGlmaWVkIHRoZSBzZXJ2aWNl
IHdvcmtlciBzcGlubmluZyB0ZXN0cyB0byB0ZXN0IGZvciBndWFyZGluZyBhZ2FpbnN0IGluZmlu
aXRlIGxvb3BzIGluCisgICAgICAgICAgIHRoZSBwdXNoIGFuZCBwdXNoc3Vic2NyaXB0aW9uY2hh
bmdlIGV2ZW50IGhhbmRsZXJzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgZXhpc3Rpbmcgc3Bp
bm5pbmcgdGVzdHMgYXJlIG1hcmtlZCBhcyBmbGFreSBvbiBpb3Mtd2syLiBXZSBkbyB0aGUgc2Ft
ZSBoZXJlCisgICAgICAgIHNpbmNlIHRoZSB0ZXN0IHBhc3NlcyBsb2NhbGx5IGJ1dCBpcyBmbGFr
eSBpbiBFV1MuCisKKyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQuYW55LmpzOgorICAgICAgICAocHJvbWlzZV90ZXN0KToKKyAgICAgICAgKGFz
c2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbCk6CisgICAgICAgICh0ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKHByb21pc2VfdGVzdC5hc3luYyBuZXdTdWJzY3JpcHRpb24pOiBEZWxldGVkLgorICAg
ICAgICAocHJvbWlzZV90ZXN0LmFzeW5jIHJldHVybik6IERlbGV0ZWQuCisgICAgICAgICogaHR0
cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29y
a2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3JvdXRpbmVzLmpzOgorICAgICAgICAoYXN5bmMgc2VuZFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
cHVzaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5n
LXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qczoK
KyAgICAgICAgKHJlc3BvbmRUb1BlbmRpbmdFdmVudCk6CisgICAgICAgIChwdXNoVGVzdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMS0xMS0xNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvdGhlLWlmcmFtZS1lbGVtZW50L2lmcmFtZV9zYW5kYm94X3dpbmRvd19v
cGVuX2Rvd25sb2FkX2Jsb2NrX2Rvd25sb2Fkcy50ZW50YXRpdmUuaHRtbCBpcyBmcmVxdWVudGx5
IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGFmODBjMzdkOWJlY2Iw
OWE1MDk3ZDI1NjNiNTE4OWZhZTY1MjI4NmIuLmI0ZTM5MDkzODZiZDZmMWIyODk0OTNlNWViMzQx
Y2I2NTM1YzI5NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIxLTExLTE3ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIG1v
ZGlmeSBTZXJ2aWNlV29ya2VyVGhyZWFkCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMh
KS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29y
a2VyLWV4cGVjdGVkLnR4dDoKKworMjAyMS0xMS0xMyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2
ZW50IGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlYmFzZWxpbmUgdGVzdCByZXN1bHRzIHNpbmNlIHdlIG5vdyBzdXBwb3J0IG9ucHVzaHN1
YnNjcmlwdGlvbmNoYW5nZS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFw
aS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dDoKKwogMjAy
MS0xMS0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBM
b2NrcyBBUEkgZG9lcyBnZXQgZW5hYmxlZCBpbiBTZXJ2aWNlIFdvcmtlcnMgd2hlbiBydW5uaW5n
IGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkv
cHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanMKaW5kZXggODJjNDIx
ZjVhZjIxMDBlYjk5MjRkNTU1NGRmODcwNTEwYjA0Nzc1NS4uOGMzNGQzNDQ3NDU5NWJjYWNkNDE4
OTQ4N2FjNmM1YjY4OWJjMjIyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVz
aC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzCkBA
IC0yLDI3ICsyLDIzIEBACiAvLyBNRVRBOiBnbG9iYWw9c2VydmljZXdvcmtlcgogLy8gTUVUQTog
c2NyaXB0PWNvbnN0YW50cy5qcwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcg
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIik7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOwotfSwg
IlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IGRhdGEiKTsKLQotdGVzdCgoKSA9
PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVz
aHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9uOiBudWxsLCBvbGRTdWJzY3Jp
cHRpb246IG51bGwgfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24s
IG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwg
bnVsbCwgIm9sZCIpOwotfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1
YnNjcmlwdGlvbnMiKTsKK2xldCBhY3RpdmF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHNlbGYub25hY3RpdmF0ZSA9IHJlc29sdmUpOworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
IHJldHVybiBhY3RpdmF0ZVByb21pc2U7Cit9LCAid2FpdCBmb3IgYWN0aXZlIHNlcnZpY2Ugd29y
a2VyIik7CiAKIGxldCBuZXdTdWJzY3JpcHRpb24gPSBudWxsOwogbGV0IG9sZFN1YnNjcmlwdGlv
biA9IG51bGw7CiAKLWxldCBhY3RpdmF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHNlbGYub25hY3RpdmF0ZSA9IHJlc29sdmUpOwotcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsK
LSAgIHJldHVybiBhY3RpdmF0ZVByb21pc2U7Ci19LCAid2FpdCBmb3IgYWN0aXZlIHNlcnZpY2Ug
d29ya2VyIik7CitmdW5jdGlvbiBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoYSwgYiwgcmVh
c29uKQoreworICAgIGlmICghYSB8fCAhYikKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhLCBiLCBy
ZWFzb24pOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhKU09OLnN0cmluZ2lmeShh
LnRvSlNPTigpKSwgSlNPTi5zdHJpbmdpZnkoYi50b0pTT04oKSksIHJlYXNvbik7Cit9CiAKLXBy
b21pc2VfdGVzdChhc3luYygpID0+IHsKK3Byb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgbmV3U3Vi
c2NyaXB0aW9uID0gc2VsZi5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNjcmlwdGlvbihFTkRQT0lO
VCwgRVhQSVJBVElPTl9USU1FLCBWQUxJRF9TRVJWRVJfS0VZLCBDTElFTlRfS0VZXzEsIEFVVEgp
OwogICAgIG9sZFN1YnNjcmlwdGlvbiA9IHNlbGYuaW50ZXJuYWxzLmNyZWF0ZVB1c2hTdWJzY3Jp
cHRpb24oRU5EUE9JTlQsIEVYUElSQVRJT05fVElNRSwgVkFMSURfU0VSVkVSX0tFWSwgQ0xJRU5U
X0tFWV8yLCBBVVRIKTsKIApAQCAtMzIsMjAgKzI4LDMwIEBAIHByb21pc2VfdGVzdChhc3luYygp
ID0+IHsKICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKCkpOwogfSwg
ImNyZWF0ZSBzdWJzY3JpcHRpb25zIik7CiAKLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVudCA9
IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2Ui
LCB7IG5ld1N1YnNjcmlwdGlvbiB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1YnNj
cmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVu
dC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKK3Byb21pc2VfdGVzdChhc3luYygpID0+
IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dChudWxsLCBudWxsKTsKKyAgICBsZXQgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0
U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbnVsbCwgIm5ldyIp
OworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5vbGRTdWJzY3JpcHRpb24s
IG51bGwsICJvbGQiKTsKK30sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBz
dWJzY3JpcHRpb25zIik7CisKK3Byb21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmlu
dGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChuZXdTdWJzY3JpcHRp
b24sIG51bGwpOworICAgIGxldCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
c2VsZi5vbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRTdWJz
Y3JpcHRpb25zQXJlRXF1YWwoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24s
ICJuZXciKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2Ny
aXB0aW9uLCBudWxsLCAib2xkIik7CiB9LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdp
dGggbmV3IHN1YnNjcmlwdGlvbiIpOwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBu
ZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiwg
eyBvbGRTdWJzY3JpcHRpb24gfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3Jp
cHRpb24sIG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlw
dGlvbiwgb2xkU3Vic2NyaXB0aW9uLCAib2xkIik7Citwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7
CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQo
bnVsbCwgb2xkU3Vic2NyaXB0aW9uKTsKKyAgICBsZXQgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0gcmVzb2x2ZSk7Cisg
ICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbnVs
bCwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5vbGRTdWJz
Y3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwgIlB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCB3aXRoIG9sZCBzdWJzY3JpcHRpb24iKTsKIAotdGVzdCgoKSA9PiB7Ci0gICAg
bGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlw
dGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJzY3JpcHRpb24gfSk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG5ld1N1YnNjcmlwdGlvbiwgIm5l
dyIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBvbGRTdWJzY3Jp
cHRpb24sICJvbGQiKTsKK3Byb21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmludGVy
bmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChuZXdTdWJzY3JpcHRpb24s
IG9sZFN1YnNjcmlwdGlvbik7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVz
b2x2ZSA9PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOworICAgIGFz
c2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5uZXdTdWJzY3JpcHRpb24sIG5ld1N1YnNj
cmlwdGlvbiwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5v
bGRTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwgIlB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBhbmQgb2xkIHN1YnNjcmlwdGlvbiIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2VydmljZXdvcmtl
ci1leHBlY3RlZC50eHQKaW5kZXggOTVmYTJiMTc0NzJlMjdmNDYzZWMxY2FiMTYyMDI2MzlhYTZi
ZTBhYi4uMjkxNmIyNmUwNTgyYjU3NmE1NDZkYTg4MjdkZjU3NDg4MDZkMWRjNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsNyBAQAogCi1QQVNTIFB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCB3aXRob3V0IGRhdGEKLVBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyB3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3b3Jr
ZXIKIFBBU1MgY3JlYXRlIHN1YnNjcmlwdGlvbnMKK1BBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQgd2l0aCBuZXcgc3Vic2NyaXB0aW9uCiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCB3aXRoIG9sZCBzdWJzY3JpcHRpb24KIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50IHdpdGggbmV3IGFuZCBvbGQgc3Vic2NyaXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcwppbmRl
eCA3NjQ5NzA5MGU2MDhjNGYxNWRjZjRkZjcyYmFmMGM3YzlhYTllMWU0Li5lMzYzMzBjM2Q0Yjk1
NTVlNzIzZGMxOWVhNTk0MzAyZDg2MjdmZjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKQEAgLTI4
LDYgKzI4LDE4IEBAIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZSh3b3JrZXIsIHN0YXRlKQogICAgIH0p
OwogfQogCithc3luYyBmdW5jdGlvbiBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCBtZXNzYWdlTmFt
ZSwgdGltZW91dCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdCgicmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICBjb25zdCBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgY29uc3QgcmVjZWl2ZWRNZXNzYWdlID0g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IHJlc29sdmUp
OworICAgIGNvbnN0IHRpbWVkT3V0ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
c2V0VGltZW91dChyZWplY3QsIHRpbWVvdXQgfHwgNTAwMCkpOworICAgIHdvcmtlci5wb3N0TWVz
c2FnZShtZXNzYWdlTmFtZSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICByZXR1cm4gUHJvbWlzZS5y
YWNlKFtyZWNlaXZlZE1lc3NhZ2UsIHRpbWVkT3V0XSk7Cit9CisKIGFzeW5jIGZ1bmN0aW9uIHdh
aXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcikKIHsKICAgICBpZiAoIXdp
bmRvdy5pbnRlcm5hbHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmYjljZTViZjcyOTUw
ODgxMjFkY2VhMDU1OWVlNTQ2ZTI5Y2QzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTcGluIGluIHB1c2gKK1BB
U1MgU3BpbiBhZnRlciBwdXNoCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctcHVzaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzQ1N2M3ODRmZmU0ZWJjYTI5MDc5M2Zh
ZTk0NmEyZDUwZjRkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCkBA
IC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
U2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25z
dCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigi
c2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXB1c2gi
IH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAg
YXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7
CisKKyAgICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaCIpOworCisgICAgcmV0
dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3Bp
biBpbiBwdXNoIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0
IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJz
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXIt
cHVzaCIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisK
KyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0
ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNoIik7CisKKyAg
ICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30s
ICJTcGluIGFmdGVyIHB1c2giKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5n
LXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
M2ZiMGNmZjA0NTU0MWU3Y2JkZDFhYWRmY2E1ZWYyZjFiMGYyZDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACisKK1BBU1MgU3BpbiBpbiBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlCitQQVNTIFNwaW4g
YWZ0ZXIgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNj
cmlwdGlvbmNoYW5nZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0
cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NzA4MjljYzczMzE3NTI0NjI1YTAzY2Y3OTc3YTE1ODQ1NGMy
YTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMu
aHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIFNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQ9dHJ1ZSBdIC0tPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bp
bi1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24u
aW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNNZXNzYWdlKHdv
cmtlciwgInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2Vy
dmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gcHVzaHN1YnNj
cmlwdGlvbmNoYW5nZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBj
b25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFm
dGVyLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lz
dHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uo
d29ya2VyLCAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOworCisgICAgcmV0dXJuIHdhaXRGb3JT
ZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBwdXNo
c3Vic2NyaXB0aW9uY2hhbmdlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCmluZGV4IDVlZjgzNzkxYjc5N2Vi
ODFlYzAyNDNhODE3MzE3ODM4YjI0MmViZjQuLmZiZGZmZDIxOTk0MjI3YjBkMTg5OTUwMjBhMGFi
ZjFiNGE2M2MxYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5q
cwpAQCAtMSwzICsxLDE0IEBACitsZXQgcGVuZGluZ0V2ZW50ID0gbnVsbDsKKworZnVuY3Rpb24g
cmVzcG9uZFRvUGVuZGluZ0V2ZW50KCkKK3sKKyAgICBpZiAoIXBlbmRpbmdFdmVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcGVuZGluZ0V2ZW50LnBvcnRzWzBdLnBvc3RNZXNzYWdlKCdyZWNl
aXZlZCcpOworICAgIHBlbmRpbmdFdmVudCA9IG51bGw7Cit9CisKIGlmIChzZWxmLnJlZ2lzdHJh
dGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1ydW4iKSkKICAgICB3aGlsZSh0cnVlKSB7IH07CiAK
QEAgLTE5LDYgKzMwLDE3IEBAIGZ1bmN0aW9uIGFjdGl2YXRlVGVzdChldmVudCkKIAogZnVuY3Rp
b24gbWVzc2FnZVRlc3QoZXZlbnQpCiB7CisgICAgc3dpdGNoIChldmVudC5kYXRhKSB7CisgICAg
Y2FzZSAicHVzaCI6CisgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaEV2ZW50KCJ0
ZXN0Iik7CisgICAgICAgIHBlbmRpbmdFdmVudCA9IGV2ZW50OworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSI6CisgICAgICAgIHNlbGYuaW50ZXJuYWxz
LnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51bGwsIG51bGwpOworICAgICAg
ICBwZW5kaW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlm
IChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1tZXNzYWdlIikpCiAgICAg
ICAgIHdoaWxlKHRydWUpIHsgfTsKICAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5j
bHVkZXMoInNwaW4tYWZ0ZXItbWVzc2FnZSIpKQpAQCAtMzQsOCArNTYsMjkgQEAgZnVuY3Rpb24g
ZmV0Y2hUZXN0KGV2ZW50KQogICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZSgib2si
KSk7CiB9CiAKK2Z1bmN0aW9uIHB1c2hUZXN0KGV2ZW50KQoreworICAgIHJlc3BvbmRUb1BlbmRp
bmdFdmVudCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJz
cGluLXB1c2giKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OworICAgIGlmIChzZWxmLnJlZ2lz
dHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1wdXNoIikpCisgICAgICAgIHNlbGYu
c2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CisKK2Z1bmN0aW9u
IHB1c2hTdWJzY3JpcHRpb25DaGFuZ2VUZXN0KGV2ZW50KQoreworICAgIHJlc3BvbmRUb1BlbmRp
bmdFdmVudCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJz
cGluLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9Owor
ICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1wdXNo
c3Vic2NyaXB0aW9uY2hhbmdlIikpCisgICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdo
aWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiaW5zdGFs
bCIsIGluc3RhbGxUZXN0KTsKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiYWN0aXZhdGUiLCBhY3Rp
dmF0ZVRlc3QpOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbWVzc2FnZVRlc3Qp
Owogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNoVGVzdCk7CitzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoInB1c2giLCBwdXNoVGVzdCk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlVGVzdCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gt
YXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJu
ZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA2MzNhZDc3ODMy
Zjk0NTNlOThlZThjMmFjNjU5ZDRhMTNkMDlmYTVmLi5lMGI1ZTU0YTg2M2ZkZWU3OGVkMTIyMTFl
NjljNDY5ZmRlMWNmNjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTgwLDcgKzgwLDcgQEAgUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQgaW50ZXJmYWNlOiBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXMKIFBBU1Mg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBwdXNoTWFuYWdl
cgogUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogcmVnaXN0cmF0aW9u
IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAicHVzaE1hbmFnZXIiIHdpdGggdGhlIHByb3BlciB0eXBl
CiBQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1
c2gKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogYXR0cmlidXRlIG9u
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9i
amVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBleHBl
Y3RlZCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBtaXNzaW5nCitQQVNTIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UKIFBBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2Vs
ZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaCIgd2l0aCB0aGUgcHJvcGVyIHR5cGUKLUZB
SUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0IGluaGVyaXQg
cHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUg
YXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNl
OiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiB3
aXRoIHRoZSBwcm9wZXIgdHlwZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0MTI2NTdjYmYwZGE5OTAw
OWQwYjJhOTdjNzllNTcwYjU0ZmQxMjczLi4yZDg2YzIzYTllMmNkNzZlMzY1ZjY3MGYwNmI2ODli
OGU0MzE1NTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9y
LXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11
bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNiw2ICsxMzYsOCBAQCB3ZWJraXQub3Jn
L2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy1hY3RpdmF0ZS5odAogd2Via2l0Lm9yZy9iLzIxNzY2OSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbCBbIFBhc3MgVGltZW91
dCBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbCBbIFBhc3MgVGltZW91
dCBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbCBbIFBhc3MgVGltZW91
dCBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbCBbIFBhc3MgVGltZW91dCBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbCBb
IFBhc3MgVGltZW91dCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIxNzY4NyBhY2Nlc3NpYmls
aXR5L2FyaWEtY3VycmVudC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMTc2
ODcgYWNjZXNzaWJpbGl0eS9pbnNlcnQtbmV3bGluZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444615</attachid>
            <date>2021-11-17 17:27:44 -0800</date>
            <delta_ts>2021-11-18 10:00:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233088-20211117172743.patch</filename>
            <type>text/plain</type>
            <size>49787</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc2ZjU4MDkzMjEzMDZh
OGVmYTkzMjBmOGY1Y2FkNWUzMDFhZmNiZS4uMTFiMGQxZTM0YjFjOGJkMGEwNjBjODJjNjQ3ODM0
ZTI0OWNmYzZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBhYmlsaXR5IHRvIHNlbmQgYSBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIG9u
CisgICAgICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4gSSBkaWRuJ3QgaW1wbGVtZW50IGEg
Y29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgZXZlbnQgKGFzIHdlIGRvCisgICAgICAgIGZvciB0
aGUgcHVzaCBldmVudCkgc2luY2UgaXQncyBub3QgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkIGFu
ZCBJIGRvbid0IHRoaW5rIHdlJ2QgdXNlIGl0LgorICAgICAgICBXZSBvbmx5IHBsYW4gb24gZmly
aW5nIHRoaXMgZXZlbnQgdGhlIGZpcnN0IHRpbWUgeW91IHZpc2l0IGFuIG9yaWdpbiBhZnRlciB3
ZSBkZXJlZ2lzdGVyIGEKKyAgICAgICAgUHVzaFN1YnNjcmlwdGlvbiBmb3IgcmVjZWl2aW5nIHRv
byBtYW55IHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1w
dXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2Ny
aXB0aW9uOjpQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6
ZW5kcG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6ZXhw
aXJhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpjbGll
bnRFQ0RIUHVibGljS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b246OnNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hTdWJzY3JpcHRpb246OmdldEtleSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
U3Vic2NyaXB0aW9uOjp0b0pTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkv
UHVzaFN1YnNjcmlwdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNj
cmlwdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vi
c2NyaXB0aW9uRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y3JlYXRl
UHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNjaGVk
dWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAqIHRl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVB1c2hTdWJzY3JpcHRpb25Gcm9tRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRG
aXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaDoKKwogMjAyMS0xMS0xNyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbnRyb2R1Y2UgZW51bSBjbGFzcyBJbnRyaW5zaWNX
aWR0aE1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb24uY3BwCmluZGV4IGUxY2U4MzgxNGMzY2FkNTBjNGJkNTlmYmIyOGUzN2JmZjI0
NjY0MmYuLjkwOGVlYzI3N2E0ZjdjMWQyNWNhYTNjOTg5ODA0Mjg3NzU2NzM5N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNw
cApAQCAtNDAsNTIgKzQwLDY0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCi1QdXNoU3Vic2NyaXB0aW9uOjpQ
dXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGlt
ZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2VydmVyVkFQSURQdWJs
aWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50
OF90PiYmIHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9lbmRwb2ludChXVEZN
b3ZlKGVuZHBvaW50KSkKLSAgICAsIG1fZXhwaXJhdGlvblRpbWUoZXhwaXJhdGlvblRpbWUpCi0g
ICAgLCBtX29wdGlvbnMoUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZShXVEZNb3ZlKHNl
cnZlclZBUElEUHVibGljS2V5KSkpCi0gICAgLCBtX2NsaWVudEVDREhQdWJsaWNLZXkoV1RGTW92
ZShjbGllbnRFQ0RIUHVibGljS2V5KSkKLSAgICAsIG1fc2hhcmVkQXV0aGVudGljYXRpb25TZWNy
ZXQoV1RGTW92ZShzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkpCitQdXNoU3Vic2NyaXB0aW9u
OjpQdXNoU3Vic2NyaXB0aW9uKFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSkKKyAgICA6IG1f
ZGF0YShXVEZNb3ZlKGRhdGEpKQogewogfQogCi1QdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2Ny
aXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbiwgU3Ry
aW5nJiYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25U
aW1lLCBWZWN0b3I8dWludDhfdD4mJiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgY2xpZW50RUNESFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2hhcmVkQXV0aGVu
dGljYXRpb25TZWNyZXQpCi0gICAgOiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oV1RGTW92
ZShyZWdpc3RyYXRpb24pKQotICAgICwgbV9lbmRwb2ludChXVEZNb3ZlKGVuZHBvaW50KSkKLSAg
ICAsIG1fZXhwaXJhdGlvblRpbWUoZXhwaXJhdGlvblRpbWUpCi0gICAgLCBtX29wdGlvbnMoUHVz
aFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZShXVEZNb3ZlKHNlcnZlclZBUElEUHVibGljS2V5
KSkpCi0gICAgLCBtX2NsaWVudEVDREhQdWJsaWNLZXkoV1RGTW92ZShjbGllbnRFQ0RIUHVibGlj
S2V5KSkKLSAgICAsIG1fc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQoV1RGTW92ZShzaGFyZWRB
dXRoZW50aWNhdGlvblNlY3JldCkpCitQdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0aW9u
KFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSwgUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24+JiYgcmVnaXN0cmF0aW9uKQorICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAgLCBt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKQogewogfQog
CiBQdXNoU3Vic2NyaXB0aW9uOjp+UHVzaFN1YnNjcmlwdGlvbigpID0gZGVmYXVsdDsKIAorY29u
c3QgUHVzaFN1YnNjcmlwdGlvbkRhdGEmIFB1c2hTdWJzY3JpcHRpb246OmRhdGEoKSBjb25zdAor
eworICAgIHJldHVybiBtX2RhdGE7Cit9CisKIGNvbnN0IFN0cmluZyYgUHVzaFN1YnNjcmlwdGlv
bjo6ZW5kcG9pbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2VuZHBvaW50OworICAgIHJldHVy
biBtX2RhdGEuZW5kcG9pbnQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IFB1
c2hTdWJzY3JpcHRpb246OmV4cGlyYXRpb25UaW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9l
eHBpcmF0aW9uVGltZTsKKyAgICByZXR1cm4gbV9kYXRhLmV4cGlyYXRpb25UaW1lOwogfQogCiBQ
dXNoU3Vic2NyaXB0aW9uT3B0aW9ucyYgUHVzaFN1YnNjcmlwdGlvbjo6b3B0aW9ucygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fb3B0aW9uczsKKyAgICBpZiAoIW1fb3B0aW9ucykgeworICAgICAg
ICBhdXRvIGtleSA9IG1fZGF0YS5zZXJ2ZXJWQVBJRFB1YmxpY0tleTsKKyAgICAgICAgbV9vcHRp
b25zID0gUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZShXVEZNb3ZlKGtleSkpOworICAg
IH0KKworICAgIHJldHVybiAqbV9vcHRpb25zOworfQorCitjb25zdCBWZWN0b3I8dWludDhfdD4m
IFB1c2hTdWJzY3JpcHRpb246OmNsaWVudEVDREhQdWJsaWNLZXkoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGEuY2xpZW50RUNESFB1YmxpY0tleTsKK30KKworY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBQdXNoU3Vic2NyaXB0aW9uOjpzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGF0YS5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldDsKIH0KIAog
RXhjZXB0aW9uT3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBQdXNoU3Vic2NyaXB0aW9uOjpn
ZXRLZXkoUHVzaEVuY3J5cHRpb25LZXlOYW1lIG5hbWUpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+ICpzb3VyY2UgPSBudWxscHRyOworICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90
Piogc291cmNlID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAobmFtZSkgewogICAgIGNhc2UgUHVz
aEVuY3J5cHRpb25LZXlOYW1lOjpQMjU2ZGg6Ci0gICAgICAgIHNvdXJjZSA9ICZtX2NsaWVudEVD
REhQdWJsaWNLZXk7CisgICAgICAgIHNvdXJjZSA9ICZjbGllbnRFQ0RIUHVibGljS2V5KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHVzaEVuY3J5cHRpb25LZXlOYW1lOjpBdXRoOgotICAg
ICAgICBzb3VyY2UgPSAmbV9zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldDsKKyAgICAgICAgc291
cmNlID0gJnNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyLDExICsxMjQsMTEgQEAg
dm9pZCBQdXNoU3Vic2NyaXB0aW9uOjp1bnN1YnNjcmliZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXgKIFB1c2hTdWJzY3JpcHRpb25KU09OIFB1c2hTdWJzY3Jp
cHRpb246OnRvSlNPTigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFB1c2hTdWJzY3JpcHRpb25KU09O
IHsKLSAgICAgICAgbV9lbmRwb2ludCwKLSAgICAgICAgbV9leHBpcmF0aW9uVGltZSwKKyAgICAg
ICAgZW5kcG9pbnQoKSwKKyAgICAgICAgZXhwaXJhdGlvblRpbWUoKSwKICAgICAgICAgVmVjdG9y
PEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IHsKLSAgICAgICAgICAgIHsgInAyNTZkaCJf
cywgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcobV9jbGllbnRFQ0RIUHVibGljS2V5KSB9LAotICAg
ICAgICAgICAgeyAiYXV0aCJfcywgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcobV9zaGFyZWRBdXRo
ZW50aWNhdGlvblNlY3JldCkgfQorICAgICAgICAgICAgeyAicDI1NmRoIl9zLCBiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhjbGllbnRFQ0RIUHVibGljS2V5KCkpIH0sCisgICAgICAgICAgICB7ICJh
dXRoIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhzaGFyZWRBdXRoZW50aWNhdGlvblNlY3Jl
dCgpKSB9CiAgICAgICAgIH0KICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAppbmRleCAwOWNjM2EwZDNlYTQ1Yzc0NTE5
YWI3OThmYTQ4MWFkZDAxMTY3ZmQyLi44ZjBiYWMxMWU5ZTVhMWYyYTRiYjllZDY3MDg0NzEwZmFh
MTg0NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQdXNoRW5jcnlw
dGlvbktleU5hbWUuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1
ZGUgIlB1c2hTdWJzY3JpcHRpb25KU09OLmgiCiAKICNpbmNsdWRlIDxvcHRpb25hbD4KQEAgLTUx
LDI0ICs1MiwyNiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3Rh
dGljIFJlZjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUHVzaFN1YnNjcmlwdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIH5QdXNoU3Vic2NyaXB0aW9uKCk7CiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBQdXNoU3Vic2NyaXB0aW9uRGF0YSYgZGF0YSgpIGNvbnN0Owor
CiAgICAgY29uc3QgU3RyaW5nJiBlbmRwb2ludCgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8
RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lKCkgY29uc3Q7CiAgICAgUHVzaFN1YnNjcmlw
dGlvbk9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNsaWVudEVDREhQdWJsaWNLZXkoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KCkgY29uc3Q7CisKICAgICBFeGNlcHRpb25PcjxS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGdldEtleShQdXNoRW5jcnlwdGlvbktleU5hbWUpIGNv
bnN0OwogICAgIHZvaWQgdW5zdWJzY3JpYmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTVBy
b21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKIAogICAgIFB1c2hTdWJzY3JpcHRpb25KU09O
IHRvSlNPTigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJz
Y3JpcHRpb24oU3RyaW5nJiYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+
IGV4cGlyYXRpb25UaW1lLCBWZWN0b3I8dWludDhfdD4mJiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgY2xpZW50RUNESFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
YXV0aCk7Ci0gICAgUHVzaFN1YnNjcmlwdGlvbihSZWY8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bj4mJiwgU3RyaW5nJiYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4
cGlyYXRpb25UaW1lLCBWZWN0b3I8dWludDhfdD4mJiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgY2xpZW50RUNESFB1YmxpY0tleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0
aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUHVzaFN1YnNjcmlwdGlvbihQdXNoU3Vi
c2NyaXB0aW9uRGF0YSYmKTsKKyAgICBQdXNoU3Vic2NyaXB0aW9uKFB1c2hTdWJzY3JpcHRpb25E
YXRhJiYsIFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmKTsKIAorICAgIFB1c2hTdWJz
Y3JpcHRpb25EYXRhIG1fZGF0YTsKICAgICBSZWZQdHI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bj4gbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwotICAgIFN0cmluZyBtX2VuZHBvaW50Owot
ICAgIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IG1fZXhwaXJhdGlvblRpbWU7Ci0gICAg
UmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiBtX29wdGlvbnM7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fY2xpZW50RUNESFB1YmxpY0tleTsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9zaGFyZWRB
dXRoZW50aWNhdGlvblNlY3JldDsKKyAgICBtdXRhYmxlIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9u
T3B0aW9ucz4gbV9vcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25E
YXRhLmNwcAppbmRleCA2MWEzZmVjYTUzNjIxM2I0ZTUzYzRlMGVkMmFhN2JhOGM2NGVjMTkxLi4z
ZDE0Y2Y4YmI2YjU2NWFhM2E0MDdjMjNlMzgwYjBkYTdiMzczMjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmNw
cApAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQdXNo
U3Vic2NyaXB0aW9uRGF0YS5oIgogCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25PcHRpb25zLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oIgorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zOCw3ICs0Miw2IEBAIFB1c2hTdWJzY3JpcHRpb25EYXRhIFB1c2hT
dWJzY3JpcHRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJlc3VsdC5zZXJ2ZXJW
QVBJRFB1YmxpY0tleSA9IHNlcnZlclZBUElEUHVibGljS2V5OwogICAgIHJlc3VsdC5jbGllbnRF
Q0RIUHVibGljS2V5ID0gY2xpZW50RUNESFB1YmxpY0tleTsKICAgICByZXN1bHQuc2hhcmVkQXV0
aGVudGljYXRpb25TZWNyZXQgPSBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldDsKLQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaAppbmRleCBlMjI3ZjYwNDYxMGI1Yzk5NjAyZmZl
MzFjNjNlOWFlZjAwMzU4ODE5Li5kMzc5MDY4YWY1ZjAyYTUyYTRiYjIxOGM4NDA1ZDk1ZWJjM2Y1
OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJz
Y3JpcHRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
U3Vic2NyaXB0aW9uRGF0YS5oCkBAIC0yOSwxMCArMjksMTQgQEAKIAogI2luY2x1ZGUgIkVwb2No
VGltZVN0YW1wLmgiCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFB1c2hTdWJz
Y3JpcHRpb247CitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOworCiBzdHJ1Y3QgUHVz
aFN1YnNjcmlwdGlvbkRhdGEgewogICAgIFN0cmluZyBlbmRwb2ludDsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
K1B1c2hBUEkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKaW5kZXggZWNhYjY1MDA5Mjc4MWI2ZDM5MDQwZWFj
OTNkMGE5MGI2NDRlNzNkYS4uYWEwNTAxOGJjN2M2YmY3N2Q4MWVlNTM2YzU5MzhjMzQ2OWM4YTFl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKQEAgLTI3LDQgKzI3
LDUgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXJFbmFibGVkCiBdIHBhcnRp
YWwgaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbnB1c2g7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDI2MWQ4OTM0NmZmYjQzNDY2ZmRhM2UxNTUxZDI2MmVm
OTZhNjllYjguLmViNDM1NDVkOWI1MDE4MTBjYjFkYjJiZGZmMDVmNGM2ZmMxNDMyZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAg
LTQ1Myw2ICs0NTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obWF0Y2hpbmdF
bGVtZW50SW5GbGF0VHJlZSkgXAogICAgIG1hY3JvKG1lZGlhU3RyZWFtVHJhY2tDb25zdHJhaW50
cykgXAogICAgIG1hY3JvKG9ucHVzaCkgXAorICAgIG1hY3JvKG9ucHVzaHN1YnNjcmlwdGlvbmNo
YW5nZSkgXAogICAgIG1hY3JvKG9ucnRjdHJhbnNmb3JtKSBcCiAgICAgbWFjcm8ob250b3VjaGNh
bmNlbCkgXAogICAgIG1hY3JvKG9udG91Y2hlbmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmlu
ZGV4IGUxZmE0ZDM5YzFjN2M1OWI1MDAzNmY2MGVhNDhmYjFhMDFlOTlkNzQuLmZmZjdiODNmY2Uz
MjJiODI1ZjM4NmY4MjI5MTA5MTNjM2JiZDM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApA
QCAtMjIyLDYgKzIyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhwcm9jZXNz
b3JlcnJvcikgXAogICAgIG1hY3JvKHByb2dyZXNzKSBcCiAgICAgbWFjcm8ocHVzaCkgXAorICAg
IG1hY3JvKHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhyYXRlY2hhbmdlKSBc
CiAgICAgbWFjcm8ocmVhZHlzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlamVjdGlvbmhhbmRs
ZWQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhNWVjZTA4MTBiZmVl
NDYwMWQwMGVkYzZiYzVkN2FkZTAxMDVjN2QwLi5lOWIxZTg0M2E5NWVjYzQ5NTUzMTJlM2UwYWUw
Mjk2ZWNjMGNlMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjUs
NiArMTY1LDcgQEAKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9F
bGVtZW50LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hT
dWJzY3JpcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgpAQCAtMTk0LDYg
KzE5NSw3IEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgpAQCAtNjU5Nyw3ICs2NTk5LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRp
b24+IEludGVybmFsczo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGVuZHBv
aW4KICAgICBWZWN0b3I8dWludDhfdD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGNsaWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNE
SFB1YmxpY0tleS5ieXRlTGVuZ3RoKCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3Ro
KCkgfTsKIAotICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVu
ZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSks
IFdURk1vdmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpKTsKKyAgICBy
ZXR1cm4gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFB1c2hTdWJzY3JpcHRpb25EYXRhIHsgV1RG
TW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1
YmxpY0tleSksIFdURk1vdmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgp
IH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IDhjNjc3NTk5NTA0OGJjMmVjNzNjYzUyZmM3Njc2MWMz
OGJmN2I0NDAuLmZhZjFhYWVmNDIwZDZkYmE2OWI1ZWI2NjJiOTg5ZDc4ZDU3OTVmOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJKU0Zl
dGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
UHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogCkBAIC04Miw2ICs4MywyMSBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHM6OnNjaGVkdWxlUHVzaEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgUmVmUHRyPERlZgogICAgIH0pOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6
OnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFB1c2hTdWJzY3JpcHRpb24qIG5l
d1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlwdGlvbiogb2xkU3Vic2NyaXB0aW9uKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+IG5ld1N1YnNjcmlwdGlvbkRhdGE7
CisgICAgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4gb2xkU3Vic2NyaXB0aW9u
RGF0YTsKKworICAgIGlmIChuZXdTdWJzY3JpcHRpb24pCisgICAgICAgIG5ld1N1YnNjcmlwdGlv
bkRhdGEgPSBuZXdTdWJzY3JpcHRpb24tPmRhdGEoKS5pc29sYXRlZENvcHkoKTsKKyAgICBpZiAo
b2xkU3Vic2NyaXB0aW9uKQorICAgICAgICBvbGRTdWJzY3JpcHRpb25EYXRhID0gb2xkU3Vic2Ny
aXB0aW9uLT5kYXRhKCkuaXNvbGF0ZWRDb3B5KCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtp
ZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCBuZXdTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShu
ZXdTdWJzY3JpcHRpb25EYXRhKSwgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IFdURk1vdmUob2xkU3Vi
c2NyaXB0aW9uRGF0YSldKCkgbXV0YWJsZSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoaWRlbnRpZmllciwgV1RG
TW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSwgV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRhKSk7
CisgICAgfSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlckludGVybmFsczo6d2FpdEZvckZldGNo
RXZlbnRUb0ZpbmlzaChGZXRjaEV2ZW50JiBldmVudCwgRE9NUHJvbWlzZURlZmVycmVkPElETElu
dGVyZmFjZTxGZXRjaFJlc3BvbnNlPj4mJiBwcm9taXNlKQogewogICAgIGV2ZW50Lm9uUmVzcG9u
c2UoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBldmVudCA9IFJlZiB7IGV2ZW50IH1dIChh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKQEAgLTE2OCw3ICsxODQsNyBAQCBSZWZQdHI8UHVzaFN1
YnNjcmlwdGlvbj4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlv
bihjb25zdCBTdAogICAgIFZlY3Rvcjx1aW50OF90PiBteUNsaWVudEVDREhQdWJsaWNLZXkgeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY2xpZW50RUNESFB1YmxpY0tleS5kYXRhKCkpLCBj
bGllbnRFQ0RIUHVibGljS2V5LmJ5dGVMZW5ndGgoKSB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBt
eUF1dGggeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXV0aC5kYXRhKCkpLCBhdXRoLmJ5
dGVMZW5ndGgoKSB9OwogCi0gICAgcmV0dXJuIFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZN
b3ZlKG15RW5kcG9pbnQpLCBleHBpcmF0aW9uVGltZSwgV1RGTW92ZShteVNlcnZlclZBUElEUHVi
bGljS2V5KSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3ZlKG15QXV0aCkp
OworICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoUHVzaFN1YnNjcmlwdGlvbkRh
dGEgeyBXVEZNb3ZlKG15RW5kcG9pbnQpLCBleHBpcmF0aW9uVGltZSwgV1RGTW92ZShteVNlcnZl
clZBUElEUHVibGljS2V5KSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3Zl
KG15QXV0aCkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggMTM4YjI3MWQzMThm
YmIzMGU2NzEwNDViOWU5YTQxYzQ1NGZiOWM2MC4uYTBhZTNjNDBjYzRkYWYyNzc1NWMxNDZjZDFh
NWU5YTYwNmYwMGM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNl
V29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIFJlZjxGZXRjaFJl
c3BvbnNlPiBjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlSZXNwb25zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CiAKICAgICB2b2lkIHNjaGVkdWxlUHVzaEV2ZW50KGNvbnN0IFN0cmluZyYsIFJl
ZlB0cjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgc2NoZWR1bGVQdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQoUHVzaFN1YnNjcmlwdGlvbiogbmV3U3Vic2NyaXB0aW9uLCBQdXNoU3Vi
c2NyaXB0aW9uKiBvbGRTdWJzY3JpcHRpb24pOwogICAgIFZlY3RvcjxTdHJpbmc+IGZldGNoUmVz
cG9uc2VIZWFkZXJMaXN0KEZldGNoUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBwcm9jZXNzTmFt
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5pZGwKaW5kZXggODQ2NDU1YzYyNjhmODVjOWZiMTU5ODhmM2FlYTEzZWM5MWJkNzcz
Mi4uZWFiYzY1MzRkNzU5MGM2MGI4YWQ1YWZkZGJkOWE4NDczMzIzZTlmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCkBAIC0zOSw2
ICszOSw3IEBACiAgICAgc2VxdWVuY2U8Qnl0ZVN0cmluZz4gZmV0Y2hSZXNwb25zZUhlYWRlckxp
c3QoRmV0Y2hSZXNwb25zZSByZXNwb25zZSk7CiAKICAgICBQcm9taXNlPGJvb2xlYW4+IHNjaGVk
dWxlUHVzaEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyBkYXRhKTsKKyAgICB1bmRlZmluZWQgc2No
ZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoUHVzaFN1YnNjcmlwdGlvbj8gbmV3U3Vi
c2NyaXB0aW9uLCBQdXNoU3Vic2NyaXB0aW9uPyBvbGRTdWJzY3JpcHRpb24pOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm9jZXNzTmFtZTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBpc1Rocm90dGxlYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBkYzc5
MjIyNzM4MGM5YzAzNDJkY2Q4OWYxZGQ3MDgxZTc5NTE3YmY5Li40OTVmZGNiZGE5NWM4NWRkNzFm
MTIyMzZmZWZmMjdjNmUyZjI1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC01NTIsMTEgKzU1
Miw2IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzCiAgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92
ZShyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIFJlZjxQdXNoU3Vic2Ny
aXB0aW9uPiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEoUmVmPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24+IHJlZ2lzdHJhdGlvbiwgUHVzaFN1YnNjcmlwdGlvbkRhdGEmJiBkYXRhKQot
ewotICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShyZWdpc3RyYXRp
b24pLCBXVEZNb3ZlKGRhdGEuZW5kcG9pbnQpLCBkYXRhLmV4cGlyYXRpb25UaW1lLCBXVEZNb3Zl
KGRhdGEuc2VydmVyVkFQSURQdWJsaWNLZXkpLCBXVEZNb3ZlKGRhdGEuY2xpZW50RUNESFB1Ymxp
Y0tleSksIFdURk1vdmUoZGF0YS5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkpOwotfQotCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UoU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGFwcGxpY2F0aW9uU2VydmVyS2V5LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1
c2hTdWJzY3JpcHRpb24+PiYmIHByb21pc2UpCiB7CiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0
aW9uKCkuc3Vic2NyaWJlVG9QdXNoU2VydmljZShyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCBh
cHBsaWNhdGlvblNlcnZlcktleSwgW3Byb3RlY3RlZFJlZ2lzdHJhdGlvbiA9IFJlZiB7IHJlZ2lz
dHJhdGlvbiB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CkBAIC01NjUsNyArNTYwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
dWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHIKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKGNyZWF0ZVB1c2hTdWJzY3JpcHRpb25Gcm9tRGF0YShXVEZNb3ZlKHByb3RlY3RlZFJlZ2lz
dHJhdGlvbiksIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworICAgICAgICBwcm9taXNl
LnJlc29sdmUoUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgV1RGTW92ZShwcm90ZWN0ZWRSZWdpc3RyYXRpb24pKSk7CiAgICAgfSk7CiB9CiAKQEAg
LTU5MCw3ICs1ODUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hTdWJz
Y3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNyZWF0ZVB1c2hTdWJz
Y3JpcHRpb25Gcm9tRGF0YShXVEZNb3ZlKHByb3RlY3RlZFJlZ2lzdHJhdGlvbiksIFdURk1vdmUo
Km9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEpKS5wdHIoKSk7CisgICAgICAgIHByb21pc2Uu
cmVzb2x2ZShQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZSgqb3B0aW9uYWxQdXNoU3Vi
c2NyaXB0aW9uRGF0YSksIFdURk1vdmUocHJvdGVjdGVkUmVnaXN0cmF0aW9uKSkucHRyKCkpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDUxMDQ1MzRlNTVmOTFlYWFj
NjI0MTE3MmM4YTgyMTE4YjNmOGE0ZGMuLjRjZWU4ZGZkNGQyM2QyYmNmM2U5ZTNmMWViNjczNDYy
OWMzMjUyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjAsNiArMTIwLDE1IEBAIHZv
aWQgU1dDb250ZXh0TWFuYWdlcjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBzdGQ6Om9wCiAgICAgc2VydmljZVdvcmtlci0+ZmlyZVB1c2hFdmVudChX
VEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5l
d1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYg
b2xkU3Vic2NyaXB0aW9uRGF0YSkKK3sKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3Jr
ZXJNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2VydmljZVdvcmtlci0+ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudChXVEZNb3ZlKG5ld1N1YnNjcmlwdGlvbkRhdGEpLCBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlv
bkRhdGEpKTsKK30KKwogCiB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRl
eCBjNzY1YzU3ZDIwMjNmMTRjYWJiYmRiYjkwYjY4M2VhNjU0NTcwN2NiLi4yOTVkZGYwZDRmNjA2
NWVhYTIxMDE3YzhjMTU0Y2VmMGJkZTNkODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCkBAIC05
MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVJbnN0YWxs
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0
aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3Jp
cHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGlt
ZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFNh
dmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiwg
SGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcAppbmRleCBmNmRkZjg4YmMzMjM0YzQ1ODllMzQyYWVmNzIxNTI3MmE4
ODhmNTAyLi4yMThkMTE4ZGQ5NDYxNTRmYzUwOWEyYmY0OTk4OWE1YjVkMWY5NjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQdXNoRXZl
bnQuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgi
CkBAIC0yMzUsNiArMjM3LDMzIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNr
VG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAgICAgfSk7CiB9
CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3
U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBv
bGRTdWJzY3JpcHRpb25EYXRhKQoreworICAgIFJlZiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
PSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKKyAg
ICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUsIG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG5ld1N1
YnNjcmlwdGlvbkRhdGEpLCBvbGRTdWJzY3JpcHRpb25EYXRhID0gV1RGTW92ZShvbGRTdWJzY3Jp
cHRpb25EYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCBmaXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlIiBQUkl1NjQsIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAg
ICAgIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBuZXdTdWJzY3JpcHRpb247CisgICAgICAgIFJl
ZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBvbGRTdWJzY3JpcHRpb247CisKKyAgICAgICAgaWYgKG5l
d1N1YnNjcmlwdGlvbkRhdGEpCisgICAgICAgICAgICBuZXdTdWJzY3JpcHRpb24gPSBQdXNoU3Vi
c2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZSgqbmV3U3Vic2NyaXB0aW9uRGF0YSksIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS0+cmVnaXN0cmF0aW9uKCkpOworICAgICAgICBpZiAob2xkU3Vic2Ny
aXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG9sZFN1YnNjcmlwdGlvbiA9IFB1c2hTdWJzY3JpcHRp
b246OmNyZWF0ZShXVEZNb3ZlKCpvbGRTdWJzY3JpcHRpb25EYXRhKSk7CisKKyAgICAgICAgYXV0
byBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgPSBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVzaHN1YnNjcmlwdGlvbmNoYW5nZUV2ZW50LCB7IH0s
IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwgV1RGTW92ZShvbGRTdWJzY3JpcHRpb24pLCBFeHRl
bmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk7CisKKyAg
ICAgICAgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQ
cm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKGF1dG8mJikg
bXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCBmaW5pc2hpbmcgZm9yIHdvcmtlciAlbGx1Iiwgd2Vha1RoaXMgPyB3ZWFrVGhp
cy0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwKTsKKyAgICAgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5maW5pc2hlZEZpcmluZ1B1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGlu
Z1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKGdsb2JhbFNjb3BlKCktPmlzQ29udGV4dFRocmVhZCgp
KTsKQEAgLTI5NSw3ICszMjQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVh
cnRCZWF0VGltZXIoKQogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpoZWFydEJlYXRUaW1lckZp
cmVkKCkKIHsKICAgICBpZiAoIW1fb25nb2luZ0hlYXJ0QmVhdENoZWNrKSB7Ci0gICAgICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2
YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8fCBtX2lzSGFuZGxpbmdQdXNoRXZlbnQg
fHwgbV9tZXNzYWdlRXZlbnRDb3VudCkKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Oklu
c3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdG
ZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ1B1c2hFdmVudCB8fCBtX3B1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudENvdW50IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCiAgICAgICAgICAgICBzdGFy
dEhlYXJ0QmVhdFRpbWVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjIsNiArMzkx
LDE4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdNZXNzYWdlRXZl
bnQoKQogICAgIC0tbV9tZXNzYWdlRXZlbnRDb3VudDsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKQor
eworICAgIGlmICghbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3VudCsrKQorICAgICAg
ICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKQoreworICAgIEFTU0VS
VChtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50KTsKKyAgICAtLW1fcHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50Q291bnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApp
bmRleCAwNjgxYjMzY2ZjY2FiZjM5MDBhNzQ3ZjcwZTExNTg3MjEwOGMwMGJjLi43NjMxNGYyZDI2
ZDcyMzQ1Y2VhMmUxNWViODJiZGUwMDEyM2U1NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNs
dWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCkBAIC02MSwxMiArNjIsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9z
dFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVN
ZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudCgpOwogCiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJl
ZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVy
cmVyLCBGZXRjaE9wdGlvbnMmJik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3Vy
Y2VEYXRhKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZv
aWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNrVG9G
aXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNj
cmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vi
c2NyaXB0aW9uRGF0YSk7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAgIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YUlkZW50aWZpZXI7IH0KQEAgLTkwLDYgKzkzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaGVkRmlyaW5nSW5zdGFsbEV2ZW50KGJvb2wgaGFz
UmVqZWN0ZWRBbnlQcm9taXNlKTsKICAgICB2b2lkIGZpbmlzaGVkRmlyaW5nQWN0aXZhdGVFdmVu
dCgpOwogICAgIHZvaWQgZmluaXNoZWRGaXJpbmdNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIGZp
bmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7CiAgICAgdm9pZCBmaW5p
c2hlZFN0YXJ0aW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKQEAgLTEw
NSw2ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNIYW5kbGluZ1B1c2hFdmVudCB7IGZhbHNlIH07Cisg
ICAgdWludDY0X3QgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3VudCB7IDAgfTsKICAg
ICB1aW50NjRfdCBtX21lc3NhZ2VFdmVudENvdW50IHsgMCB9OwogICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBJZGxlLCBTdGFydGluZywgSW5zdGFsbGluZywgQWN0aXZhdGluZyB9OwogICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKaW5kZXggMDczYjQyZTkzNmViZmRlMTliOTVlYWY1MTA1ODUwZTI0YTliOTRjZC4uMDg1
ZTQ5NmM0ODA3NTZkZDdmNWVhOWQ4ZmQzOTViNGE0NmRlZTcyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApA
QCAtMzIwLDYgKzMyMSwxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1
c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYQogICAgICAgICBtX29u
Z29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CiB9CiAKK3ZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KHN0ZDo6
b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3Rk
OjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKQor
eworICAgIHRocmVhZCgpLndpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCgpOworICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBjcm9zc1RocmVhZENv
cHkobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBjcm9zc1RocmVh
ZENvcHkob2xkU3Vic2NyaXB0aW9uRGF0YSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhy
ZWFkKCkucXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUo
bmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworICAg
IH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGNlZmJj
NWUxNjM2OGMzOGE4M2E3ZTExNWZkNTc0NzJjYWY1YzViOTguLmU1YjJiNmUyMzU5YmQyNmU5N2I5
OTZkNTM4YzljZGUyN2M5OGJkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGZXRj
aElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlw
dGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRGVidWdnYWJsZS5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklu
c3BlY3RvclByb3h5LmgiCkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJ
bnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBm
aXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3Jp
cHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNj
cmlwdGlvbkRhdGEpOwogCiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZm
ZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYjUxZmZkNGEzZWZiMjU5Y2E3Y2I4OTQxNDRmZGFkNWU0Zjg2NTA5My4uMTJmZDI4NGJj
MWU1ZTg0ZjU4MmZiNGEwZjQwNTQyYzE1N2Q3NDc4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisy
MDIxLTExLTEzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIC0gTW9kaWZpZWQgdGhlIHB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UgdGVzdCB0byBzZW5kIGEgcmVhbCBldmVudCB0byB0aGUgc2Vy
dmljZSB3b3JrZXIuCisgICAgICAgICAtIE1vZGlmaWVkIHRoZSBzZXJ2aWNlIHdvcmtlciBzcGlu
bmluZyB0ZXN0cyB0byB0ZXN0IGZvciBndWFyZGluZyBhZ2FpbnN0IGluZmluaXRlIGxvb3BzIGlu
CisgICAgICAgICAgIHRoZSBwdXNoIGFuZCBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhh
bmRsZXJzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgZXhpc3Rpbmcgc3Bpbm5pbmcgdGVzdHMg
YXJlIG1hcmtlZCBhcyBmbGFreSBvbiBpb3Mtd2syLiBXZSBkbyB0aGUgc2FtZSBoZXJlCisgICAg
ICAgIHNpbmNlIHRoZSB0ZXN0IHBhc3NlcyBsb2NhbGx5IGJ1dCBpcyBmbGFreSBpbiBFV1MuCisK
KyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQu
YW55LmpzOgorICAgICAgICAocHJvbWlzZV90ZXN0KToKKyAgICAgICAgKGFzc2VydFN1YnNjcmlw
dGlvbnNBcmVFcXVhbCk6CisgICAgICAgICh0ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKHByb21p
c2VfdGVzdC5hc3luYyBuZXdTdWJzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAocHJvbWlz
ZV90ZXN0LmFzeW5jIHJldHVybik6IERlbGV0ZWQuCisgICAgICAgICogaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRp
bmVzLmpzOgorICAgICAgICAoYXN5bmMgc2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBodHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qczoKKyAgICAgICAgKHJl
c3BvbmRUb1BlbmRpbmdFdmVudCk6CisgICAgICAgIChwdXNoVGVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0xNyAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvdGhlLWlmcmFtZS1lbGVtZW50L2lmcmFtZV9zYW5kYm94X3dpbmRvd19vcGVuX2Rvd25sb2Fk
X2Jsb2NrX2Rvd25sb2Fkcy50ZW50YXRpdmUuaHRtbCBpcyBmcmVxdWVudGx5IGZhaWxpbmcKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGFmODBjMzdkOWJlY2IwOWE1MDk3ZDI1NjNi
NTE4OWZhZTY1MjI4NmIuLmU2YWRhNmQyODFkZDg2YTZjNTViNDJlMTgxMzE5OGEwZGVjOGZlZTYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEx
LTEzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0IHJlc3VsdHMg
c2luY2Ugd2Ugbm93IHN1cHBvcnQgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZp
Y2V3b3JrZXItZXhwZWN0ZWQudHh0OgorCiAyMDIxLTExLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIExvY2tzIEFQSSBkb2VzIGdldCBlbmFibGVkIGlu
IFNlcnZpY2UgV29ya2VycyB3aGVuIHJ1bm5pbmcgbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50LmFueS5qcwppbmRleCA4MmM0MjFmNWFmMjEwMGViOTkyNGQ1NTU0ZGY4NzA1MTBi
MDQ3NzU1Li44YzM0ZDM0NDc0NTk1YmNhY2Q0MTg5NDg3YWM2YzViNjg5YmMyMjI5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanMKQEAgLTIsMjcgKzIsMjMgQEAKIC8vIE1FVEE6IGds
b2JhbD1zZXJ2aWNld29ya2VyCiAvLyBNRVRBOiBzY3JpcHQ9Y29uc3RhbnRzLmpzCiAKLXRlc3Qo
KCkgPT4gewotICAgIGxldCBldmVudCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQo
InB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1
YnNjcmlwdGlvbiwgbnVsbCwgIm5ldyIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vi
c2NyaXB0aW9uLCBudWxsLCAib2xkIik7Ci19LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
IHdpdGhvdXQgZGF0YSIpOwotCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcgUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiwgeyBuZXdT
dWJzY3JpcHRpb246IG51bGwsIG9sZFN1YnNjcmlwdGlvbjogbnVsbCB9KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbnVsbCwgIm5ldyIpOwotICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBudWxsLCAib2xkIik7Ci19LCAiUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucyIpOworbGV0IGFjdGl2YXRl
UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbmFjdGl2YXRlID0gcmVzb2x2
ZSk7Citwcm9taXNlX3Rlc3QoKCkgPT4geworICAgcmV0dXJuIGFjdGl2YXRlUHJvbWlzZTsKK30s
ICJ3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3b3JrZXIiKTsKIAogbGV0IG5ld1N1YnNjcmlwdGlv
biA9IG51bGw7CiBsZXQgb2xkU3Vic2NyaXB0aW9uID0gbnVsbDsKIAotbGV0IGFjdGl2YXRlUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbmFjdGl2YXRlID0gcmVzb2x2ZSk7
Ci1wcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewotICAgcmV0dXJuIGFjdGl2YXRlUHJvbWlzZTsK
LX0sICJ3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3b3JrZXIiKTsKK2Z1bmN0aW9uIGFzc2VydFN1
YnNjcmlwdGlvbnNBcmVFcXVhbChhLCBiLCByZWFzb24pCit7CisgICAgaWYgKCFhIHx8ICFiKQor
ICAgICAgICBhc3NlcnRfZXF1YWxzKGEsIGIsIHJlYXNvbik7CisgICAgZWxzZQorICAgICAgICBh
c3NlcnRfZXF1YWxzKEpTT04uc3RyaW5naWZ5KGEudG9KU09OKCkpLCBKU09OLnN0cmluZ2lmeShi
LnRvSlNPTigpKSwgcmVhc29uKTsKK30KIAotcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4geworcHJv
bWlzZV90ZXN0KCgpID0+IHsKICAgICBuZXdTdWJzY3JpcHRpb24gPSBzZWxmLmludGVybmFscy5j
cmVhdGVQdXNoU3Vic2NyaXB0aW9uKEVORFBPSU5ULCBFWFBJUkFUSU9OX1RJTUUsIFZBTElEX1NF
UlZFUl9LRVksIENMSUVOVF9LRVlfMSwgQVVUSCk7CiAgICAgb2xkU3Vic2NyaXB0aW9uID0gc2Vs
Zi5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNjcmlwdGlvbihFTkRQT0lOVCwgRVhQSVJBVElPTl9U
SU1FLCBWQUxJRF9TRVJWRVJfS0VZLCBDTElFTlRfS0VZXzIsIEFVVEgpOwogCkBAIC0zMiwyMCAr
MjgsMzAgQEAgcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4gewogICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHJlc29sdmUoKSk7CiB9LCAiY3JlYXRlIHN1YnNjcmlwdGlvbnMiKTsKIAot
dGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9uIH0pOwotICAg
IGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24sICJu
ZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9s
ZCIpOworcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4geworICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVk
dWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51bGwsIG51bGwpOworICAgIGxldCBldmVu
dCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2hzdWJzY3JpcHRpb25j
aGFuZ2UgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQu
bmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0Fy
ZUVxdWFsKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOworfSwgIlB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1YnNjcmlwdGlvbnMiKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jKCkgPT4geworICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KG5ld1N1YnNjcmlwdGlvbiwgbnVsbCk7CisgICAgbGV0IGV2ZW50ID0g
YXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSA9IHJlc29sdmUpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5uZXdT
dWJzY3JpcHRpb24sIG5ld1N1YnNjcmlwdGlvbiwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlw
dGlvbnNBcmVFcXVhbChldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKIH0sICJQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBuZXcgc3Vic2NyaXB0aW9uIik7CiAKLXRl
c3QoKCkgPT4gewotICAgIGxldCBldmVudCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCB7IG9sZFN1YnNjcmlwdGlvbiB9KTsKLSAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbnVsbCwgIm5ldyIpOwotICAgIGFz
c2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBvbGRTdWJzY3JpcHRpb24sICJvbGQi
KTsKK3Byb21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVs
ZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChudWxsLCBvbGRTdWJzY3JpcHRpb24pOworICAg
IGxldCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1
YWwoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7CisgICAgYXNzZXJ0U3Vic2Ny
aXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uLCAi
b2xkIik7CiB9LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGggb2xkIHN1YnNjcmlw
dGlvbiIpOwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiwgeyBuZXdTdWJzY3JpcHRp
b24sIG9sZFN1YnNjcmlwdGlvbiB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1YnNj
cmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVu
dC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOworcHJvbWlzZV90ZXN0
KGFzeW5jKCkgPT4geworICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlv
bkNoYW5nZUV2ZW50KG5ld1N1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uKTsKKyAgICBsZXQg
ZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0
aW9uY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2
ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7CisgICAgYXNzZXJ0
U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0
aW9uLCAib2xkIik7CiB9LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGggbmV3IGFu
ZCBvbGQgc3Vic2NyaXB0aW9uIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9w
dXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlv
bkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA5NWZhMmIx
NzQ3MmUyN2Y0NjNlYzFjYWIxNjIwMjYzOWFhNmJlMGFiLi4yOTE2YjI2ZTA1ODJiNTc2YTU0NmRh
ODgyN2RmNTc0ODgwNmQxZGM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNo
LWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudC5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw3
IEBACiAKLVBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhvdXQgZGF0YQotUEFT
UyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25zCiBQQVNT
IHdhaXQgZm9yIGFjdGl2ZSBzZXJ2aWNlIHdvcmtlcgogUEFTUyBjcmVhdGUgc3Vic2NyaXB0aW9u
cworUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25z
CiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBzdWJzY3JpcHRpb24K
IFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGggb2xkIHN1YnNjcmlwdGlvbgog
UEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBuZXcgYW5kIG9sZCBzdWJzY3Jp
cHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9y
ZXNvdXJjZXMvcm91dGluZXMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCmluZGV4IDc2NDk3MDkwZTYwOGM0ZjE1ZGNmNGRmNzJi
YWYwYzdjOWFhOWUxZTQuLmUzNjMzMGMzZDRiOTU1NWU3MjNkYzE5ZWE1OTQzMDJkODYyN2ZmM2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvcm91dGluZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy9yb3V0aW5lcy5qcwpAQCAtMjgsNiArMjgsMTggQEAgZnVuY3Rpb24gd2FpdEZv
clN0YXRlKHdvcmtlciwgc3RhdGUpCiAgICAgfSk7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIHNlbmRT
eW5jTWVzc2FnZSh3b3JrZXIsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0KQoreworICAgIGlmICghd2lu
ZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJyZXF1aXJlcyBp
bnRlcm5hbHMiKTsKKworICAgIGNvbnN0IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsK
KyAgICBjb25zdCByZWNlaXZlZE1lc3NhZ2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNoYW5u
ZWwucG9ydDEub25tZXNzYWdlID0gcmVzb2x2ZSk7CisgICAgY29uc3QgdGltZWRPdXQgPSBuZXcg
UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBzZXRUaW1lb3V0KHJlamVjdCwgdGltZW91dCB8
fCA1MDAwKSk7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCBbY2hhbm5lbC5w
b3J0Ml0pOworICAgIHJldHVybiBQcm9taXNlLnJhY2UoW3JlY2VpdmVkTWVzc2FnZSwgdGltZWRP
dXRdKTsKK30KKwogYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1
bm5pbmcod29ya2VyKQogewogICAgIGlmICghd2luZG93LmludGVybmFscykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1wdXNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNGZiOWNlNWJmNzI5NTA4ODEyMWRjZWEwNTU5ZWU1NDZlMjljZDNkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorCitQQVNTIFNwaW4gaW4gcHVzaAorUEFTUyBTcGluIGFmdGVyIHB1c2gKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmVjNDU3Yzc4NGZmZTRlYmNhMjkwNzkzZmFlOTQ2YTJkNTBmNGRlNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFkb2N0eXBlIGh0
bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBTaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRU
aW1lb3V0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRp
bmVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3Jr
ZXIuanMiLCB7IHNjb3BlIDogInNwaW4tcHVzaCIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVn
aXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0
aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2Fn
ZSh3b3JrZXIsICJwdXNoIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xv
bmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGluIGluIHB1c2giKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtl
ci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1wdXNoIiB9KTsKKyAgICBjb25zdCB3b3JrZXIg
PSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdp
c3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNN
ZXNzYWdlKHdvcmtlciwgInB1c2giKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtl
ck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgcHVzaCIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNo
YW5nZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIzZmIwY2ZmMDQ1NTQxZTdjYmRkMWFhZGZjYTVl
ZjJmMWIwZjJkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdl
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTcGluIGluIHB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UKK1BBU1MgU3BpbiBhZnRlciBwdXNoc3Vic2NyaXB0aW9uY2hhbmdl
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MDgyOWNj
NzMzMTc1MjQ2MjVhMDNjZjc5NzdhMTU4NDU0YzJhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9j
dHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgU2hvdWxkVXNlU2VydmljZVdvcmtl
clNob3J0VGltZW91dD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5p
bmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIH0p
OworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdh
aXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisK
KyAgICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdv
cmtlcik7Cit9LCAiU3BpbiBpbiBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13
b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXItcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIg
fSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBh
d2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsK
KworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNoc3Vic2NyaXB0aW9uY2hh
bmdlIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmco
d29ya2VyKTsKK30sICJTcGluIGFmdGVyIHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13
b3JrZXIuanMKaW5kZXggNWVmODM3OTFiNzk3ZWI4MWVjMDI0M2E4MTczMTc4MzhiMjQyZWJmNC4u
ZmJkZmZkMjE5OTQyMjdiMGQxODk5NTAyMGEwYWJmMWI0YTYzYzFjOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5n
LXdvcmtlci5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCkBAIC0xLDMgKzEsMTQgQEAKK2xldCBwZW5k
aW5nRXZlbnQgPSBudWxsOworCitmdW5jdGlvbiByZXNwb25kVG9QZW5kaW5nRXZlbnQoKQorewor
ICAgIGlmICghcGVuZGluZ0V2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBwZW5kaW5nRXZl
bnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoJ3JlY2VpdmVkJyk7CisgICAgcGVuZGluZ0V2ZW50ID0g
bnVsbDsKK30KKwogaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLXJ1
biIpKQogICAgIHdoaWxlKHRydWUpIHsgfTsKIApAQCAtMTksNiArMzAsMTcgQEAgZnVuY3Rpb24g
YWN0aXZhdGVUZXN0KGV2ZW50KQogCiBmdW5jdGlvbiBtZXNzYWdlVGVzdChldmVudCkKIHsKKyAg
ICBzd2l0Y2ggKGV2ZW50LmRhdGEpIHsKKyAgICBjYXNlICJwdXNoIjoKKyAgICAgICAgc2VsZi5p
bnRlcm5hbHMuc2NoZWR1bGVQdXNoRXZlbnQoInRlc3QiKTsKKyAgICAgICAgcGVuZGluZ0V2ZW50
ID0gZXZlbnQ7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlICJwdXNoc3Vic2NyaXB0aW9uY2hh
bmdlIjoKKyAgICAgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQobnVsbCwgbnVsbCk7CisgICAgICAgIHBlbmRpbmdFdmVudCA9IGV2ZW50OworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmlu
Y2x1ZGVzKCJzcGluLW1lc3NhZ2UiKSkKICAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OwogICAgIGlm
IChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1tZXNzYWdlIikp
CkBAIC0zNCw4ICs1NiwyOSBAQCBmdW5jdGlvbiBmZXRjaFRlc3QoZXZlbnQpCiAgICAgZXZlbnQu
cmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKCJvayIpKTsKIH0KIAorZnVuY3Rpb24gcHVzaFRlc3Qo
ZXZlbnQpCit7CisgICAgcmVzcG9uZFRvUGVuZGluZ0V2ZW50KCk7CisKKyAgICBpZiAoc2VsZi5y
ZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tcHVzaCIpKQorICAgICAgICB3aGlsZSh0
cnVlKSB7IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGlu
LWFmdGVyLXB1c2giKSkKKyAgICAgICAgc2VsZi5zZXRUaW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1
ZSkgeyB9OyB9LCAwKTsKK30KKworZnVuY3Rpb24gcHVzaFN1YnNjcmlwdGlvbkNoYW5nZVRlc3Qo
ZXZlbnQpCit7CisgICAgcmVzcG9uZFRvUGVuZGluZ0V2ZW50KCk7CisKKyAgICBpZiAoc2VsZi5y
ZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIp
KQorICAgICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNj
b3BlLmluY2x1ZGVzKCJzcGluLWFmdGVyLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKSkKKyAgICAg
ICAgc2VsZi5zZXRUaW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKK30KIAog
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJpbnN0YWxsIiwgaW5zdGFsbFRlc3QpOwogc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJhY3RpdmF0ZSIsIGFjdGl2YXRlVGVzdCk7CiBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCBtZXNzYWdlVGVzdCk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImZl
dGNoIiwgZmV0Y2hUZXN0KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigicHVzaCIsIHB1c2hUZXN0
KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VUZXN0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnkuc2Vy
dmljZXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXIt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzM2FkNzc4MzJmOTQ1M2U5OGVlOGMyYWM2NTlkNGExM2QwOWZh
NWYuLmUwYjVlNTRhODYzZmRlZTc4ZWQxMjIxMWU2OWM0NjlmZGUxY2Y2OWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRs
aGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNz
Lmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dApAQCAtODAsNyArODAsNyBAQCBQ
QVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCBpbnRlcmZhY2U6IG5ldyBQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQoInB1cwogUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGlu
dGVyZmFjZTogYXR0cmlidXRlIHB1c2hNYW5hZ2VyCiBQQVNTIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24gaW50ZXJmYWNlOiByZWdpc3RyYXRpb24gbXVzdCBpbmhlcml0IHByb3BlcnR5ICJwdXNo
TWFuYWdlciIgd2l0aCB0aGUgcHJvcGVyIHR5cGUKIFBBU1MgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIGludGVyZmFjZTogYXR0cmlidXRlIG9ucHVzaAotRkFJTCBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGFzc2Vy
dF9vd25fcHJvcGVydHk6IFRoZSBnbG9iYWwgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJv
bnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIGV4cGVjdGVkIHByb3BlcnR5ICJvbnB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UiIG1pc3NpbmcKK1BBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVy
ZmFjZTogYXR0cmlidXRlIG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZQogUEFTUyBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25w
dXNoIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQotRkFJTCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
aW50ZXJmYWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9u
Y2hhbmdlIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3Rl
ZCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBtaXNzaW5nCitQQVNTIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5
ICJvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIHdpdGggdGhlIHByb3BlciB0eXBlCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDQxMjY1N2NiZjBkYTk5MDA5ZDBiMmE5N2M3OWU1NzBiNTRmZDEyNzMuLjJk
ODZjMjNhOWUyY2Q3NmUzNjVmNjcwZjA2YjY4OWI4ZTQzMTU1NmIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTM2LDYgKzEzNiw4IEBAIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0CiB3ZWJraXQub3JnL2Iv
MjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1m
ZXRjaC5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIx
NzY2OSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5z
dGFsbC5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIx
NzY2OSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVz
c2FnZS5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIx
NzY2OSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVz
aC5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNzY2
OSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1
YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IEZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMjE3Njg3IGFjY2Vzc2liaWxpdHkvYXJpYS1jdXJyZW50Lmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIxNzY4NyBhY2Nlc3NpYmlsaXR5L2luc2VydC1uZXds
aW5lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444694</attachid>
            <date>2021-11-18 10:00:18 -0800</date>
            <delta_ts>2021-11-18 12:10:50 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-233088-20211118100017.patch</filename>
            <type>text/plain</type>
            <size>49248</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc2ZjU4MDkzMjEzMDZh
OGVmYTkzMjBmOGY1Y2FkNWUzMDFhZmNiZS4uNjc0YWIyNGMxNmY5YjI4ZGQ5Y2UzZTIyYWFlNTAy
NThlYjE4MTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFiaWxpdHkgdG8gc2VuZCBhIHB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgb24K
KyAgICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBJIGRpZG4ndCBpbXBsZW1lbnQgYSBj
b21wbGV0aW9uIGhhbmRsZXIgZm9yIHRoZSBldmVudCAoYXMgd2UgZG8KKyAgICAgICAgZm9yIHRo
ZSBwdXNoIGV2ZW50KSBzaW5jZSBpdCdzIG5vdCByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQgYW5k
IEkgZG9uJ3QgdGhpbmsgd2UnZCB1c2UgaXQuCisgICAgICAgIFdlIG9ubHkgcGxhbiBvbiBmaXJp
bmcgdGhpcyBldmVudCB0aGUgZmlyc3QgdGltZSB5b3UgdmlzaXQgYW4gb3JpZ2luIGFmdGVyIHdl
IGRlcmVnaXN0ZXIgYQorICAgICAgICBQdXNoU3Vic2NyaXB0aW9uIGZvciByZWNlaXZpbmcgdG9v
IG1hbnkgc2lsZW50IHB1c2hlcy4KKworICAgICAgICBUZXN0czogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9wdXNo
LWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb246OlB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpl
bmRwb2ludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpleHBp
cmF0aW9uVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpv
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OmNsaWVu
dEVDREhQdWJsaWNLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlv
bjo6c2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaFN1YnNjcmlwdGlvbjo6Z2V0S2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hT
dWJzY3JpcHRpb246OnRvSlNPTiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoU3Vic2NyaXB0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVh
dGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6c2No
ZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAgICog
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZDo6d2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVk
RmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5Lmg6CisKIDIwMjEtMTEtMTcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gSW50cm9kdWNlIGVudW0gY2xhc3MgSW50cmluc2lj
V2lkdGhNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hTdWJzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
U3Vic2NyaXB0aW9uLmNwcAppbmRleCBlMWNlODM4MTRjM2NhZDUwYzRiZDU5ZmJiMjhlMzdiZmYy
NDY2NDJmLi41MjJkYTg1Zjg1YzJkNzA0ZTY0M2ZlNzBjMjAxMjM1ODMyOGY0MmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5j
cHAKQEAgLTQwLDUyICs0MCw1OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChQdXNoU3Vic2NyaXB0aW9uKTsKIAotUHVzaFN1YnNjcmlwdGlvbjo6
UHVzaFN1YnNjcmlwdGlvbihTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRp
bWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVi
bGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKLSAgICA6IG1fZW5kcG9pbnQoV1RG
TW92ZShlbmRwb2ludCkpCi0gICAgLCBtX2V4cGlyYXRpb25UaW1lKGV4cGlyYXRpb25UaW1lKQot
ICAgICwgbV9vcHRpb25zKFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUoV1RGTW92ZShz
ZXJ2ZXJWQVBJRFB1YmxpY0tleSkpKQotICAgICwgbV9jbGllbnRFQ0RIUHVibGljS2V5KFdURk1v
dmUoY2xpZW50RUNESFB1YmxpY0tleSkpCi0gICAgLCBtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2Vj
cmV0KFdURk1vdmUoc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKQorUHVzaFN1YnNjcmlwdGlv
bjo6UHVzaFN1YnNjcmlwdGlvbihQdXNoU3Vic2NyaXB0aW9uRGF0YSYmIGRhdGEsIFJlZlB0cjxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKKyAgICA6IG1fZGF0YShX
VEZNb3ZlKGRhdGEpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFdURk1vdmUo
cmVnaXN0cmF0aW9uKSkKIHsKIH0KIAotUHVzaFN1YnNjcmlwdGlvbjo6UHVzaFN1YnNjcmlwdGlv
bihSZWY8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXRpb24sIFN0cmluZyYm
IGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgc2VydmVyVkFQSURQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYm
IGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIHNoYXJlZEF1dGhlbnRpY2F0
aW9uU2VjcmV0KQotICAgIDogbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFdURk1vdmUocmVn
aXN0cmF0aW9uKSkKLSAgICAsIG1fZW5kcG9pbnQoV1RGTW92ZShlbmRwb2ludCkpCi0gICAgLCBt
X2V4cGlyYXRpb25UaW1lKGV4cGlyYXRpb25UaW1lKQotICAgICwgbV9vcHRpb25zKFB1c2hTdWJz
Y3JpcHRpb25PcHRpb25zOjpjcmVhdGUoV1RGTW92ZShzZXJ2ZXJWQVBJRFB1YmxpY0tleSkpKQot
ICAgICwgbV9jbGllbnRFQ0RIUHVibGljS2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkp
Ci0gICAgLCBtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KFdURk1vdmUoc2hhcmVkQXV0aGVu
dGljYXRpb25TZWNyZXQpKQorUHVzaFN1YnNjcmlwdGlvbjo6flB1c2hTdWJzY3JpcHRpb24oKSA9
IGRlZmF1bHQ7CisKK2NvbnN0IFB1c2hTdWJzY3JpcHRpb25EYXRhJiBQdXNoU3Vic2NyaXB0aW9u
OjpkYXRhKCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9kYXRhOwogfQogCi1QdXNoU3Vic2NyaXB0
aW9uOjp+UHVzaFN1YnNjcmlwdGlvbigpID0gZGVmYXVsdDsKLQogY29uc3QgU3RyaW5nJiBQdXNo
U3Vic2NyaXB0aW9uOjplbmRwb2ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW5kcG9pbnQ7
CisgICAgcmV0dXJuIG1fZGF0YS5lbmRwb2ludDsKIH0KIAogc3RkOjpvcHRpb25hbDxFcG9jaFRp
bWVTdGFtcD4gUHVzaFN1YnNjcmlwdGlvbjo6ZXhwaXJhdGlvblRpbWUoKSBjb25zdAogewotICAg
IHJldHVybiBtX2V4cGlyYXRpb25UaW1lOworICAgIHJldHVybiBtX2RhdGEuZXhwaXJhdGlvblRp
bWU7CiB9CiAKIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zJiBQdXNoU3Vic2NyaXB0aW9uOjpvcHRp
b25zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcHRpb25zOworICAgIGlmICghbV9vcHRpb25z
KSB7CisgICAgICAgIGF1dG8ga2V5ID0gbV9kYXRhLnNlcnZlclZBUElEUHVibGljS2V5OworICAg
ICAgICBtX29wdGlvbnMgPSBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczo6Y3JlYXRlKFdURk1vdmUo
a2V5KSk7CisgICAgfQorCisgICAgcmV0dXJuICptX29wdGlvbnM7Cit9CisKK2NvbnN0IFZlY3Rv
cjx1aW50OF90PiYgUHVzaFN1YnNjcmlwdGlvbjo6Y2xpZW50RUNESFB1YmxpY0tleSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGF0YS5jbGllbnRFQ0RIUHVibGljS2V5OworfQorCitjb25zdCBW
ZWN0b3I8dWludDhfdD4mIFB1c2hTdWJzY3JpcHRpb246OnNoYXJlZEF1dGhlbnRpY2F0aW9uU2Vj
cmV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLnNoYXJlZEF1dGhlbnRpY2F0aW9uU2Vj
cmV0OwogfQogCiBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hTdWJz
Y3JpcHRpb246OmdldEtleShQdXNoRW5jcnlwdGlvbktleU5hbWUgbmFtZSkgY29uc3QKIHsKLSAg
ICBjb25zdCBWZWN0b3I8dWludDhfdD4gKnNvdXJjZSA9IG51bGxwdHI7CisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+KiBzb3VyY2UgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChuYW1lKSB7CiAg
ICAgY2FzZSBQdXNoRW5jcnlwdGlvbktleU5hbWU6OlAyNTZkaDoKLSAgICAgICAgc291cmNlID0g
Jm1fY2xpZW50RUNESFB1YmxpY0tleTsKKyAgICAgICAgc291cmNlID0gJmNsaWVudEVDREhQdWJs
aWNLZXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXNoRW5jcnlwdGlvbktleU5hbWU6
OkF1dGg6Ci0gICAgICAgIHNvdXJjZSA9ICZtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0Owor
ICAgICAgICBzb3VyY2UgPSAmc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTIsMTEg
KzExOSwxMSBAQCB2b2lkIFB1c2hTdWJzY3JpcHRpb246OnVuc3Vic2NyaWJlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogUHVzaFN1YnNjcmlwdGlvbkpTT04g
UHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKIHsKICAgICByZXR1cm4gUHVzaFN1YnNj
cmlwdGlvbkpTT04gewotICAgICAgICBtX2VuZHBvaW50LAotICAgICAgICBtX2V4cGlyYXRpb25U
aW1lLAorICAgICAgICBlbmRwb2ludCgpLAorICAgICAgICBleHBpcmF0aW9uVGltZSgpLAogICAg
ICAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gewotICAgICAgICAgICAg
eyAicDI1NmRoIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhtX2NsaWVudEVDREhQdWJsaWNL
ZXkpIH0sCi0gICAgICAgICAgICB7ICJhdXRoIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyht
X3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSB9CisgICAgICAgICAgICB7ICJwMjU2ZGgiX3Ms
IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNsaWVudEVDREhQdWJsaWNLZXkoKSkgfSwKKyAgICAg
ICAgICAgIHsgImF1dGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKHNoYXJlZEF1dGhlbnRp
Y2F0aW9uU2VjcmV0KCkpIH0KICAgICAgICAgfQogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCmluZGV4IDA5Y2MzYTBk
M2VhNDVjNzQ1MTlhYjc5OGZhNDgxYWRkMDExNjdmZDIuLmEzM2ZhMDBiMDg2NjUzNDhhZGVlZjc5
YzliMGRjMWQzYjc1MzM2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IlB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRh
LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkpTT04uaCIKIAogI2luY2x1ZGUgPG9wdGlv
bmFsPgpAQCAtNTEsMjQgKzUyLDI1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPiBzdGF0aWMgUmVmPFB1c2hTdWJzY3JpcHRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdXNoU3Vic2NyaXB0aW9uKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgflB1c2hTdWJzY3JpcHRpb24o
KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFB1c2hTdWJzY3JpcHRpb25EYXRhJiBkYXRh
KCkgY29uc3Q7CisKICAgICBjb25zdCBTdHJpbmcmIGVuZHBvaW50KCkgY29uc3Q7CiAgICAgc3Rk
OjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUoKSBjb25zdDsKICAgICBQ
dXNoU3Vic2NyaXB0aW9uT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0OworICAgIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY2xpZW50RUNESFB1YmxpY0tleSgpIGNvbnN0OworICAgIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQoKSBjb25zdDsKKwogICAgIEV4
Y2VwdGlvbk9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZ2V0S2V5KFB1c2hFbmNyeXB0aW9u
S2V5TmFtZSkgY29uc3Q7CiAgICAgdm9pZCB1bnN1YnNjcmliZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwogCiAgICAgUHVzaFN1YnNj
cmlwdGlvbkpTT04gdG9KU09OKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUHVzaFN1YnNjcmlwdGlvbihTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9j
aFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElE
UHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8
dWludDhfdD4mJiBhdXRoKTsKLSAgICBQdXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uPiYmLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRp
bWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVi
bGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBhdXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQdXNoU3Vic2NyaXB0
aW9uKFB1c2hTdWJzY3JpcHRpb25EYXRhJiYsIFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uPiYmID0gbnVsbHB0cik7CiAKKyAgICBQdXNoU3Vic2NyaXB0aW9uRGF0YSBtX2RhdGE7CiAg
ICAgUmVmUHRyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IG1fc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjsKLSAgICBTdHJpbmcgbV9lbmRwb2ludDsKLSAgICBzdGQ6Om9wdGlvbmFsPEVwb2No
VGltZVN0YW1wPiBtX2V4cGlyYXRpb25UaW1lOwotICAgIFJlZjxQdXNoU3Vic2NyaXB0aW9uT3B0
aW9ucz4gbV9vcHRpb25zOwotICAgIFZlY3Rvcjx1aW50OF90PiBtX2NsaWVudEVDREhQdWJsaWNL
ZXk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7Cisg
ICAgbXV0YWJsZSBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEkuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVz
aEFQSS5pZGwKaW5kZXggZWNhYjY1MDA5Mjc4MWI2ZDM5MDQwZWFjOTNkMGE5MGI2NDRlNzNkYS4u
YWEwNTAxOGJjN2M2YmY3N2Q4MWVlNTM2YzU5MzhjMzQ2OWM4YTFlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVz
aEFQSS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKQEAgLTI3LDQgKzI3LDUgQEAKICAgICBFbmFibGVk
QXRSdW50aW1lPVNlcnZpY2VXb3JrZXJFbmFibGVkCiBdIHBhcnRpYWwgaW50ZXJmYWNlIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnB1c2g7
CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CmluZGV4IDI2MWQ4OTM0NmZmYjQzNDY2ZmRhM2UxNTUxZDI2MmVmOTZhNjllYjguLmViNDM1NDVk
OWI1MDE4MTBjYjFkYjJiZGZmMDVmNGM2ZmMxNDMyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ1Myw2ICs0NTMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJlZSkg
XAogICAgIG1hY3JvKG1lZGlhU3RyZWFtVHJhY2tDb25zdHJhaW50cykgXAogICAgIG1hY3JvKG9u
cHVzaCkgXAorICAgIG1hY3JvKG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSkgXAogICAgIG1hY3Jv
KG9ucnRjdHJhbnNmb3JtKSBcCiAgICAgbWFjcm8ob250b3VjaGNhbmNlbCkgXAogICAgIG1hY3Jv
KG9udG91Y2hlbmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGUxZmE0ZDM5YzFjN2M1
OWI1MDAzNmY2MGVhNDhmYjFhMDFlOTlkNzQuLmZmZjdiODNmY2UzMjJiODI1ZjM4NmY4MjI5MTA5
MTNjM2JiZDM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjIyLDYgKzIyMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhwcm9jZXNzb3JlcnJvcikgXAogICAgIG1h
Y3JvKHByb2dyZXNzKSBcCiAgICAgbWFjcm8ocHVzaCkgXAorICAgIG1hY3JvKHB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhyYXRlY2hhbmdlKSBcCiAgICAgbWFjcm8ocmVhZHlz
dGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlamVjdGlvbmhhbmRsZWQpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhNWVjZTA4MTBiZmVlNDYwMWQwMGVkYzZiYzVkN2Fk
ZTAxMDVjN2QwLi5lOWIxZTg0M2E5NWVjYzQ5NTUzMTJlM2UwYWUwMjk2ZWNjMGNlMTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjUsNiArMTY1LDcgQEAKICNpbmNs
dWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgpAQCAtMTk0LDYgKzE5NSw3IEBACiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAt
NjU5Nyw3ICs2NTk5LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IEludGVybmFsczo6Y3Jl
YXRlUHVzaFN1YnNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGVuZHBvaW4KICAgICBWZWN0b3I8dWlu
dDhfdD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNsaWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNESFB1YmxpY0tleS5ieXRlTGVu
Z3RoKCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3RoKCkgfTsKIAotICAgIHJldHVy
biBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlv
blRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSksIFdURk1vdmUobXlDbGllbnRF
Q0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpKTsKKyAgICByZXR1cm4gUHVzaFN1YnNjcmlw
dGlvbjo6Y3JlYXRlKFB1c2hTdWJzY3JpcHRpb25EYXRhIHsgV1RGTW92ZShteUVuZHBvaW50KSwg
ZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSksIFdURk1vdmUo
bXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpIH0pOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CmluZGV4IDhjNjc3NTk5NTA0OGJjMmVjNzNjYzUyZmM3Njc2MWMzOGJmN2I0NDAuLjYyNTI4ZGEy
MDZmYTNiZTM2MjgwN2U0NWVlZDBmODVjZGRmNTg0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtMzEsNyArMzEsOSBAQAog
I2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRh
dGEuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODIsNiArODQsMjEgQEAgdm9pZCBTZXJ2aWNlV29ya2VySW50ZXJu
YWxzOjpzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxEZWYK
ICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudChQdXNoU3Vic2NyaXB0aW9uKiBuZXdTdWJzY3JpcHRpb24s
IFB1c2hTdWJzY3JpcHRpb24qIG9sZFN1YnNjcmlwdGlvbikKK3sKKyAgICBzdGQ6Om9wdGlvbmFs
PFB1c2hTdWJzY3JpcHRpb25EYXRhPiBuZXdTdWJzY3JpcHRpb25EYXRhOworICAgIHN0ZDo6b3B0
aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+IG9sZFN1YnNjcmlwdGlvbkRhdGE7CisKKyAgICBp
ZiAobmV3U3Vic2NyaXB0aW9uKQorICAgICAgICBuZXdTdWJzY3JpcHRpb25EYXRhID0gbmV3U3Vi
c2NyaXB0aW9uLT5kYXRhKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWYgKG9sZFN1YnNjcmlwdGlv
bikKKyAgICAgICAgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IG9sZFN1YnNjcmlwdGlvbi0+ZGF0YSgp
Lmlzb2xhdGVkQ29weSgpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IG1f
aWRlbnRpZmllciwgbmV3U3Vic2NyaXB0aW9uRGF0YSA9IFdURk1vdmUobmV3U3Vic2NyaXB0aW9u
RGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEp
XSgpIG11dGFibGUgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KGlkZW50aWZpZXIsIFdURk1vdmUobmV3U3Vic2Ny
aXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworICAgIH0pOworfQor
CiB2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OndhaXRGb3JGZXRjaEV2ZW50VG9GaW5pc2go
RmV0Y2hFdmVudCYgZXZlbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmV0Y2hS
ZXNwb25zZT4+JiYgcHJvbWlzZSkKIHsKICAgICBldmVudC5vblJlc3BvbnNlKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgZXZlbnQgPSBSZWYgeyBldmVudCB9XSAoYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CkBAIC0xNjgsNyArMTg1LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IFNl
cnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24oY29uc3QgU3QKICAg
ICBWZWN0b3I8dWludDhfdD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGNsaWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNESFB1Ymxp
Y0tleS5ieXRlTGVuZ3RoKCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3RoKCkgfTsK
IAotICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVuZHBvaW50
KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSksIFdURk1v
dmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpKTsKKyAgICByZXR1cm4g
UHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFB1c2hTdWJzY3JpcHRpb25EYXRhIHsgV1RGTW92ZSht
eUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tl
eSksIFdURk1vdmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpIH0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IDEzOGIyNzFkMzE4ZmJiMzBlNjcxMDQ1Yjll
OWE0MWM0NTRmYjljNjAuLmEwYWUzYzQwY2M0ZGFmMjc3NTVjMTQ2Y2QxYTVlOWE2MDZmMDBjOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5o
CkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRl
T3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAg
ICAgdm9pZCBzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmLCBSZWZQdHI8RGVmZXJyZWRQ
cm9taXNlPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
KFB1c2hTdWJzY3JpcHRpb24qIG5ld1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlwdGlvbiogb2xk
U3Vic2NyaXB0aW9uKTsKICAgICBWZWN0b3I8U3RyaW5nPiBmZXRjaFJlc3BvbnNlSGVhZGVyTGlz
dChGZXRjaFJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmlu
ZGV4IDg0NjQ1NWM2MjY4Zjg1YzlmYjE1OTg4ZjNhZWExM2VjOTFiZDc3MzIuLmVhYmM2NTM0ZDc1
OTBjNjBiOGFkNWFmZGRiZDlhODQ3MzMyM2U5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtMzksNiArMzksNyBAQAogICAg
IHNlcXVlbmNlPEJ5dGVTdHJpbmc+IGZldGNoUmVzcG9uc2VIZWFkZXJMaXN0KEZldGNoUmVzcG9u
c2UgcmVzcG9uc2UpOwogCiAgICAgUHJvbWlzZTxib29sZWFuPiBzY2hlZHVsZVB1c2hFdmVudChv
cHRpb25hbCBET01TdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNjaGVkdWxlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KFB1c2hTdWJzY3JpcHRpb24/IG5ld1N1YnNjcmlwdGlvbiwgUHVz
aFN1YnNjcmlwdGlvbj8gb2xkU3Vic2NyaXB0aW9uKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgcHJvY2Vzc05hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNUaHJvdHRsZWFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggZGM3OTIyMjczODBjOWMwMzQy
ZGNkODlmMWRkNzA4MWU3OTUxN2JmOS4uNDk1ZmRjYmRhOTVjODVkZDcxZjEyMjM2ZmVmZjI3YzZl
MmYyNWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNTUyLDExICs1NTIsNiBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uJiByZWdpcwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9u
LmlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyBSZWY8UHVzaFN1YnNjcmlwdGlvbj4gY3JlYXRl
UHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBy
ZWdpc3RyYXRpb24sIFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSkKLXsKLSAgICByZXR1cm4g
UHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUocmVnaXN0cmF0aW9uKSwgV1RGTW92ZShk
YXRhLmVuZHBvaW50KSwgZGF0YS5leHBpcmF0aW9uVGltZSwgV1RGTW92ZShkYXRhLnNlcnZlclZB
UElEUHVibGljS2V5KSwgV1RGTW92ZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3Zl
KGRhdGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKTsKLX0KLQogdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNl
cnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9u
Pj4mJiBwcm9taXNlKQogewogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLnN1YnNjcmli
ZVRvUHVzaFNlcnZpY2UocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgYXBwbGljYXRpb25TZXJ2
ZXJLZXksIFtwcm90ZWN0ZWRSZWdpc3RyYXRpb24gPSBSZWYgeyByZWdpc3RyYXRpb24gfSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewpAQCAtNTY1
LDcgKzU2MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3Vic2NyaWJlVG9QdXNo
U2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNo
U3Vic2NyaXB0aW9uRnJvbURhdGEoV1RGTW92ZShwcm90ZWN0ZWRSZWdpc3RyYXRpb24pLCByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1c2hT
dWJzY3JpcHRpb246OmNyZWF0ZShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUo
cHJvdGVjdGVkUmVnaXN0cmF0aW9uKSkpOwogICAgIH0pOwogfQogCkBAIC01OTAsNyArNTg1LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2kKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURh
dGEoV1RGTW92ZShwcm90ZWN0ZWRSZWdpc3RyYXRpb24pLCBXVEZNb3ZlKCpvcHRpb25hbFB1c2hT
dWJzY3JpcHRpb25EYXRhKSkucHRyKCkpOworICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVzaFN1
YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUoKm9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEp
LCBXVEZNb3ZlKHByb3RlY3RlZFJlZ2lzdHJhdGlvbikpLnB0cigpKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggNWEzNDJmZGZmOWFjZTA1MGY0NjZmMDZlMmM5MjYyZTQ4
YjdmODkxMy4uODllYzk3M2Y1ZmY2N2EzNmM3YTE0Yzk2ZjBhNTZkMTg3YTM0OTlmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgU2VydmljZVdvcmtlcjsK
IGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uPiwgcHVibGljIFN1cHBsZW1lbnRhYmxlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+LCBw
dWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKTsK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLCBXRUJDT1JFX0VYUE9SVCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uPiBnZXRPckNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVm
PFNlcnZpY2VXb3JrZXJDb250YWluZXI+JiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
JiYpOwogCi0gICAgflNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cmF0aW9uRGF0YS5pZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNTEw
NDUzNGU1NWY5MWVhYWM2MjQxMTcyYzhhODIxMThiM2Y4YTRkYy4uNGNlZThkZmQ0ZDIzZDJiY2Yz
ZTllM2YxZWI2NzM0NjI5YzMyNTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTEyMCw2
ICsxMjAsMTUgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3AKICAgICBzZXJ2aWNlV29ya2VyLT5m
aXJlUHVzaEV2ZW50KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlw
dGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2Ny
aXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKQoreworICAgIGF1dG8qIHNlcnZpY2VX
b3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzZXJ2aWNlV29y
a2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2VyLT5maXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUo
b2xkU3Vic2NyaXB0aW9uRGF0YSkpOworfQorCiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVy
bWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uZHMg
dGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oCmluZGV4IGM3NjVjNTdkMjAyM2YxNGNhYmJiZGJiOTBiNjgzZWE2NTQ1NzA3Y2Iu
LjI5NWRkZjBkNGY2MDY1ZWFhMjEwMTdjOGMxNTRjZWYwYmRlM2Q4MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50
aWZpZXIuaCIKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9u
YWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNj
cmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGY2ZGRmODhiYzMyMzRjNDU4OWUz
NDJhZWY3MjE1MjcyYTg4OGY1MDIuLjFhNzE3MmU3NTk0Y2IyMjgyZmJlZDkwNzM0M2FjYTgwMjA3
OTBmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIlB1c2hFdmVudC5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKKyNpbmNs
dWRlICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJTV0NvbnRleHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRmV0Y2guaCIKQEAgLTIzNSw2ICsyMzcsMzMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4KICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0
aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3Jp
cHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpCit7CisgICAgUmVmIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmdsb2Jh
bFNjb3BlKCkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVl
dWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbmV3U3Vic2NyaXB0aW9uRGF0YSA9
IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBXVEZN
b3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBSRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2
NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisKKyAgICAgICAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG5ld1N1YnNjcmlwdGlv
bjsKKyAgICAgICAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG9sZFN1YnNjcmlwdGlvbjsKKwor
ICAgICAgICBpZiAobmV3U3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG5ld1N1YnNjcmlw
dGlvbiA9IFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKCpuZXdTdWJzY3JpcHRpb25E
YXRhKSwgJnNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+cmVnaXN0cmF0aW9uKCkpOworICAgICAg
ICBpZiAob2xkU3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG9sZFN1YnNjcmlwdGlvbiA9
IFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKCpvbGRTdWJzY3JpcHRpb25EYXRhKSk7
CisKKyAgICAgICAgYXV0byBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgPSBQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVzaHN1YnNjcmlwdGlvbmNo
YW5nZUV2ZW50LCB7IH0sIFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwgV1RGTW92ZShvbGRTdWJz
Y3JpcHRpb24pLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICAgICAgc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCk7CisKKyAgICAgICAgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LT53aGVuQWxs
RXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyldKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCBmaW5pc2hpbmcgZm9yIHdvcmtlciAlbGx1Iiwgd2Vh
a1RoaXMgPyB3ZWFrVGhpcy0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwKTsKKyAgICAgICAg
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5maW5p
c2hlZEZpcmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZp
bmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKGdsb2JhbFNjb3BlKCktPmlz
Q29udGV4dFRocmVhZCgpKTsKQEAgLTI5NSw3ICszMjQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIoKQogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpo
ZWFydEJlYXRUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIW1fb25nb2luZ0hlYXJ0QmVhdENoZWNr
KSB7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8IG1fc3RhdGUg
PT0gU3RhdGU6OkFjdGl2YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8fCBtX2lzSGFu
ZGxpbmdQdXNoRXZlbnQgfHwgbV9tZXNzYWdlRXZlbnRDb3VudCkKKyAgICAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8
fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ1B1c2hFdmVudCB8fCBtX3B1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCiAg
ICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zNjIsNiArMzkxLDE4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRG
aXJpbmdNZXNzYWdlRXZlbnQoKQogICAgIC0tbV9tZXNzYWdlRXZlbnRDb3VudDsKIH0KIAordm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQoKQoreworICAgIGlmICghbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRD
b3VudCsrKQorICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQo
KQoreworICAgIEFTU0VSVChtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50KTsKKyAg
ICAtLW1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQ7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaAppbmRleCAwNjgxYjMzY2ZjY2FiZjM5MDBhNzQ3ZjcwZTExNTg3MjEwOGMw
MGJjLi43NjMxNGYyZDI2ZDcyMzQ1Y2VhMmUxNWViODJiZGUwMDEyM2U1NTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCkBAIC02MSwxMiArNjIsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCk7CiAg
ICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxs
UG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmly
ZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogCiAgICAgdm9pZCBxdWV1ZVRhc2tUb0Zp
cmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJik7CiAgICAgdm9pZCBxdWV1ZVRhc2tU
b1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJPckNs
aWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUluc3RhbGxF
dmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIHZv
aWQgcXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25E
YXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlv
bkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBq
b2JEYXRhSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YUlkZW50aWZpZXI7IH0K
QEAgLTkwLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaGVkRmlyaW5nSW5zdGFs
bEV2ZW50KGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKICAgICB2b2lkIGZpbmlzaGVkRmly
aW5nQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgZmluaXNoZWRGaXJpbmdNZXNzYWdlRXZlbnQo
KTsKKyAgICB2b2lkIGZpbmlzaGVkRmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7
CiAgICAgdm9pZCBmaW5pc2hlZFN0YXJ0aW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0SGVhcnRCZWF0
VGltZXIoKTsKQEAgLTEwNSw2ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzSGFu
ZGxpbmdGZXRjaEV2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNIYW5kbGluZ1B1c2hFdmVu
dCB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRD
b3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21lc3NhZ2VFdmVudENvdW50IHsgMCB9OwogICAg
IGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBTdGFydGluZywgSW5zdGFsbGluZywgQWN0aXZhdGlu
ZyB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggMDczYjQyZTkzNmViZmRlMTliOTVlYWY1MTA1ODUw
ZTI0YTliOTRjZC4uODhjMzI4ZDE1NzBlNTUwZGQ0YzVkMDRlZDMwYTg0NTBhODNmNmRlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1Ro
cmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KIApAQCAtMzIwLDYgKzMyMSwxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6ZmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBk
YQogICAgICAgICBtX29uZ29pbmdQdXNoVGFza3MudGFrZShpZGVudGlmaWVyKShmYWxzZSk7CiB9
CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2Ny
aXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJz
Y3JpcHRpb25EYXRhKQoreworICAgIHRocmVhZCgpLndpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5ld1N1YnNjcmlwdGlvbkRhdGEg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShuZXdTdWJzY3JpcHRpb25EYXRhKSksIG9sZFN1YnNj
cmlwdGlvbkRhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvbGRTdWJzY3JpcHRpb25EYXRh
KSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJlUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIFdU
Rk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGNlZmJjNWUxNjM2OGMzOGE4M2E3ZTExNWZkNTc0
NzJjYWY1YzViOTguLmU1YjJiNmUyMzU5YmQyNmU5N2I5OTZkNTM4YzljZGUyN2M5OGJkZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGZXRjaElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyRGVidWdnYWJsZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC04MSw2
ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIGZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFs
PFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpOwogCiAgICAgdm9p
ZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlw
dEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjUxZmZkNGEzZWZiMjU5Y2E3
Y2I4OTQxNDRmZGFkNWU0Zjg2NTA5My4uOGQ3NGMxYzI3ZDJkZDY1OTJlNGM2ZjdiYzMwMGNmNTk0
OTlhODU0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTExLTEzICBCZW4gTmhhbSAgPG5o
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hzdWJzY3JpcHRp
b25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICAgLSBNb2RpZmllZCB0aGUgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZSB0ZXN0
IHRvIHNlbmQgYSByZWFsIGV2ZW50IHRvIHRoZSBzZXJ2aWNlIHdvcmtlci4KKyAgICAgICAgIC0g
TW9kaWZpZWQgdGhlIHNlcnZpY2Ugd29ya2VyIHNwaW5uaW5nIHRlc3RzIHRvIHRlc3QgZm9yIGd1
YXJkaW5nIGFnYWluc3QgaW5maW5pdGUgbG9vcHMgaW4KKyAgICAgICAgICAgdGhlIHB1c2ggYW5k
IHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcnMuCisKKyAgICAgICAgTm90ZSB0
aGF0IHRoZSBleGlzdGluZyBzcGlubmluZyB0ZXN0cyBhcmUgbWFya2VkIGFzIGZsYWt5IG9uIGlv
cy13azIuIFdlIGRvIHRoZSBzYW1lIGhlcmUKKyAgICAgICAgc2luY2UgdGhlIHRlc3QgcGFzc2Vz
IGxvY2FsbHkgYnV0IGlzIGZsYWt5IGluIEVXUy4KKworICAgICAgICAqIGh0dHAvd3B0L3B1c2gt
YXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanM6CisgICAgICAgIChwcm9taXNl
X3Rlc3QpOgorICAgICAgICAoYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKToKKyAgICAgICAg
KHRlc3QpOiBEZWxldGVkLgorICAgICAgICAocHJvbWlzZV90ZXN0LmFzeW5jIG5ld1N1YnNjcmlw
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChwcm9taXNlX3Rlc3QuYXN5bmMgcmV0dXJuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanM6CisgICAgICAgIChhc3luYyBz
ZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1
c2guaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
c3Bpbm5pbmctd29ya2VyLmpzOgorICAgICAgICAocmVzcG9uZFRvUGVuZGluZ0V2ZW50KToKKyAg
ICAgICAgKHB1c2hUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTExLTE3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaWZyYW1lLWVsZW1lbnQvaWZy
YW1lX3NhbmRib3hfd2luZG93X29wZW5fZG93bmxvYWRfYmxvY2tfZG93bmxvYWRzLnRlbnRhdGl2
ZS5odG1sIGlzIGZyZXF1ZW50bHkgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
aW5kZXggYWY4MGMzN2Q5YmVjYjA5YTUwOTdkMjU2M2I1MTg5ZmFlNjUyMjg2Yi4uZDQxNjg3MTk1
YzE2N2M0M2FjZmI4OWMyZWI2OWVmZTcyNTkxMGFlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMTMgIEJlbiBOaGFtICA8bmhhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSBldmVudCBoYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwODgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisg
ICAgICAgIFJlYmFzZWxpbmUgdGVzdCByZXN1bHRzIHNpbmNlIHdlIG5vdyBzdXBwb3J0IG9ucHVz
aHN1YnNjcmlwdGlvbmNoYW5nZS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9wdXNo
LWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dDoKKwog
MjAyMS0xMS0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBMb2NrcyBBUEkgZG9lcyBnZXQgZW5hYmxlZCBpbiBTZXJ2aWNlIFdvcmtlcnMgd2hlbiBydW5u
aW5nIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuanMKaW5kZXggODJj
NDIxZjVhZjIxMDBlYjk5MjRkNTU1NGRmODcwNTEwYjA0Nzc1NS4uOGMzNGQzNDQ3NDU5NWJjYWNk
NDE4OTQ4N2FjNmM1YjY4OWJjMjIyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
cHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55Lmpz
CkBAIC0yLDI3ICsyLDIzIEBACiAvLyBNRVRBOiBnbG9iYWw9c2VydmljZXdvcmtlcgogLy8gTUVU
QTogc2NyaXB0PWNvbnN0YW50cy5qcwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBu
ZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIik7
Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9sZCIpOwot
fSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IGRhdGEiKTsKLQotdGVzdCgo
KSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgi
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9uOiBudWxsLCBvbGRTdWJz
Y3JpcHRpb246IG51bGwgfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRp
b24sIG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlv
biwgbnVsbCwgIm9sZCIpOwotfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0
IHN1YnNjcmlwdGlvbnMiKTsKK2xldCBhY3RpdmF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNlbGYub25hY3RpdmF0ZSA9IHJlc29sdmUpOworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgIHJldHVybiBhY3RpdmF0ZVByb21pc2U7Cit9LCAid2FpdCBmb3IgYWN0aXZlIHNlcnZpY2Ug
d29ya2VyIik7CiAKIGxldCBuZXdTdWJzY3JpcHRpb24gPSBudWxsOwogbGV0IG9sZFN1YnNjcmlw
dGlvbiA9IG51bGw7CiAKLWxldCBhY3RpdmF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHNlbGYub25hY3RpdmF0ZSA9IHJlc29sdmUpOwotcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+
IHsKLSAgIHJldHVybiBhY3RpdmF0ZVByb21pc2U7Ci19LCAid2FpdCBmb3IgYWN0aXZlIHNlcnZp
Y2Ugd29ya2VyIik7CitmdW5jdGlvbiBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoYSwgYiwg
cmVhc29uKQoreworICAgIGlmICghYSB8fCAhYikKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhLCBi
LCByZWFzb24pOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhKU09OLnN0cmluZ2lm
eShhLnRvSlNPTigpKSwgSlNPTi5zdHJpbmdpZnkoYi50b0pTT04oKSksIHJlYXNvbik7Cit9CiAK
LXByb21pc2VfdGVzdChhc3luYygpID0+IHsKK3Byb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgbmV3
U3Vic2NyaXB0aW9uID0gc2VsZi5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNjcmlwdGlvbihFTkRQ
T0lOVCwgRVhQSVJBVElPTl9USU1FLCBWQUxJRF9TRVJWRVJfS0VZLCBDTElFTlRfS0VZXzEsIEFV
VEgpOwogICAgIG9sZFN1YnNjcmlwdGlvbiA9IHNlbGYuaW50ZXJuYWxzLmNyZWF0ZVB1c2hTdWJz
Y3JpcHRpb24oRU5EUE9JTlQsIEVYUElSQVRJT05fVElNRSwgVkFMSURfU0VSVkVSX0tFWSwgQ0xJ
RU5UX0tFWV8yLCBBVVRIKTsKIApAQCAtMzIsMjAgKzI4LDMwIEBAIHByb21pc2VfdGVzdChhc3lu
YygpID0+IHsKICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKCkpOwog
fSwgImNyZWF0ZSBzdWJzY3JpcHRpb25zIik7CiAKLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVu
dCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UiLCB7IG5ld1N1YnNjcmlwdGlvbiB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm5ld1N1
YnNjcmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhl
dmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKK3Byb21pc2VfdGVzdChhc3luYygp
ID0+IHsKKyAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudChudWxsLCBudWxsKTsKKyAgICBsZXQgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgYXNz
ZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbnVsbCwgIm5l
dyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5vbGRTdWJzY3JpcHRp
b24sIG51bGwsICJvbGQiKTsKK30sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91
dCBzdWJzY3JpcHRpb25zIik7CisKK3Byb21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxm
LmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChuZXdTdWJzY3Jp
cHRpb24sIG51bGwpOworICAgIGxldCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gc2VsZi5vbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRT
dWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRp
b24sICJuZXciKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vi
c2NyaXB0aW9uLCBudWxsLCAib2xkIik7CiB9LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
IHdpdGggbmV3IHN1YnNjcmlwdGlvbiIpOwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQg
PSBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdl
IiwgeyBvbGRTdWJzY3JpcHRpb24gfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJz
Y3JpcHRpb24sIG51bGwsICJuZXciKTsKLSAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Lm9sZFN1YnNj
cmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uLCAib2xkIik7Citwcm9taXNlX3Rlc3QoYXN5bmMoKSA9
PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQobnVsbCwgb2xkU3Vic2NyaXB0aW9uKTsKKyAgICBsZXQgZXZlbnQgPSBhd2FpdCBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlID0gcmVzb2x2ZSk7
CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwg
bnVsbCwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5vbGRT
dWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwgIlB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudCB3aXRoIG9sZCBzdWJzY3JpcHRpb24iKTsKIAotdGVzdCgoKSA9PiB7Ci0g
ICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzaHN1YnNj
cmlwdGlvbmNoYW5nZSIsIHsgbmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJzY3JpcHRpb24gfSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG5ld1N1YnNjcmlwdGlvbiwg
Im5ldyIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBvbGRTdWJz
Y3JpcHRpb24sICJvbGQiKTsKK3Byb21pc2VfdGVzdChhc3luYygpID0+IHsKKyAgICBzZWxmLmlu
dGVybmFscy5zY2hlZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChuZXdTdWJzY3JpcHRp
b24sIG9sZFN1YnNjcmlwdGlvbik7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiBzZWxmLm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOworICAg
IGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVudC5uZXdTdWJzY3JpcHRpb24sIG5ld1N1
YnNjcmlwdGlvbiwgIm5ldyIpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVFcXVhbChldmVu
dC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlwdGlvbiwgIm9sZCIpOwogfSwgIlB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBhbmQgb2xkIHN1YnNjcmlwdGlvbiIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2VydmljZXdv
cmtlci1leHBlY3RlZC50eHQKaW5kZXggOTVmYTJiMTc0NzJlMjdmNDYzZWMxY2FiMTYyMDI2Mzlh
YTZiZTBhYi4uMjkxNmIyNmUwNTgyYjU3NmE1NDZkYTg4MjdkZjU3NDg4MDZkMWRjNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3
b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsNyBAQAogCi1QQVNTIFB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudCB3aXRob3V0IGRhdGEKLVBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyB3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3
b3JrZXIKIFBBU1MgY3JlYXRlIHN1YnNjcmlwdGlvbnMKK1BBU1MgUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucwogUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQgd2l0aCBuZXcgc3Vic2NyaXB0aW9uCiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCB3aXRoIG9sZCBzdWJzY3JpcHRpb24KIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50IHdpdGggbmV3IGFuZCBvbGQgc3Vic2NyaXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcwpp
bmRleCA3NjQ5NzA5MGU2MDhjNGYxNWRjZjRkZjcyYmFmMGM3YzlhYTllMWU0Li5lMzYzMzBjM2Q0
Yjk1NTVlNzIzZGMxOWVhNTk0MzAyZDg2MjdmZjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKQEAg
LTI4LDYgKzI4LDE4IEBAIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZSh3b3JrZXIsIHN0YXRlKQogICAg
IH0pOwogfQogCithc3luYyBmdW5jdGlvbiBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCBtZXNzYWdl
TmFtZSwgdGltZW91dCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdCgicmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICBjb25zdCBj
aGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgY29uc3QgcmVjZWl2ZWRNZXNzYWdl
ID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IHJlc29s
dmUpOworICAgIGNvbnN0IHRpbWVkT3V0ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4gc2V0VGltZW91dChyZWplY3QsIHRpbWVvdXQgfHwgNTAwMCkpOworICAgIHdvcmtlci5wb3N0
TWVzc2FnZShtZXNzYWdlTmFtZSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICByZXR1cm4gUHJvbWlz
ZS5yYWNlKFtyZWNlaXZlZE1lc3NhZ2UsIHRpbWVkT3V0XSk7Cit9CisKIGFzeW5jIGZ1bmN0aW9u
IHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcikKIHsKICAgICBpZiAo
IXdpbmRvdy5pbnRlcm5hbHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
c3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmYjljZTViZjcy
OTUwODgxMjFkY2VhMDU1OWVlNTQ2ZTI5Y2QzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNo
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTcGluIGluIHB1c2gK
K1BBU1MgU3BpbiBhZnRlciBwdXNoCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctcHVzaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzQ1N2M3ODRmZmU0ZWJjYTI5MDc5
M2ZhZTk0NmEyZDUwZjRkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1s
CkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgU2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dD10cnVlIF0gLS0+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBj
b25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXB1
c2giIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisg
ICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVk
Iik7CisKKyAgICBhd2FpdCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaCIpOworCisgICAg
cmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAi
U3BpbiBpbiBwdXNoIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNv
bnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0
ZXItcHVzaCIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3Rp
dmF0ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNoIik7CisK
KyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsK
K30sICJTcGluIGFmdGVyIHB1c2giKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRiM2ZiMGNmZjA0NTU0MWU3Y2JkZDFhYWRmY2E1ZWYyZjFiMGYyZDMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
c3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlvbmNoYW5nZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBwdXNoc3Vic2NyaXB0aW9uY2hhbmdlCitQQVNTIFNw
aW4gYWZ0ZXIgcHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1
YnNjcmlwdGlvbmNoYW5nZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2Uu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzA4MjljYzczMzE3NTI0NjI1YTAzY2Y3OTc3YTE1ODQ1
NGMyYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0
cHMuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIFNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQ9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAi
c3Bpbi1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdp
c3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRp
b24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNNZXNzYWdl
KHdvcmtlciwgInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsKKworICAgIHJldHVybiB3YWl0Rm9y
U2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gcHVzaHN1
YnNjcmlwdGlvbmNoYW5nZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGlu
LWFmdGVyLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJl
Z2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJh
dGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBhd2FpdCBzZW5kU3luY01lc3Nh
Z2Uod29ya2VyLCAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOworCisgICAgcmV0dXJuIHdhaXRG
b3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBw
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCmluZGV4IDVlZjgzNzkxYjc5
N2ViODFlYzAyNDNhODE3MzE3ODM4YjI0MmViZjQuLmZiZGZmZDIxOTk0MjI3YjBkMTg5OTUwMjBh
MGFiZjFiNGE2M2MxYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtl
ci5qcwpAQCAtMSwzICsxLDE0IEBACitsZXQgcGVuZGluZ0V2ZW50ID0gbnVsbDsKKworZnVuY3Rp
b24gcmVzcG9uZFRvUGVuZGluZ0V2ZW50KCkKK3sKKyAgICBpZiAoIXBlbmRpbmdFdmVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGVuZGluZ0V2ZW50LnBvcnRzWzBdLnBvc3RNZXNzYWdlKCdy
ZWNlaXZlZCcpOworICAgIHBlbmRpbmdFdmVudCA9IG51bGw7Cit9CisKIGlmIChzZWxmLnJlZ2lz
dHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1ydW4iKSkKICAgICB3aGlsZSh0cnVlKSB7IH07
CiAKQEAgLTE5LDYgKzMwLDE3IEBAIGZ1bmN0aW9uIGFjdGl2YXRlVGVzdChldmVudCkKIAogZnVu
Y3Rpb24gbWVzc2FnZVRlc3QoZXZlbnQpCiB7CisgICAgc3dpdGNoIChldmVudC5kYXRhKSB7Cisg
ICAgY2FzZSAicHVzaCI6CisgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaEV2ZW50
KCJ0ZXN0Iik7CisgICAgICAgIHBlbmRpbmdFdmVudCA9IGV2ZW50OworICAgICAgICByZXR1cm47
CisgICAgY2FzZSAicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSI6CisgICAgICAgIHNlbGYuaW50ZXJu
YWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51bGwsIG51bGwpOworICAg
ICAgICBwZW5kaW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1tZXNzYWdlIikpCiAg
ICAgICAgIHdoaWxlKHRydWUpIHsgfTsKICAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUu
aW5jbHVkZXMoInNwaW4tYWZ0ZXItbWVzc2FnZSIpKQpAQCAtMzQsOCArNTYsMjkgQEAgZnVuY3Rp
b24gZmV0Y2hUZXN0KGV2ZW50KQogICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZSgi
b2siKSk7CiB9CiAKK2Z1bmN0aW9uIHB1c2hUZXN0KGV2ZW50KQoreworICAgIHJlc3BvbmRUb1Bl
bmRpbmdFdmVudCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVz
KCJzcGluLXB1c2giKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OworICAgIGlmIChzZWxmLnJl
Z2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1wdXNoIikpCisgICAgICAgIHNl
bGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CisKK2Z1bmN0
aW9uIHB1c2hTdWJzY3JpcHRpb25DaGFuZ2VUZXN0KGV2ZW50KQoreworICAgIHJlc3BvbmRUb1Bl
bmRpbmdFdmVudCgpOworCisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVz
KCJzcGluLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9
OworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1w
dXNoc3Vic2NyaXB0aW9uY2hhbmdlIikpCisgICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7
IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiaW5z
dGFsbCIsIGluc3RhbGxUZXN0KTsKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiYWN0aXZhdGUiLCBh
Y3RpdmF0ZVRlc3QpOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbWVzc2FnZVRl
c3QpOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNoVGVzdCk7CitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoInB1c2giLCBwdXNoVGVzdCk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
InB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlVGVzdCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1
c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxo
YXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA2MzNhZDc3
ODMyZjk0NTNlOThlZThjMmFjNjU5ZDRhMTNkMDlmYTVmLi5lMGI1ZTU0YTg2M2ZkZWU3OGVkMTIy
MTFlNjljNDY5ZmRlMWNmNjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBpL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3
b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTgwLDcgKzgwLDcgQEAgUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQgaW50ZXJmYWNlOiBuZXcgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCJwdXMKIFBB
U1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBwdXNoTWFu
YWdlcgogUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogcmVnaXN0cmF0
aW9uIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAicHVzaE1hbmFnZXIiIHdpdGggdGhlIHByb3BlciB0
eXBlCiBQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBv
bnB1c2gKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogYXR0cmlidXRl
IG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFs
IG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBl
eHBlY3RlZCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiBtaXNzaW5nCitQQVNT
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UKIFBBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTog
c2VsZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ucHVzaCIgd2l0aCB0aGUgcHJvcGVyIHR5cGUK
LUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0IGluaGVy
aXQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0aCB0aGUgcHJvcGVyIHR5
cGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlw
dGlvbmNoYW5nZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJm
YWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25wdXNoc3Vic2NyaXB0aW9uY2hhbmdl
IiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0MTI2NTdjYmYwZGE5
OTAwOWQwYjJhOTdjNzllNTcwYjU0ZmQxMjczLi4yZDg2YzIzYTllMmNkNzZlMzY1ZjY3MGYwNmI2
ODliOGU0MzE1NTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNiw2ICsxMzYsOCBAQCB3ZWJraXQu
b3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1hY3RpdmF0ZS5odAogd2Via2l0Lm9yZy9iLzIxNzY2OSBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbCBbIFBhc3MgVGlt
ZW91dCBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbCBbIFBhc3MgVGlt
ZW91dCBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbCBbIFBhc3MgVGlt
ZW91dCBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbCBbIFBhc3MgVGltZW91
dCBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRt
bCBbIFBhc3MgVGltZW91dCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIxNzY4NyBhY2Nlc3Np
YmlsaXR5L2FyaWEtY3VycmVudC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8y
MTc2ODcgYWNjZXNzaWJpbGl0eS9pbnNlcnQtbmV3bGluZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444714</attachid>
            <date>2021-11-18 12:10:53 -0800</date>
            <delta_ts>2021-11-18 20:18:23 -0800</delta_ts>
            <desc>rebased patch for landing</desc>
            <filename>bug-233088-20211118121053.patch</filename>
            <type>text/plain</type>
            <size>49114</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkzZWRhMGQ0MmM0Mjgw
YWMwMzc4YjI5N2YyZDc3MGYwYWQzZmY3Yy4uNmMwNmMzNTQzYTA4ZWFkOTYyZjlmNTdlMzUyNWFm
MDFmZTRiN2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIGFiaWxpdHkgdG8gc2VuZCBhIHB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgb24K
KyAgICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBJIGRpZG4ndCBpbXBsZW1lbnQgYSBj
b21wbGV0aW9uIGhhbmRsZXIgZm9yIHRoZSBldmVudCAoYXMgd2UgZG8KKyAgICAgICAgZm9yIHRo
ZSBwdXNoIGV2ZW50KSBzaW5jZSBpdCdzIG5vdCByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQgYW5k
IEkgZG9uJ3QgdGhpbmsgd2UnZCB1c2UgaXQuCisgICAgICAgIFdlIG9ubHkgcGxhbiBvbiBmaXJp
bmcgdGhpcyBldmVudCB0aGUgZmlyc3QgdGltZSB5b3UgdmlzaXQgYW4gb3JpZ2luIGFmdGVyIHdl
IGRlcmVnaXN0ZXIgYQorICAgICAgICBQdXNoU3Vic2NyaXB0aW9uIGZvciByZWNlaXZpbmcgdG9v
IG1hbnkgc2lsZW50IHB1c2hlcy4KKworICAgICAgICBUZXN0czogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9wdXNo
LWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb246OlB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpl
bmRwb2ludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpleHBp
cmF0aW9uVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjpv
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OmNsaWVu
dEVDREhQdWJsaWNLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlv
bjo6c2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaFN1YnNjcmlwdGlvbjo6Z2V0S2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hT
dWJzY3JpcHRpb246OnRvSlNPTiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoU3Vic2NyaXB0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVh
dGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6c2No
ZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAgICog
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZDo6d2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVk
RmlyaW5nUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5Lmg6CisKIDIwMjEtMTEtMTggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVsXSBhZGQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhbmQg
c2V0dGluZyB0aGUgY2FtZXJhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNo
LWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAppbmRleCBlMWNlODM4MTRjM2NhZDUwYzRiZDU5ZmJi
MjhlMzdiZmYyNDY2NDJmLi41MjJkYTg1Zjg1YzJkNzA0ZTY0M2ZlNzBjMjAxMjM1ODMyOGY0MmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3Jp
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNj
cmlwdGlvbi5jcHAKQEAgLTQwLDUyICs0MCw1OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQdXNoU3Vic2NyaXB0aW9uKTsKIAotUHVzaFN1YnNj
cmlwdGlvbjo6UHVzaFN1YnNjcmlwdGlvbihTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25h
bDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZl
clZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKLSAgICA6IG1fZW5k
cG9pbnQoV1RGTW92ZShlbmRwb2ludCkpCi0gICAgLCBtX2V4cGlyYXRpb25UaW1lKGV4cGlyYXRp
b25UaW1lKQotICAgICwgbV9vcHRpb25zKFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUo
V1RGTW92ZShzZXJ2ZXJWQVBJRFB1YmxpY0tleSkpKQotICAgICwgbV9jbGllbnRFQ0RIUHVibGlj
S2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkpCi0gICAgLCBtX3NoYXJlZEF1dGhlbnRp
Y2F0aW9uU2VjcmV0KFdURk1vdmUoc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKQorUHVzaFN1
YnNjcmlwdGlvbjo6UHVzaFN1YnNjcmlwdGlvbihQdXNoU3Vic2NyaXB0aW9uRGF0YSYmIGRhdGEs
IFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKKyAgICA6
IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
KFdURk1vdmUocmVnaXN0cmF0aW9uKSkKIHsKIH0KIAotUHVzaFN1YnNjcmlwdGlvbjo6UHVzaFN1
YnNjcmlwdGlvbihSZWY8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXRpb24s
IFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0
aW9uVGltZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2VydmVyVkFQSURQdWJsaWNLZXksIFZlY3Rvcjx1
aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIHNoYXJlZEF1
dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFdU
Rk1vdmUocmVnaXN0cmF0aW9uKSkKLSAgICAsIG1fZW5kcG9pbnQoV1RGTW92ZShlbmRwb2ludCkp
Ci0gICAgLCBtX2V4cGlyYXRpb25UaW1lKGV4cGlyYXRpb25UaW1lKQotICAgICwgbV9vcHRpb25z
KFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUoV1RGTW92ZShzZXJ2ZXJWQVBJRFB1Ymxp
Y0tleSkpKQotICAgICwgbV9jbGllbnRFQ0RIUHVibGljS2V5KFdURk1vdmUoY2xpZW50RUNESFB1
YmxpY0tleSkpCi0gICAgLCBtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KFdURk1vdmUoc2hh
cmVkQXV0aGVudGljYXRpb25TZWNyZXQpKQorUHVzaFN1YnNjcmlwdGlvbjo6flB1c2hTdWJzY3Jp
cHRpb24oKSA9IGRlZmF1bHQ7CisKK2NvbnN0IFB1c2hTdWJzY3JpcHRpb25EYXRhJiBQdXNoU3Vi
c2NyaXB0aW9uOjpkYXRhKCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9kYXRhOwogfQogCi1QdXNo
U3Vic2NyaXB0aW9uOjp+UHVzaFN1YnNjcmlwdGlvbigpID0gZGVmYXVsdDsKLQogY29uc3QgU3Ry
aW5nJiBQdXNoU3Vic2NyaXB0aW9uOjplbmRwb2ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZW5kcG9pbnQ7CisgICAgcmV0dXJuIG1fZGF0YS5lbmRwb2ludDsKIH0KIAogc3RkOjpvcHRpb25h
bDxFcG9jaFRpbWVTdGFtcD4gUHVzaFN1YnNjcmlwdGlvbjo6ZXhwaXJhdGlvblRpbWUoKSBjb25z
dAogewotICAgIHJldHVybiBtX2V4cGlyYXRpb25UaW1lOworICAgIHJldHVybiBtX2RhdGEuZXhw
aXJhdGlvblRpbWU7CiB9CiAKIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zJiBQdXNoU3Vic2NyaXB0
aW9uOjpvcHRpb25zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcHRpb25zOworICAgIGlmICgh
bV9vcHRpb25zKSB7CisgICAgICAgIGF1dG8ga2V5ID0gbV9kYXRhLnNlcnZlclZBUElEUHVibGlj
S2V5OworICAgICAgICBtX29wdGlvbnMgPSBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczo6Y3JlYXRl
KFdURk1vdmUoa2V5KSk7CisgICAgfQorCisgICAgcmV0dXJuICptX29wdGlvbnM7Cit9CisKK2Nv
bnN0IFZlY3Rvcjx1aW50OF90PiYgUHVzaFN1YnNjcmlwdGlvbjo6Y2xpZW50RUNESFB1YmxpY0tl
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS5jbGllbnRFQ0RIUHVibGljS2V5OworfQor
Citjb25zdCBWZWN0b3I8dWludDhfdD4mIFB1c2hTdWJzY3JpcHRpb246OnNoYXJlZEF1dGhlbnRp
Y2F0aW9uU2VjcmV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLnNoYXJlZEF1dGhlbnRp
Y2F0aW9uU2VjcmV0OwogfQogCiBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+
IFB1c2hTdWJzY3JpcHRpb246OmdldEtleShQdXNoRW5jcnlwdGlvbktleU5hbWUgbmFtZSkgY29u
c3QKIHsKLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gKnNvdXJjZSA9IG51bGxwdHI7CisgICAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+KiBzb3VyY2UgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChu
YW1lKSB7CiAgICAgY2FzZSBQdXNoRW5jcnlwdGlvbktleU5hbWU6OlAyNTZkaDoKLSAgICAgICAg
c291cmNlID0gJm1fY2xpZW50RUNESFB1YmxpY0tleTsKKyAgICAgICAgc291cmNlID0gJmNsaWVu
dEVDREhQdWJsaWNLZXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXNoRW5jcnlwdGlv
bktleU5hbWU6OkF1dGg6Ci0gICAgICAgIHNvdXJjZSA9ICZtX3NoYXJlZEF1dGhlbnRpY2F0aW9u
U2VjcmV0OworICAgICAgICBzb3VyY2UgPSAmc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xMTIsMTEgKzExOSwxMSBAQCB2b2lkIFB1c2hTdWJzY3JpcHRpb246OnVuc3Vic2NyaWJlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogUHVzaFN1YnNjcmlw
dGlvbkpTT04gUHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKIHsKICAgICByZXR1cm4g
UHVzaFN1YnNjcmlwdGlvbkpTT04gewotICAgICAgICBtX2VuZHBvaW50LAotICAgICAgICBtX2V4
cGlyYXRpb25UaW1lLAorICAgICAgICBlbmRwb2ludCgpLAorICAgICAgICBleHBpcmF0aW9uVGlt
ZSgpLAogICAgICAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gewotICAg
ICAgICAgICAgeyAicDI1NmRoIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhtX2NsaWVudEVD
REhQdWJsaWNLZXkpIH0sCi0gICAgICAgICAgICB7ICJhdXRoIl9zLCBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhtX3NoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSB9CisgICAgICAgICAgICB7ICJw
MjU2ZGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNsaWVudEVDREhQdWJsaWNLZXkoKSkg
fSwKKyAgICAgICAgICAgIHsgImF1dGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKHNoYXJl
ZEF1dGhlbnRpY2F0aW9uU2VjcmV0KCkpIH0KICAgICAgICAgfQogICAgIH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCmluZGV4
IDA5Y2MzYTBkM2VhNDVjNzQ1MTlhYjc5OGZhNDgxYWRkMDExNjdmZDIuLmEzM2ZhMDBiMDg2NjUz
NDhhZGVlZjc5YzliMGRjMWQzYjc1MzM2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIlB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3Jp
cHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkpTT04uaCIKIAogI2luY2x1
ZGUgPG9wdGlvbmFsPgpAQCAtNTEsMjQgKzUyLDI1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFB1c2hTdWJzY3JpcHRpb24+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdXNoU3Vic2NyaXB0aW9uKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgflB1c2hTdWJz
Y3JpcHRpb24oKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFB1c2hTdWJzY3JpcHRpb25E
YXRhJiBkYXRhKCkgY29uc3Q7CisKICAgICBjb25zdCBTdHJpbmcmIGVuZHBvaW50KCkgY29uc3Q7
CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUoKSBjb25z
dDsKICAgICBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0OworICAgIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RUNESFB1YmxpY0tleSgpIGNvbnN0OworICAgIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQoKSBjb25zdDsK
KwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZ2V0S2V5KFB1c2hF
bmNyeXB0aW9uS2V5TmFtZSkgY29uc3Q7CiAgICAgdm9pZCB1bnN1YnNjcmliZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwogCiAgICAg
UHVzaFN1YnNjcmlwdGlvbkpTT04gdG9KU09OKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUHVzaFN1YnNjcmlwdGlvbihTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRp
b25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNl
cnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5
LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKLSAgICBQdXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25h
bDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYmIHNlcnZl
clZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQdXNo
U3Vic2NyaXB0aW9uKFB1c2hTdWJzY3JpcHRpb25EYXRhJiYsIFJlZlB0cjxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uPiYmID0gbnVsbHB0cik7CiAKKyAgICBQdXNoU3Vic2NyaXB0aW9uRGF0YSBt
X2RhdGE7CiAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IG1fc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbjsKLSAgICBTdHJpbmcgbV9lbmRwb2ludDsKLSAgICBzdGQ6Om9wdGlv
bmFsPEVwb2NoVGltZVN0YW1wPiBtX2V4cGlyYXRpb25UaW1lOwotICAgIFJlZjxQdXNoU3Vic2Ny
aXB0aW9uT3B0aW9ucz4gbV9vcHRpb25zOwotICAgIFZlY3Rvcjx1aW50OF90PiBtX2NsaWVudEVD
REhQdWJsaWNLZXk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2hhcmVkQXV0aGVudGljYXRpb25T
ZWNyZXQ7CisgICAgbXV0YWJsZSBSZWZQdHI8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0
aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlK1B1c2hBUEku
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUrUHVzaEFQSS5pZGwKaW5kZXggZWNhYjY1MDA5Mjc4MWI2ZDM5MDQwZWFjOTNkMGE5MGI2
NDRlNzNkYS4uYWEwNTAxOGJjN2M2YmY3N2Q4MWVlNTM2YzU5MzhjMzQ2OWM4YTFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUrUHVzaEFQSS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUrUHVzaEFQSS5pZGwKQEAgLTI3LDQgKzI3LDUgQEAKICAg
ICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXJFbmFibGVkCiBdIHBhcnRpYWwgaW50ZXJm
YWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnB1c2g7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnB1c2hzdWJzY3JpcHRpb25j
aGFuZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oCmluZGV4IDI2MWQ4OTM0NmZmYjQzNDY2ZmRhM2UxNTUxZDI2MmVmOTZhNjllYjgu
LmViNDM1NDVkOWI1MDE4MTBjYjFkYjJiZGZmMDVmNGM2ZmMxNDMyZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ1Myw2ICs0
NTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obWF0Y2hpbmdFbGVtZW50SW5G
bGF0VHJlZSkgXAogICAgIG1hY3JvKG1lZGlhU3RyZWFtVHJhY2tDb25zdHJhaW50cykgXAogICAg
IG1hY3JvKG9ucHVzaCkgXAorICAgIG1hY3JvKG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSkgXAog
ICAgIG1hY3JvKG9ucnRjdHJhbnNmb3JtKSBcCiAgICAgbWFjcm8ob250b3VjaGNhbmNlbCkgXAog
ICAgIG1hY3JvKG9udG91Y2hlbmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGUxZmE0
ZDM5YzFjN2M1OWI1MDAzNmY2MGVhNDhmYjFhMDFlOTlkNzQuLmZmZjdiODNmY2UzMjJiODI1ZjM4
NmY4MjI5MTA5MTNjM2JiZDM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjIyLDYg
KzIyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhwcm9jZXNzb3JlcnJvcikg
XAogICAgIG1hY3JvKHByb2dyZXNzKSBcCiAgICAgbWFjcm8ocHVzaCkgXAorICAgIG1hY3JvKHB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhyYXRlY2hhbmdlKSBcCiAgICAgbWFj
cm8ocmVhZHlzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlamVjdGlvbmhhbmRsZWQpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyNTY5Y2I4MjMzZjI0NTI3ZWFiOWU2
N2U5MjAyNzdkMmFhZmU5MWI4Li5hY2JiZWY2M2FiNDU1MTA5ZTMxYzVhZDAyYWVhYmZmOTBkMDli
OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjUsNiArMTY1LDcg
QEAKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRp
b25EYXRhLmgiCiAjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAi
UmFuZ2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgpAQCAtMTk0LDYgKzE5NSw3IEBA
CiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgpAQCAtNjU5Miw3ICs2NTk0LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IEludGVy
bmFsczo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGVuZHBvaW4KICAgICBW
ZWN0b3I8dWludDhfdD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGNsaWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNESFB1YmxpY0tl
eS5ieXRlTGVuZ3RoKCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3RoKCkgfTsKIAot
ICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVuZHBvaW50KSwg
ZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSksIFdURk1vdmUo
bXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpKTsKKyAgICByZXR1cm4gUHVz
aFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFB1c2hTdWJzY3JpcHRpb25EYXRhIHsgV1RGTW92ZShteUVu
ZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSks
IFdURk1vdmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpIH0pOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwCmluZGV4IDhjNjc3NTk5NTA0OGJjMmVjNzNjYzUyZmM3Njc2MWMzOGJmN2I0NDAu
LjYyNTI4ZGEyMDZmYTNiZTM2MjgwN2U0NWVlZDBmODVjZGRmNTg0ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtMzEsNyAr
MzEsOSBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNj
cmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODIsNiArODQsMjEgQEAgdm9pZCBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzOjpzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJl
ZlB0cjxEZWYKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzY2hl
ZHVsZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChQdXNoU3Vic2NyaXB0aW9uKiBuZXdTdWJz
Y3JpcHRpb24sIFB1c2hTdWJzY3JpcHRpb24qIG9sZFN1YnNjcmlwdGlvbikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiBuZXdTdWJzY3JpcHRpb25EYXRhOworICAg
IHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+IG9sZFN1YnNjcmlwdGlvbkRhdGE7
CisKKyAgICBpZiAobmV3U3Vic2NyaXB0aW9uKQorICAgICAgICBuZXdTdWJzY3JpcHRpb25EYXRh
ID0gbmV3U3Vic2NyaXB0aW9uLT5kYXRhKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWYgKG9sZFN1
YnNjcmlwdGlvbikKKyAgICAgICAgb2xkU3Vic2NyaXB0aW9uRGF0YSA9IG9sZFN1YnNjcmlwdGlv
bi0+ZGF0YSgpLmlzb2xhdGVkQ29weSgpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRp
ZmllciA9IG1faWRlbnRpZmllciwgbmV3U3Vic2NyaXB0aW9uRGF0YSA9IFdURk1vdmUobmV3U3Vi
c2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBXVEZNb3ZlKG9sZFN1YnNjcmlw
dGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5maXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KGlkZW50aWZpZXIsIFdURk1vdmUo
bmV3U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworICAg
IH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OndhaXRGb3JGZXRjaEV2ZW50
VG9GaW5pc2goRmV0Y2hFdmVudCYgZXZlbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZh
Y2U8RmV0Y2hSZXNwb25zZT4+JiYgcHJvbWlzZSkKIHsKICAgICBldmVudC5vblJlc3BvbnNlKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXZlbnQgPSBSZWYgeyBldmVudCB9XSAoYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CkBAIC0xNjgsNyArMTg1LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3Jp
cHRpb24+IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24oY29u
c3QgU3QKICAgICBWZWN0b3I8dWludDhfdD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNsaWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50
RUNESFB1YmxpY0tleS5ieXRlTGVuZ3RoKCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRo
IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVu
Z3RoKCkgfTsKIAotICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZSht
eUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tl
eSksIFdURk1vdmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1dGgpKTsKKyAg
ICByZXR1cm4gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFB1c2hTdWJzY3JpcHRpb25EYXRhIHsg
V1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFdURk1vdmUobXlTZXJ2ZXJWQVBJ
RFB1YmxpY0tleSksIFdURk1vdmUobXlDbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShteUF1
dGgpIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IDEzOGIyNzFkMzE4ZmJiMzBl
NjcxMDQ1YjllOWE0MWM0NTRmYjljNjAuLmEwYWUzYzQwY2M0ZGFmMjc3NTVjMTQ2Y2QxYTVlOWE2
MDZmMDBjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBSZWY8RmV0Y2hSZXNwb25z
ZT4gY3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVB1c2hFdmVudChjb25zdCBTdHJpbmcmLCBSZWZQdHI8
RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KFB1c2hTdWJzY3JpcHRpb24qIG5ld1N1YnNjcmlwdGlvbiwgUHVzaFN1YnNjcmlw
dGlvbiogb2xkU3Vic2NyaXB0aW9uKTsKICAgICBWZWN0b3I8U3RyaW5nPiBmZXRjaFJlc3BvbnNl
SGVhZGVyTGlzdChGZXRjaFJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaWRsCmluZGV4IDg0NjQ1NWM2MjY4Zjg1YzlmYjE1OTg4ZjNhZWExM2VjOTFiZDc3MzIuLmVh
YmM2NTM0ZDc1OTBjNjBiOGFkNWFmZGRiZDlhODQ3MzMyM2U5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtMzksNiArMzks
NyBAQAogICAgIHNlcXVlbmNlPEJ5dGVTdHJpbmc+IGZldGNoUmVzcG9uc2VIZWFkZXJMaXN0KEZl
dGNoUmVzcG9uc2UgcmVzcG9uc2UpOwogCiAgICAgUHJvbWlzZTxib29sZWFuPiBzY2hlZHVsZVB1
c2hFdmVudChvcHRpb25hbCBET01TdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNjaGVkdWxl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFB1c2hTdWJzY3JpcHRpb24/IG5ld1N1YnNjcmlw
dGlvbiwgUHVzaFN1YnNjcmlwdGlvbj8gb2xkU3Vic2NyaXB0aW9uKTsKIAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJvY2Vzc05hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNUaHJvdHRsZWFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggYTQ5YjU4OWQ0
ZDlmNGRlYWRmMjE1YzUxZmM4NDU1ZDQzNDk2OTRkMy4uM2EwNDA0NGVlYzgyMmFhODg0OTQzMmIy
ODI2YjFhZDE0OTllNzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNTUyLDExICs1NTIsNiBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uJiByZWdpcwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVn
aXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyBSZWY8UHVzaFN1YnNjcmlwdGlv
bj4gY3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uPiByZWdpc3RyYXRpb24sIFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSkKLXsKLSAg
ICByZXR1cm4gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUocmVnaXN0cmF0aW9uKSwg
V1RGTW92ZShkYXRhLmVuZHBvaW50KSwgZGF0YS5leHBpcmF0aW9uVGltZSwgV1RGTW92ZShkYXRh
LnNlcnZlclZBUElEUHVibGljS2V5KSwgV1RGTW92ZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkp
LCBXVEZNb3ZlKGRhdGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKTsKLX0KLQogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBs
aWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vi
c2NyaXB0aW9uPj4mJiBwcm9taXNlKQogewogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigp
LnN1YnNjcmliZVRvUHVzaFNlcnZpY2UocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgYXBwbGlj
YXRpb25TZXJ2ZXJLZXksIFtwcm90ZWN0ZWRSZWdpc3RyYXRpb24gPSBSZWYgeyByZWdpc3RyYXRp
b24gfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUg
ewpAQCAtNTY1LDcgKzU2MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3Vic2Ny
aWJlVG9QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShj
cmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEoV1RGTW92ZShwcm90ZWN0ZWRSZWdpc3RyYXRp
b24pLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKyAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCks
IFdURk1vdmUocHJvdGVjdGVkUmVnaXN0cmF0aW9uKSkpOwogICAgIH0pOwogfQogCkBAIC01OTAs
NyArNTg1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0
aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2kKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0
aW9uRnJvbURhdGEoV1RGTW92ZShwcm90ZWN0ZWRSZWdpc3RyYXRpb24pLCBXVEZNb3ZlKCpvcHRp
b25hbFB1c2hTdWJzY3JpcHRpb25EYXRhKSkucHRyKCkpOworICAgICAgICBwcm9taXNlLnJlc29s
dmUoUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUoKm9wdGlvbmFsUHVzaFN1YnNjcmlw
dGlvbkRhdGEpLCBXVEZNb3ZlKHByb3RlY3RlZFJlZ2lzdHJhdGlvbikpLnB0cigpKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggNWEzNDJmZGZmOWFjZTA1MGY0NjZmMDZl
MmM5MjYyZTQ4YjdmODkxMy4uODllYzk3M2Y1ZmY2N2EzNmM3YTE0Yzk2ZjBhNTZkMTg3YTM0OTlm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgU2Vydmlj
ZVdvcmtlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7CiAKIGNsYXNzIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uPiwgcHVibGljIFN1cHBsZW1lbnRhYmxlPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uKTsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLCBXRUJDT1JFX0VYUE9SVCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBnZXRPckNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUmVmPFNlcnZpY2VXb3JrZXJDb250YWluZXI+JiYsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhJiYpOwogCi0gICAgflNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB+U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaXN0cmF0aW9uRGF0YS5pZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAK
aW5kZXggYTFkY2RlNWE5NjUwM2JiNTYyZDRiYzNmNjk5ODcwOTI0NWNkOWM1Ni4uODVhZDI4YjRm
ZGQzODMwYzdhNDcyNzk4MWU3NmU5YzYxYmZkOTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAK
QEAgLTExOSw2ICsxMTksMTUgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaEV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3AKICAgICBzZXJ2aWNl
V29ya2VyLT5maXJlUHVzaEV2ZW50KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsK
IH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8UHVz
aFN1YnNjcmlwdGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKQoreworICAgIGF1dG8q
IHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFz
ZXJ2aWNlV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2aWNlV29ya2VyLT5maXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSks
IFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworfQorCiAKIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlMDA4MzA5ODIxNzlhZDJiNDQ4NjQ2OWE2ODZkNTg2
Y2M0NTYzMzEuLmM2NzU0MzFiMTljMjRjZTc3NjVlYmJlZDljYTQxMDM1ZDVjYzgyYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRp
b25EYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlcklkZW50aWZpZXIuaCIKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJl
UHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0
ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9y
dGVkU2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDAwNjk4OGM3NzNk
MzY4N2E0ZDg5ZTc1MDgwZjU2M2U3ZGI5ZmQwNTEuLjlhNmMyZDUzNzRkMjFmNjUyNjY5ZDZkNzlm
MzQ2NTk1NTVjZDcyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCw2ICsz
OCw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgogI2luY2x1ZGUgIlB1c2hFdmVudC5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24u
aCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJT
V0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKQEAgLTIzNSw2ICsyMzcsMzMgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4KICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1
ZVRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoc3RkOjpvcHRpb25hbDxQdXNo
U3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRpb25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1
c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlwdGlvbkRhdGEpCit7CisgICAgUmVmIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4oKmdsb2JhbFNjb3BlKCkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbmV3U3Vic2NyaXB0
aW9uRGF0YSA9IFdURk1vdmUobmV3U3Vic2NyaXB0aW9uRGF0YSksIG9sZFN1YnNjcmlwdGlvbkRh
dGEgPSBXVEZNb3ZlKG9sZFN1YnNjcmlwdGlvbkRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBS
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNr
VG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2Vy
ICUiIFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisKKyAgICAgICAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG5ld1N1
YnNjcmlwdGlvbjsKKyAgICAgICAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IG9sZFN1YnNjcmlw
dGlvbjsKKworICAgICAgICBpZiAobmV3U3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG5l
d1N1YnNjcmlwdGlvbiA9IFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKCpuZXdTdWJz
Y3JpcHRpb25EYXRhKSwgJnNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+cmVnaXN0cmF0aW9uKCkp
OworICAgICAgICBpZiAob2xkU3Vic2NyaXB0aW9uRGF0YSkKKyAgICAgICAgICAgIG9sZFN1YnNj
cmlwdGlvbiA9IFB1c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKCpvbGRTdWJzY3JpcHRp
b25EYXRhKSk7CisKKyAgICAgICAgYXV0byBwdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgPSBQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVzaHN1YnNj
cmlwdGlvbmNoYW5nZUV2ZW50LCB7IH0sIFdURk1vdmUobmV3U3Vic2NyaXB0aW9uKSwgV1RGTW92
ZShvbGRTdWJzY3JpcHRpb24pLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAg
ICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudCk7CisKKyAgICAgICAgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyldKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFz
a1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCBmaW5pc2hpbmcgZm9yIHdvcmtlciAl
bGx1Iiwgd2Vha1RoaXMgPyB3ZWFrVGhpcy0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwKTsK
KyAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5maW5pc2hlZEZpcmluZ1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKGdsb2JhbFNj
b3BlKCktPmlzQ29udGV4dFRocmVhZCgpKTsKQEAgLTI5NSw3ICszMjQsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIoKQogdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIW1fb25nb2luZ0hlYXJ0
QmVhdENoZWNrKSB7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJbnN0YWxsaW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcgfHwgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB8
fCBtX2lzSGFuZGxpbmdQdXNoRXZlbnQgfHwgbV9tZXNzYWdlRXZlbnRDb3VudCkKKyAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0
aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHx8IG1faXNIYW5kbGluZ1B1c2hFdmVu
dCB8fCBtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENvdW50IHx8IG1fbWVzc2FnZUV2ZW50
Q291bnQpCiAgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNjIsNiArMzkxLDE4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
ZmluaXNoZWRGaXJpbmdNZXNzYWdlRXZlbnQoKQogICAgIC0tbV9tZXNzYWdlRXZlbnRDb3VudDsK
IH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQoKQoreworICAgIGlmICghbV9wdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnRDb3VudCsrKQorICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7Cit9CisKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdQdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQoKQoreworICAgIEFTU0VSVChtX3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudENv
dW50KTsKKyAgICAtLW1fcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Q291bnQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCBiNDgzMWEwYzAzM2EyMTBiMTU5ZmFhMWMxZDNj
MWQ0MGMwM2RhNjI1Li40MDY3ZDE2ZGU5MmQzYjMyMWU2MjAwNDA4MTM1YjI5ZDZiMWM3MmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgi
CkBAIC02MSwxMiArNjIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJl
SW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50
KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lk
IHdpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogCiAgICAg
dm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNs
aWVudD4mJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4m
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJik7
CiAgICAgdm9pZCBxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICB2b2lkIHF1
ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlQWN0
aXZhdGVFdmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHF1ZXVlVGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudChzdGQ6Om9wdGlv
bmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG5ld1N1YnNjcmlwdGlvbkRhdGEsIHN0ZDo6b3B0
aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+JiYgb2xkU3Vic2NyaXB0aW9uRGF0YSk7CiAKICAg
ICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
am9iRGF0YUlkZW50aWZpZXI7IH0KQEAgLTkwLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpbmlzaGVkRmlyaW5nSW5zdGFsbEV2ZW50KGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsK
ICAgICB2b2lkIGZpbmlzaGVkRmlyaW5nQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgZmluaXNo
ZWRGaXJpbmdNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIGZpbmlzaGVkRmlyaW5nUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50KCk7CiAgICAgdm9pZCBmaW5pc2hlZFN0YXJ0aW5nKCk7CiAKICAg
ICB2b2lkIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKQEAgLTEwNSw2ICsxMDksNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50IHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNIYW5kbGluZ1B1c2hFdmVudCB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9wdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnRDb3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBtX21lc3NhZ2VF
dmVudENvdW50IHsgMCB9OwogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBTdGFydGluZywg
SW5zdGFsbGluZywgQWN0aXZhdGluZyB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRs
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNWM0NGRlNTZk
M2VhN2E4MDExNzYxYTUwMmE5OGI2YzVlMDg5NzAzNC4uYTE3MzBlZDQ0YzNkMmViZDIwOGZkNThj
NDk4NzI4OWQ0OWEwMzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3Bw
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMzIwLDYgKzMyMSwxNCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4mJiBkYQogICAgICAgICBtX29uZ29pbmdQdXNoVGFza3MudGFrZShp
ZGVudGlmaWVyKShmYWxzZSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpm
aXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlw
dGlvbkRhdGE+JiYgbmV3U3Vic2NyaXB0aW9uRGF0YSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2Ny
aXB0aW9uRGF0YT4mJiBvbGRTdWJzY3JpcHRpb25EYXRhKQoreworICAgIHRocmVhZCgpLndpbGxQ
b3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOworICAgIHRocmVhZCgp
LnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG5ld1N1YnNjcmlwdGlvbkRhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShuZXdTdWJzY3Jp
cHRpb25EYXRhKSksIG9sZFN1YnNjcmlwdGlvbkRhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShvbGRTdWJzY3JpcHRpb25EYXRhKSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFk
KCkucXVldWVUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KFdURk1vdmUobmV3
U3Vic2NyaXB0aW9uRGF0YSksIFdURk1vdmUob2xkU3Vic2NyaXB0aW9uRGF0YSkpOworICAgIH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDk0NWZlZTg5
NmQ2NWVmZjE4OWZhNDUzMTRlNzhmYWMwNDdlMTBhYTEuLjVhNTE2OTRhYmNmZTY4N2ZhMWNjOWU3
ODllMTYxNTQzMDk4YzM2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGZXRjaElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRGVidWdnYWJsZS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckluc3Bl
Y3RvclByb3h5LmgiCkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBmaXJl
UHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdl
RXZlbnQoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4mJiBuZXdTdWJzY3JpcHRp
b25EYXRhLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiYmIG9sZFN1YnNjcmlw
dGlvbkRhdGEpOwogCiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXIm
JiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMzFlMmNiYzcyNDg4YTNkYjhkM2YyYzhhNWZlMDA1MDliMDFjYTkzMy4uOTgwYzFmODcwNGMw
ODAxYWRiYzA0YzZmMmUyZjdkYTFlOGRlOTY2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIx
LTExLTEzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAgLSBNb2RpZmllZCB0aGUgcHVzaHN1
YnNjcmlwdGlvbmNoYW5nZSB0ZXN0IHRvIHNlbmQgYSByZWFsIGV2ZW50IHRvIHRoZSBzZXJ2aWNl
IHdvcmtlci4KKyAgICAgICAgIC0gTW9kaWZpZWQgdGhlIHNlcnZpY2Ugd29ya2VyIHNwaW5uaW5n
IHRlc3RzIHRvIHRlc3QgZm9yIGd1YXJkaW5nIGFnYWluc3QgaW5maW5pdGUgbG9vcHMgaW4KKyAg
ICAgICAgICAgdGhlIHB1c2ggYW5kIHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxl
cnMuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBleGlzdGluZyBzcGlubmluZyB0ZXN0cyBhcmUg
bWFya2VkIGFzIGZsYWt5IG9uIGlvcy13azIuIFdlIGRvIHRoZSBzYW1lIGhlcmUKKyAgICAgICAg
c2luY2UgdGhlIHRlc3QgcGFzc2VzIGxvY2FsbHkgYnV0IGlzIGZsYWt5IGluIEVXUy4KKworICAg
ICAgICAqIGh0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnku
anM6CisgICAgICAgIChwcm9taXNlX3Rlc3QpOgorICAgICAgICAoYXNzZXJ0U3Vic2NyaXB0aW9u
c0FyZUVxdWFsKToKKyAgICAgICAgKHRlc3QpOiBEZWxldGVkLgorICAgICAgICAocHJvbWlzZV90
ZXN0LmFzeW5jIG5ld1N1YnNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChwcm9taXNlX3Rl
c3QuYXN5bmMgcmV0dXJuKTogRGVsZXRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFwaS9w
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMu
anM6CisgICAgICAgIChhc3luYyBzZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAqIGh0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzOgorICAgICAgICAocmVzcG9u
ZFRvUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKHB1c2hUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTExLTE4ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IEpQRUcgWEwgaW1hZ2UgZGVjb2RlciB1c2luZyBsaWJqeGwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IDMzOGQyYTJjMWZiZGZlNmEwN2FkYTYyOTkzYjUxMTMwYjcx
MmZkODcuLjFjNzcyZTA1NmQxZjU4ZWE5YzIzNzMwOWU1YzNmOTk2ZTczMmQyN2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTEzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICBSZWJhc2VsaW5lIHRlc3QgcmVzdWx0cyBzaW5jZSB3ZSBu
b3cgc3VwcG9ydCBvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuCisKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1l
eHBlY3RlZC50eHQ6CisKIDIwMjEtMTEtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBjc3MtdHJhbnNmb3JtcyBXUFQgdGVzdHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudC5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LmpzCmluZGV4IDgyYzQyMWY1YWYyMTAwZWI5OTI0ZDU1
NTRkZjg3MDUxMGIwNDc3NTUuLjhjMzRkMzQ0NzQ1OTViY2FjZDQxODk0ODdhYzZjNWI2ODliYzIy
MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudC5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5qcwpAQCAtMiwyNyArMiwyMyBAQAog
Ly8gTUVUQTogZ2xvYmFsPXNlcnZpY2V3b3JrZXIKIC8vIE1FVEE6IHNjcmlwdD1jb25zdGFudHMu
anMKIAotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRpb25D
aGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIpOwotICAgIGFzc2VydF9lcXVhbHMo
ZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhl
dmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKLX0sICJQdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnQgd2l0aG91dCBkYXRhIik7Ci0KLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVu
dCA9IG5ldyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFu
Z2UiLCB7IG5ld1N1YnNjcmlwdGlvbjogbnVsbCwgb2xkU3Vic2NyaXB0aW9uOiBudWxsIH0pOwot
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3Iik7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG51bGwsICJvbGQiKTsKLX0s
ICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91dCBzdWJzY3JpcHRpb25zIik7Cits
ZXQgYWN0aXZhdGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9uYWN0aXZh
dGUgPSByZXNvbHZlKTsKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgICByZXR1cm4gYWN0aXZhdGVQ
cm9taXNlOworfSwgIndhaXQgZm9yIGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciIpOwogCiBsZXQgbmV3
U3Vic2NyaXB0aW9uID0gbnVsbDsKIGxldCBvbGRTdWJzY3JpcHRpb24gPSBudWxsOwogCi1sZXQg
YWN0aXZhdGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9uYWN0aXZhdGUg
PSByZXNvbHZlKTsKLXByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7Ci0gICByZXR1cm4gYWN0aXZh
dGVQcm9taXNlOwotfSwgIndhaXQgZm9yIGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciIpOworZnVuY3Rp
b24gYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGEsIGIsIHJlYXNvbikKK3sKKyAgICBpZiAo
IWEgfHwgIWIpCisgICAgICAgIGFzc2VydF9lcXVhbHMoYSwgYiwgcmVhc29uKTsKKyAgICBlbHNl
CisgICAgICAgIGFzc2VydF9lcXVhbHMoSlNPTi5zdHJpbmdpZnkoYS50b0pTT04oKSksIEpTT04u
c3RyaW5naWZ5KGIudG9KU09OKCkpLCByZWFzb24pOworfQogCi1wcm9taXNlX3Rlc3QoYXN5bmMo
KSA9PiB7Citwcm9taXNlX3Rlc3QoKCkgPT4gewogICAgIG5ld1N1YnNjcmlwdGlvbiA9IHNlbGYu
aW50ZXJuYWxzLmNyZWF0ZVB1c2hTdWJzY3JpcHRpb24oRU5EUE9JTlQsIEVYUElSQVRJT05fVElN
RSwgVkFMSURfU0VSVkVSX0tFWSwgQ0xJRU5UX0tFWV8xLCBBVVRIKTsKICAgICBvbGRTdWJzY3Jp
cHRpb24gPSBzZWxmLmludGVybmFscy5jcmVhdGVQdXNoU3Vic2NyaXB0aW9uKEVORFBPSU5ULCBF
WFBJUkFUSU9OX1RJTUUsIFZBTElEX1NFUlZFUl9LRVksIENMSUVOVF9LRVlfMiwgQVVUSCk7CiAK
QEAgLTMyLDIwICsyOCwzMCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CiAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSgpKTsKIH0sICJjcmVhdGUgc3Vic2NyaXB0
aW9ucyIpOwogCi10ZXN0KCgpID0+IHsKLSAgICBsZXQgZXZlbnQgPSBuZXcgUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50KCJwdXNoc3Vic2NyaXB0aW9uY2hhbmdlIiwgeyBuZXdTdWJzY3JpcHRp
b24gfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5uZXdTdWJzY3JpcHRpb24sIG5ld1N1YnNj
cmlwdGlvbiwgIm5ldyIpOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQub2xkU3Vic2NyaXB0aW9u
LCBudWxsLCAib2xkIik7Citwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRl
cm5hbHMuc2NoZWR1bGVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQobnVsbCwgbnVsbCk7Cisg
ICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaHN1
YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOworICAgIGFzc2VydFN1YnNjcmlwdGlvbnNBcmVF
cXVhbChldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKKyAgICBhc3NlcnRTdWJz
Y3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBudWxsLCAib2xkIik7Cit9
LCAiUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGhvdXQgc3Vic2NyaXB0aW9ucyIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQobmV3U3Vic2NyaXB0aW9uLCBudWxsKTsKKyAgICBs
ZXQgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFs
KGV2ZW50Lm5ld1N1YnNjcmlwdGlvbiwgbmV3U3Vic2NyaXB0aW9uLCAibmV3Iik7CisgICAgYXNz
ZXJ0U3Vic2NyaXB0aW9uc0FyZUVxdWFsKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgbnVsbCwgIm9s
ZCIpOwogfSwgIlB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBzdWJzY3JpcHRp
b24iKTsKIAotdGVzdCgoKSA9PiB7Ci0gICAgbGV0IGV2ZW50ID0gbmV3IFB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudCgicHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIsIHsgb2xkU3Vic2NyaXB0aW9u
IH0pOwotICAgIGFzc2VydF9lcXVhbHMoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBudWxsLCAibmV3
Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhldmVudC5vbGRTdWJzY3JpcHRpb24sIG9sZFN1YnNjcmlw
dGlvbiwgIm9sZCIpOworcHJvbWlzZV90ZXN0KGFzeW5jKCkgPT4geworICAgIHNlbGYuaW50ZXJu
YWxzLnNjaGVkdWxlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KG51bGwsIG9sZFN1YnNjcmlw
dGlvbik7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxm
Lm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSA9IHJlc29sdmUpOworICAgIGFzc2VydFN1YnNjcmlw
dGlvbnNBcmVFcXVhbChldmVudC5uZXdTdWJzY3JpcHRpb24sIG51bGwsICJuZXciKTsKKyAgICBh
c3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBvbGRTdWJz
Y3JpcHRpb24sICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBv
bGQgc3Vic2NyaXB0aW9uIik7CiAKLXRlc3QoKCkgPT4gewotICAgIGxldCBldmVudCA9IG5ldyBQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoInB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiLCB7IG5l
d1N1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uIH0pOwotICAgIGFzc2VydF9lcXVhbHMoZXZl
bnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24sICJuZXciKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGV2ZW50Lm9sZFN1YnNjcmlwdGlvbiwgb2xkU3Vic2NyaXB0aW9uLCAib2xkIik7Citw
cm9taXNlX3Rlc3QoYXN5bmMoKSA9PiB7CisgICAgc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQobmV3U3Vic2NyaXB0aW9uLCBvbGRTdWJzY3JpcHRpb24p
OworICAgIGxldCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1
c2hzdWJzY3JpcHRpb25jaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRTdWJzY3JpcHRpb25z
QXJlRXF1YWwoZXZlbnQubmV3U3Vic2NyaXB0aW9uLCBuZXdTdWJzY3JpcHRpb24sICJuZXciKTsK
KyAgICBhc3NlcnRTdWJzY3JpcHRpb25zQXJlRXF1YWwoZXZlbnQub2xkU3Vic2NyaXB0aW9uLCBv
bGRTdWJzY3JpcHRpb24sICJvbGQiKTsKIH0sICJQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQg
d2l0aCBuZXcgYW5kIG9sZCBzdWJzY3JpcHRpb24iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2Vydmlj
ZXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDk1ZmEyYjE3NDcyZTI3ZjQ2M2VjMWNhYjE2MjAyNjM5YWE2YmUwYWIuLjI5MTZiMjZlMDU4
MmI1NzZhNTQ2ZGE4ODI3ZGY1NzQ4ODA2ZDFkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5hbnkuc2VydmljZXdv
cmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dApA
QCAtMSw4ICsxLDcgQEAKIAotUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aG91
dCBkYXRhCi1QQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1YnNjcmlw
dGlvbnMKIFBBU1Mgd2FpdCBmb3IgYWN0aXZlIHNlcnZpY2Ugd29ya2VyCiBQQVNTIGNyZWF0ZSBz
dWJzY3JpcHRpb25zCitQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRob3V0IHN1
YnNjcmlwdGlvbnMKIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IHdpdGggbmV3IHN1
YnNjcmlwdGlvbgogUEFTUyBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQgd2l0aCBvbGQgc3Vi
c2NyaXB0aW9uCiBQQVNTIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCB3aXRoIG5ldyBhbmQg
b2xkIHN1YnNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKaW5kZXggNzY0OTcwOTBlNjA4YzRm
MTVkY2Y0ZGY3MmJhZjBjN2M5YWE5ZTFlNC4uZTM2MzMwYzNkNGI5NTU1ZTcyM2RjMTllYTU5NDMw
MmQ4NjI3ZmYzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCkBAIC0yOCw2ICsyOCwxOCBAQCBmdW5j
dGlvbiB3YWl0Rm9yU3RhdGUod29ya2VyLCBzdGF0ZSkKICAgICB9KTsKIH0KIAorYXN5bmMgZnVu
Y3Rpb24gc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgbWVzc2FnZU5hbWUsIHRpbWVvdXQpCit7Cisg
ICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
InJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbCgpOworICAgIGNvbnN0IHJlY2VpdmVkTWVzc2FnZSA9IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSByZXNvbHZlKTsKKyAgICBjb25zdCB0aW1l
ZE91dCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHNldFRpbWVvdXQocmVqZWN0
LCB0aW1lb3V0IHx8IDUwMDApKTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUs
IFtjaGFubmVsLnBvcnQyXSk7CisgICAgcmV0dXJuIFByb21pc2UucmFjZShbcmVjZWl2ZWRNZXNz
YWdlLCB0aW1lZE91dF0pOworfQorCiBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yU2VydmljZVdvcmtl
ck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpCiB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZmI5Y2U1YmY3Mjk1MDg4MTIxZGNlYTA1NTllZTU0
NmUyOWNkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBwdXNoCitQQVNTIFNwaW4gYWZ0ZXIgcHVz
aAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZWM0NTdjNzg0ZmZlNGViY2EyOTA3OTNmYWU5NDZhMmQ1MGY0ZGU2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDMzIEBACis8
IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFNob3VsZFVzZVNlcnZpY2VX
b3JrZXJTaG9ydFRpbWVvdXQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0g
YXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNoIiB9KTsKKyAgICBjb25zdCB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0
ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgYXdhaXQgc2Vu
ZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1c2giKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2Vydmlj
ZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gcHVzaCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBh
d2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bp
bm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLXB1c2giIH0pOworICAgIGNv
bnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZv
clN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBhd2Fp
dCBzZW5kU3luY01lc3NhZ2Uod29ya2VyLCAicHVzaCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JT
ZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBwdXNo
Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vi
c2NyaXB0aW9uY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9u
Y2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjNmYjBjZmYwNDU1NDFlN2Ni
ZGQxYWFkZmNhNWVmMmYxYjBmMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFNw
aW4gaW4gcHVzaHN1YnNjcmlwdGlvbmNoYW5nZQorUEFTUyBTcGluIGFmdGVyIHB1c2hzdWJzY3Jp
cHRpb25jaGFuZ2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2hzdWJzY3JpcHRpb25jaGFuZ2UuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjcwODI5Y2M3MzMxNzUyNDYyNWEwM2NmNzk3N2ExNTg0NTRjMmE0OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwz
MyBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBTaG91bGRVc2VT
ZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJh
dGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdv
cmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tcHVzaHN1YnNjcmlwdGlv
bmNoYW5nZSIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3Rp
dmF0ZWQiKTsKKworICAgIGF3YWl0IHNlbmRTeW5jTWVzc2FnZSh3b3JrZXIsICJwdXNoc3Vic2Ny
aXB0aW9uY2hhbmdlIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdl
clJ1bm5pbmcod29ya2VyKTsKK30sICJTcGluIGluIHB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9u
ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1wdXNoc3Vic2NyaXB0
aW9uY2hhbmdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGlu
ZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFj
dGl2YXRlZCIpOworCisgICAgYXdhaXQgc2VuZFN5bmNNZXNzYWdlKHdvcmtlciwgInB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9u
Z2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgcHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2Vy
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLXdvcmtlci5qcwppbmRleCA1ZWY4Mzc5MWI3OTdlYjgxZWMwMjQzYTgxNzMxNzgz
OGIyNDJlYmY0Li5mYmRmZmQyMTk5NDIyN2IwZDE4OTk1MDIwYTBhYmYxYjRhNjNjMWM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKQEAgLTEsMyArMSwxNCBA
QAorbGV0IHBlbmRpbmdFdmVudCA9IG51bGw7CisKK2Z1bmN0aW9uIHJlc3BvbmRUb1BlbmRpbmdF
dmVudCgpCit7CisgICAgaWYgKCFwZW5kaW5nRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IHBlbmRpbmdFdmVudC5wb3J0c1swXS5wb3N0TWVzc2FnZSgncmVjZWl2ZWQnKTsKKyAgICBwZW5k
aW5nRXZlbnQgPSBudWxsOworfQorCiBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVk
ZXMoInNwaW4tcnVuIikpCiAgICAgd2hpbGUodHJ1ZSkgeyB9OwogCkBAIC0xOSw2ICszMCwxNyBA
QCBmdW5jdGlvbiBhY3RpdmF0ZVRlc3QoZXZlbnQpCiAKIGZ1bmN0aW9uIG1lc3NhZ2VUZXN0KGV2
ZW50KQogeworICAgIHN3aXRjaCAoZXZlbnQuZGF0YSkgeworICAgIGNhc2UgInB1c2giOgorICAg
ICAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hFdmVudCgidGVzdCIpOworICAgICAgICBw
ZW5kaW5nRXZlbnQgPSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgInB1c2hzdWJz
Y3JpcHRpb25jaGFuZ2UiOgorICAgICAgICBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudChudWxsLCBudWxsKTsKKyAgICAgICAgcGVuZGluZ0V2ZW50ID0g
ZXZlbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoc2VsZi5yZWdpc3RyYXRp
b24uc2NvcGUuaW5jbHVkZXMoInNwaW4tbWVzc2FnZSIpKQogICAgICAgICB3aGlsZSh0cnVlKSB7
IH07CiAgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVy
LW1lc3NhZ2UiKSkKQEAgLTM0LDggKzU2LDI5IEBAIGZ1bmN0aW9uIGZldGNoVGVzdChldmVudCkK
ICAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UoIm9rIikpOwogfQogCitmdW5jdGlv
biBwdXNoVGVzdChldmVudCkKK3sKKyAgICByZXNwb25kVG9QZW5kaW5nRXZlbnQoKTsKKworICAg
IGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1wdXNoIikpCisgICAg
ICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5j
bHVkZXMoInNwaW4tYWZ0ZXItcHVzaCIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4g
eyB3aGlsZSh0cnVlKSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBwdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlVGVzdChldmVudCkKK3sKKyAgICByZXNwb25kVG9QZW5kaW5nRXZlbnQoKTsKKworICAg
IGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1wdXNoc3Vic2NyaXB0
aW9uY2hhbmdlIikpCisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdp
c3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItcHVzaHN1YnNjcmlwdGlvbmNoYW5n
ZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGlsZSh0cnVlKSB7IH07IH0s
IDApOworfQogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImluc3RhbGwiLCBpbnN0YWxsVGVzdCk7
CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImFjdGl2YXRlIiwgYWN0aXZhdGVUZXN0KTsKIHNlbGYu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1lc3NhZ2VUZXN0KTsKIHNlbGYuYWRkRXZlbnRM
aXN0ZW5lcigiZmV0Y2giLCBmZXRjaFRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNo
IiwgcHVzaFRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoc3Vic2NyaXB0aW9uY2hh
bmdlIiwgcHVzaFN1YnNjcmlwdGlvbkNoYW5nZVRlc3QpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdXNoLWFwaS9pZGxoYXJuZXNzLmh0
dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVzaC1hcGkvaWRsaGFybmVzcy5odHRwcy5hbnkuc2Vy
dmljZXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNjMzYWQ3NzgzMmY5NDUzZTk4ZWU4YzJhYzY1
OWQ0YTEzZDA5ZmE1Zi4uZTBiNWU1NGE4NjNmZGVlNzhlZDEyMjExZTY5YzQ2OWZkZTFjZjY5YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9w
dXNoLWFwaS9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1c2gtYXBp
L2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC04MCw3
ICs4MCw3IEBAIFBBU1MgUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50IGludGVyZmFjZTogbmV3
IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgicHVzCiBQQVNTIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcHVzaE1hbmFnZXIKIFBBU1MgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IHJlZ2lzdHJhdGlvbiBtdXN0IGluaGVyaXQgcHJv
cGVydHkgInB1c2hNYW5hZ2VyIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogUEFTUyBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoCi1GQUlMIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbnB1c2hzdWJzY3JpcHRpb25j
aGFuZ2UgYXNzZXJ0X293bl9wcm9wZXJ0eTogVGhlIGdsb2JhbCBvYmplY3QgbXVzdCBoYXZlIGEg
cHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgZXhwZWN0ZWQgcHJvcGVydHkgIm9u
cHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlCiBQQVNT
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHBy
b3BlcnR5ICJvbnB1c2giIHdpdGggdGhlIHByb3BlciB0eXBlCi1GQUlMIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbnB1c2hz
dWJzY3JpcHRpb25jaGFuZ2UiIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9vd25fcHJvcGVy
dHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UiIG1pc3NpbmcK
K1BBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0IGluaGVy
aXQgcHJvcGVydHkgIm9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSIgd2l0aCB0aGUgcHJvcGVyIHR5
cGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDEyNjU3Y2JmMGRhOTkwMDlkMGIyYTk3Yzc5ZTU3MGI1
NGZkMTI3My4uMmQ4NmMyM2E5ZTJjZDc2ZTM2NWY2NzBmMDZiNjg5YjhlNDMxNTU2YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xMzYsNiArMTM2LDggQEAgd2Via2l0Lm9yZy9iLzIxNzY2OSBodHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHQKIHdl
YmtpdC5vcmcvYi8yMTc2NjkgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1z
cGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1z
cGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1z
cGlubmluZy1wdXNoLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjE3NjY5IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1wdXNoc3Vic2NyaXB0aW9uY2hhbmdlLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMTc2ODcgYWNjZXNzaWJpbGl0eS9hcmlhLWN1cnJlbnQu
aHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjE3Njg3IGFjY2Vzc2liaWxpdHkv
aW5zZXJ0LW5ld2xpbmUuaHRtbCBbIFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>