<?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>233490</bug_id>
          
          <creation_ts>2021-11-25 03:25:35 -0800</creation_ts>
          <short_desc>Reuse navigation preload if service worker is fetching the corresponding navigation request</short_desc>
          <delta_ts>2021-12-01 05:38:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233523</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817768</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-25 03:25:35 -0800</bug_when>
    <thetext>Reuse navigation preload is service worker is fetching the corresponding navigation request</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817770</commentid>
    <comment_count>1</comment_count>
      <attachid>445131</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-25 03:37:29 -0800</bug_when>
    <thetext>Created attachment 445131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817969</commentid>
    <comment_count>2</comment_count>
      <attachid>445201</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-26 07:09:51 -0800</bug_when>
    <thetext>Created attachment 445201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818673</commentid>
    <comment_count>3</comment_count>
      <attachid>445405</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-30 03:05:10 -0800</bug_when>
    <thetext>Created attachment 445405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818728</commentid>
    <comment_count>4</comment_count>
      <attachid>445405</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-30 07:58:11 -0800</bug_when>
    <thetext>Comment on attachment 445405
Patch

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

r=me with comments.

&gt; Source/WebCore/loader/ResourceLoaderOptions.h:226
&gt; +    FetchIdentifier navigationPreloadIdentifier;

We probably want to move this data member before the bitfield?

&gt; Source/WebKit/NetworkProcess/NetworkSession.h:178
&gt; +    ServiceWorkerFetchTask* navigationPreloaderTaskFromFetchIdentifier(WebCore::FetchIdentifier);

Shouldn&apos;t this be const?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:83
&gt; +    , m_timeoutTimer(makeUnique&lt;Timer&gt;(*this, &amp;ServiceWorkerFetchTask::timeoutTimerFired))

I don&apos;t understand this change. You made it a pointer and you unconditionally initialize it. Yet, you never seem to null the pointer out. I don&apos;t understand the purpose of making it a pointer and null checking it every time then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818732</commentid>
    <comment_count>5</comment_count>
      <attachid>445405</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-30 08:01:46 -0800</bug_when>
    <thetext>Comment on attachment 445405
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:83
&gt;&gt; +    , m_timeoutTimer(makeUnique&lt;Timer&gt;(*this, &amp;ServiceWorkerFetchTask::timeoutTimerFired))
&gt; 
&gt; I don&apos;t understand this change. You made it a pointer and you unconditionally initialize it. Yet, you never seem to null the pointer out. I don&apos;t understand the purpose of making it a pointer and null checking it every time then.

m_timeoutTimer is only created in one of the two ServiceWorkerFetchTask constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818741</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-30 08:06:10 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Comment on attachment 445405 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445405&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:83
&gt; &gt;&gt; +    , m_timeoutTimer(makeUnique&lt;Timer&gt;(*this, &amp;ServiceWorkerFetchTask::timeoutTimerFired))
&gt; &gt; 
&gt; &gt; I don&apos;t understand this change. You made it a pointer and you unconditionally initialize it. Yet, you never seem to null the pointer out. I don&apos;t understand the purpose of making it a pointer and null checking it every time then.
&gt; 
&gt; m_timeoutTimer is only created in one of the two ServiceWorkerFetchTask
&gt; constructor.

Oh, I missed that. All good then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819167</commentid>
    <comment_count>7</comment_count>
      <attachid>445546</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-01 03:23:09 -0800</bug_when>
    <thetext>Created attachment 445546
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819202</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-01 05:37:05 -0800</bug_when>
    <thetext>Committed r286361 (244720@main): &lt;https://commits.webkit.org/244720@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445546.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819203</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-01 05:38:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/85918450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445131</attachid>
            <date>2021-11-25 03:37:29 -0800</date>
            <delta_ts>2021-11-26 07:09:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233490-20211125123726.patch</filename>
            <type>text/plain</type>
            <size>49948</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RhMzk0OTE5NTQ4NDJh
OTE5MzdjNmE4Y2M2MTZhNTA5NjIwNmFjMi4uMzQ0MDk3MTU3YjYwMGM0YWNjOTc4MTlhYmYxZjIz
MzkzM2M0MGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTExLTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBuYXZpZ2F0aW9u
IHByZWxvYWQgaXMgc2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcg
bmF2aWdhdGlvbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdG9yZSB0aGUgZmV0Y2ggaWRlbnRpZmllciBpbiBGZXRjaFJlcXVlc3QgYXMg
dGhpcyBtaWdodCBiZSB1c2VkIGFzIHRoZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWRlbnRpZmllci4K
KyAgICAgICAgV2Ugc2V0IGl0IHdoZW4gY3JlYXRpbmcgYSBGZXRjaFJlcXVlc3QgZm9yIGZpcmlu
ZyBhIGZldGNoIGV2ZW50LgorICAgICAgICBUaGlzIGlkZW50aWZpZXIgaXMga2VwdCBpbiBjYXNl
IG9mIHJlcXVlc3QgY2xvbmluZyBvciB3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCBhcyBwYXJ0IG9m
IGNhbGxpbmcgZmV0Y2guCisgICAgICAgIEl0IGlzIHVzZWQgdG8gc2V0IHRoZSBuYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXIgaW4gUmVzb3VyY2VMb2FkZXJPcHRpb25zIHRoYXQgaXMgcGlwZWQg
dG8gV2ViTG9hZGVyU3RyYXRlZ3kuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVS
ZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydCk6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0Ojppbml0
aWFsaXplV2l0aCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmNsb25lKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpG
ZXRjaFJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpmZXRjaCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hFdmVudDo6Y3JlYXRlRm9yVGVzdGluZyk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZl
dGNoRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVh
ZFByb3h5OjpzdGFydEZldGNoKToKKwogMjAyMS0xMS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJlbG9hZCBuYXZpZ2F0aW9uIHJlcXVlc3QgaWYgdGhl
IHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBpbW1lZGlhdGVseSByZWFkeSB0byBoYW5kbGUgdGhlIG5h
dmlnYXRpb24gcmVxdWVzdCBmZXRjaCBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ODNjMDdkZTgzNmU4Y2Vh
ZDllZDZhYjljNzhhOWNmNzMwMDExNWEzLi5jNWNmN2M1YmY1MjQ5M2QxODc4ZWRmMmFiYWI2YjIx
NTU3MDYwNTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBuYXZpZ2F0aW9uIHBy
ZWxvYWQgaXMgc2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbmF2
aWdhdGlvbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdG9yZSBuYXZpZ2F0aW9uIHByZWxvYWRlciBpbiBOZXR3b3JrU2Vzc2lvbiwga2V5
ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgZmV0Y2ggaWRlbnRpZmllci4KKyAgICAgICAgV2hlbiBh
IG5hdmlnYXRpb24gcmVxdWVzdCBpcyBjb21pbmcgZnJvbSBmZXRjaCB3aXRoIHRoZSBjb3JyZXNw
b25kaW5nIG5hdmlnYXRpb24gcHJlbG9hZCBpZGVudGlmaWVyCisgICAgICAgIHdlIGxvb2sgYXQg
b25nb2luZyBwcmVsb2FkcyBhbmQgdXNlIGl0IGlmIGF2YWlsYWJsZSB0byBhbnN3ZXIgdGhlIGZl
dGNoLgorICAgICAgICBUbyBkbyBzbywgd2UgY3JlYXRlIGEgbmV3IFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2sgdGhhdCB3aWxsIHRha2UgdGhlIHByZWxvYWRlciBvZiB0aGUgaW5pdGlhbCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjph
ZGROYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uOjpyZW1vdmVOYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpuYXZpZ2F0aW9uUHJlbG9hZGVyVGFza0Zyb21GZXRjaElkZW50aWZpZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZnJvbU5hdmlnYXRpb25Q
cmVsb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRS
ZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpk
aWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90
SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGlu
dWVGZXRjaFRhc2tXaXRoKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6c2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmluaXRpYWxVUkwgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorCiAyMDIxLTEx
LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVsb2Fk
IG5hdmlnYXRpb24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0
ZWx5IHJlYWR5IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkwOThlMDVhZjRj
ODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjU2M2Y2ZTNjOWRiNjc2ZGQ4NTk1ZmYyMmI1
ZTM1ODJlOTA2Yjc2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBET01DYWNoZTo6cmVtb3ZlKFJlcXVlc3RJbmZv
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBET01Qcm9taXMKIHN0YXRpYyBS
ZWY8RmV0Y2hSZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZWNvcmQmIHJlY29yZCkKIHsKICAgICBhdXRv
IHJlcXVlc3RIZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUocmVjb3JkLnJlcXVlc3RIZWFk
ZXJzR3VhcmQsIEhUVFBIZWFkZXJNYXAgeyByZWNvcmQucmVxdWVzdC5odHRwSGVhZGVyRmllbGRz
KCkgfSk7Ci0gICAgcmV0dXJuIEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHN0ZDo6bnVs
bG9wdCwgV1RGTW92ZShyZXF1ZXN0SGVhZGVycyksICBSZXNvdXJjZVJlcXVlc3QgeyByZWNvcmQu
cmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyByZWNvcmQub3B0aW9ucyB9LCBTdHJpbmcgeyByZWNv
cmQucmVmZXJyZXIgfSk7CisgICAgcmV0dXJuIEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQs
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0SGVhZGVycyksICBSZXNvdXJjZVJlcXVlc3Qg
eyByZWNvcmQucmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyByZWNvcmQub3B0aW9ucyB9LCBTdHJp
bmcgeyByZWNvcmQucmVmZXJyZXIgfSwgeyB9KTsKIH0KIAogdm9pZCBET01DYWNoZTo6a2V5cyhz
dGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0
aW9ucywgS2V5c1Byb21pc2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCA2Y2JkMWY0OTNkNDgwN2M1MzJjMjgxM2VmZTE3ZmM5
MDE1OTVmNzQyLi5lOTg5MTQxYjc3YjhlM2VlNjg5MWY1ZTQ1YmUwYzMyZTk5ODQwNGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAtOTQsNiAr
OTQsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcQogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3M7CiAgICAgb3B0aW9ucy5k
YXRhQnVmZmVyaW5nUG9saWN5ID0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
OwogICAgIG9wdGlvbnMuc2FtZU9yaWdpbkRhdGFVUkxGbGFnID0gU2FtZU9yaWdpbkRhdGFVUkxG
bGFnOjpTZXQ7CisgICAgb3B0aW9ucy5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIgPSByZXF1
ZXN0Lm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcigpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IGZldGNoUmVxdWVzdCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCBhOTU0NzQwZDNlNDNj
ZGUzMTIwYzEzMzViNjJkNzE0Yjc2ZDExYWZlLi42MmFiZWY1Y2RmM2NmZjlmZmExODQ1MWFlOWNh
OGViOTYwNGViY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuY3BwCkBAIC0yMDUsNiArMjA1LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1
ZXN0Ojppbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcmIHVybCwgSW5pdCYmIGluaXQpCiBFeGNl
cHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKEZldGNoUmVxdWVzdCYg
aW5wdXQsIEluaXQmJiBpbml0KQogewogICAgIG1fcmVxdWVzdCA9IGlucHV0Lm1fcmVxdWVzdDsK
KyAgICBtX3JlcXVlc3Quc2V0UmVxdWVzdGVyKFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpG
ZXRjaCk7CisgICAgbV9uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIgPSBpbnB1dC5uYXZpZ2F0
aW9uUHJlbG9hZElkZW50aWZpZXIoKTsKKwogICAgIG1fb3B0aW9ucyA9IGlucHV0Lm1fb3B0aW9u
czsKICAgICBtX3JlZmVycmVyID0gaW5wdXQubV9yZWZlcnJlcjsKIApAQCAtMjczLDcgKzI3Niw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZldGNoUmVxdWVzdDo6c2V0Qm9keShGZXRjaFJlcXVlc3Qm
IHJlcXVlc3QpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRjaFJlcXVlc3Q6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJbmZvJiYgaW5wdXQsIElu
aXQmJiBpbml0KQogewotICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1
ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFk
ZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsgfSwgeyB9LCB7IH0pKTsKKyAgICBhdXRvIHJlcXVlc3Qg
PSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNo
SGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlcXVlc3QpLCB7IH0sIHsgfSwg
eyB9LCB7IH0pKTsKIAogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oaW5w
dXQpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVzdC0+aW5pdGlhbGl6ZVdpdGgoc3Rk
OjpnZXQ8U3RyaW5nPihpbnB1dCksIFdURk1vdmUoaW5pdCkpOwpAQCAtMzIyLDcgKzMyNSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRjaFJlcXVlc3Q6OmNsb25lKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAgICAgaWYgKGlzRGlzdHVyYmVkT3JMb2NrZWQoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJvZHkgaXMgZGlzdHVyYmVk
IG9yIGxvY2tlZCJfcyB9OwogCi0gICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hS
ZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFk
ZXJzLmdldCgpKSwgUmVzb3VyY2VSZXF1ZXN0IHsgbV9yZXF1ZXN0IH0sIEZldGNoT3B0aW9ucyB7
IG1fb3B0aW9uc30sIFN0cmluZyB7IG1fcmVmZXJyZXIgfSkpOworICAgIGF1dG8gY2xvbmUgPSBh
ZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIFJlc291cmNlUmVxdWVzdCB7IG1fcmVxdWVz
dCB9LCBGZXRjaE9wdGlvbnMgeyBtX29wdGlvbnMgfSwgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBt
X25hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcikpOwogICAgIGNsb25lLT5jbG9uZUJvZHkoKnRo
aXMpOwogICAgIGNsb25lLT5tX3NpZ25hbC0+c2lnbmFsRm9sbG93KG1fc2lnbmFsKTsKICAgICBy
ZXR1cm4gY2xvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
aAppbmRleCA0NWZjYjcwZTNlZTg5MDc5NzBmZTFlNjVmNjhjYjZiYzQ3Y2RmMDhmLi5jMTYwNDhh
MGQwN2VmMmYxZmU5Y2RlNTE2NTRkMGFlZTk1NmRmOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJB
Ym9ydFNpZ25hbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hC
b2R5T3duZXIuaCIKKyNpbmNsdWRlICJGZXRjaElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGZXRj
aE9wdGlvbnMuaCIKICNpbmNsdWRlICJGZXRjaFJlcXVlc3RJbml0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWRp
cmVjdCA9IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q7CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEZldGNoUmVxdWVzdD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSW5mbyYm
LCBJbml0JiYpOwotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwg
UmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBG
ZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShoZWFk
ZXJzKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWZlcnJl
cikpKTsgfQorICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVm
PEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRj
aE9wdGlvbnMmJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hJZGVudGlmaWVyIG5h
dmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJl
cXVlc3QoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShoZWFkZXJzKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWZlcnJlciksIG5hdmlnYXRpb25Q
cmVsb2FkSWRlbnRpZmllcikpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1ldGhvZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdC5odHRwTWV0aG9kKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZygpIGNvbnN0OwpAQCAtODAsOSArODEsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CisgICAgRmV0Y2hJZGVudGlmaWVyIG5h
dmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvblBy
ZWxvYWRJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVh
ZGVycz4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmLCBTdHJpbmcmJiByZWZl
cnJlcik7CisgICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9w
dGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIEZldGNoT3B0aW9ucyYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hJZGVudGlmaWVyKTsK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGluaXRpYWxpemVPcHRpb25zKGNvbnN0IEluaXQmKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbml0aWFsaXplV2l0aChGZXRjaFJlcXVlc3QmLCBJbml0
JiYpOwpAQCAtOTcsMTQgKzk5LDE2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7
CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXF1ZXN0VVJMOwogICAgIFJlZjxBYm9ydFNpZ25hbD4g
bV9zaWduYWw7CisgICAgRmV0Y2hJZGVudGlmaWVyIG1fbmF2aWdhdGlvblByZWxvYWRJZGVudGlm
aWVyOwogfTsKIAotaW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJl
ZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0
Y2hPcHRpb25zJiYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCitpbmxpbmUgRmV0Y2hSZXF1
ZXN0OjpGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjpv
cHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBTdHJpbmcm
JiByZWZlcnJlciwgRmV0Y2hJZGVudGlmaWVyIG5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcikK
ICAgICA6IEZldGNoQm9keU93bmVyKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVh
ZGVycykpCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKICAgICAsIG1fb3B0aW9u
cyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9yZWZlcnJlcihXVEZNb3ZlKHJlZmVycmVyKSkK
ICAgICAsIG1fc2lnbmFsKEFib3J0U2lnbmFsOjpjcmVhdGUoY29udGV4dCkpCisgICAgLCBtX25h
dmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcihuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIpCiB7
CiAgICAgdXBkYXRlQ29udGVudFR5cGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2
NDYwMDQ2ZTQ2YmQ1MzYuLjY4MGFkMTU0OWIzZGU2MjkwNTEwYTA2YjUzMDI3ZDc3YzhkOGI0YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtMjI5LDYgKzIyOSw5IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6YWRkQWJvcnRTdGVwcyhSZWY8
QWJvcnRTaWduYWw+JiYgc2lnbmFsKQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgTm90aWZp
Y2F0aW9uQ2FsbGJhY2smJiByZXNwb25zZUNhbGxiYWNrKQogeworICAgIGlmIChyZXF1ZXN0Lm5h
dmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcigpKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZl
dGNoUmVzcG9uc2U6OmZldGNoIHdlIGhhdmUgYSBmZXRjaElkZW50aWZpZXJcbiIpOworCiAgICAg
aWYgKHJlcXVlc3Quc2lnbmFsKCkuYWJvcnRlZCgpKSB7CiAgICAgICAgIHJlc3BvbnNlQ2FsbGJh
Y2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIlJlcXVlc3Qgc2lnbmFsIGlzIGFib3J0ZWQiX3Mg
fSk7CiAgICAgICAgIC8vIEZJWE1FOiBDYW5jZWwgcmVxdWVzdCBib2R5IGlmIGl0IGlzIGEgc3Ry
ZWFtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi4x
NmRjNDMzMTNiMjI4OWNmZjVhODFkYWMyNmRkNTAwZDgxOTI2YTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTYzLDcg
KzU2Myw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgICAgIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBvcHRpb25zID0gbV9vcHRpb25zOwogICAgICAgICBvcHRpb25zLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPSBtX3NhbWVPcmlnaW5SZXF1ZXN0ID8gQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgOiBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpD
YW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKICAgICAgICAgb3B0aW9ucy5jb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6
U2tpcFBvbGljeUNoZWNrOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGVyZSBpcyBpbnRl
Z3JpdHkgbWV0YWRhdGEgdG8gdmFsaWRhdGUsIHdlIG11c3QgYnVmZmVyLgogICAgICAgICBpZiAo
IW1fb3B0aW9ucy5pbnRlZ3JpdHkuaXNFbXB0eSgpKQogICAgICAgICAgICAgb3B0aW9ucy5kYXRh
QnVmZmVyaW5nUG9saWN5ID0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCBhMTlkY2Q0
OGQxYTNhZjU0YTAzMDg2NzNiYjc0NjQ4MWU1NWUyN2Q5Li5hY2MxMmY3MzNmNTZmZGQ0YzA0NmUy
MjNiM2VhODdhMTg2NWNlZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgorI2luY2x1
ZGUgIkZldGNoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZldGNoT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpA
QCAtMjIyLDYgKzIyMyw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgOiBwdWJsaWMg
RmV0Y2hPcHRpb25zIHsKICAgICBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRp
YWxQb2xpY3kgOiBiaXRXaWR0aE9mQ2xpZW50Q3JlZGVudGlhbFBvbGljeTsKICAgICBQcmVmbGln
aHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5IDogYml0V2lkdGhPZlByZWZsaWdodFBvbGljeTsKICAg
ICBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UgOiBiaXRXaWR0
aE9mTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTsKKyAgICBGZXRjaElkZW50aWZpZXIgbmF2aWdhdGlv
blByZWxvYWRJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDFiNjUzMmMzYjBlYWE4
MGQ5YmQ0NmM2ZDQzMjEzNjk2MjFjMDE5YmIuLjIwODY4N2FkMTU2NTM4NTE5OTQ5OWI0OTBjYzJi
MWM4NTFjNTI1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTkxLDYgKzkxLDcgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgY29weS5jbGllbnRDcmVkZW50
aWFsUG9saWN5ID0gdGhpcy0+Y2xpZW50Q3JlZGVudGlhbFBvbGljeTsKICAgICBjb3B5Lm1heFJl
ZGlyZWN0Q291bnQgPSB0aGlzLT5tYXhSZWRpcmVjdENvdW50OwogICAgIGNvcHkucHJlZmxpZ2h0
UG9saWN5ID0gdGhpcy0+cHJlZmxpZ2h0UG9saWN5OworICAgIGNvcHkubmF2aWdhdGlvblByZWxv
YWRJZGVudGlmaWVyID0gdGhpcy0+bmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwogCiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMKICAgICBjb3B5LmNvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50ID0gdGhpcy0+Y29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5kZXggYWZj
ZDZlOWNkMDU0ZGVjYTRiNjVhYWNjNGMzY2M0Yzg3ZjI5NDU2Ni4uODZiMTM5YzA1ZGE0NzgwNTgz
OGFkZWRmMTZlOWM1ODRhOTI5YjBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9GZXRjaEV2ZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRmV0Y2hFdmVudCk7CiBSZWY8RmV0Y2hFdmVudD4gRmV0Y2hFdmVudDo6Y3JlYXRl
Rm9yVGVzdGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIEZldGNo
RXZlbnQ6OkluaXQgaW5pdDsKLSAgICBpbml0LnJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6
OkltbXV0YWJsZSwgeyB9KSwgeyB9LCB7IH0sIHsgfSk7CisgICAgaW5pdC5yZXF1ZXN0ID0gRmV0
Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRj
aEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUsIHsgfSksIHsgfSwgeyB9LCB7IH0sIHsgfSk7CiAg
ICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNyZWF0ZSgiZmV0Y2giLCBXVEZNb3ZlKGluaXQpLCBFdmVu
dDo6SXNUcnVzdGVkOjpZZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0
ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li5lOGU3MjllMzlkNDAwYWRh
YWI3Y2QxYmNlOTVlOWY5OGQxYjhjNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAg
LTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4m
JiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIH0pOwogfQogCi12
b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0
cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQordm9pZCBkaXNwYXRjaEZl
dGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYg
Z2xvYmFsU2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJl
ciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
cikKIHsKICAgICBhdXRvIHJlcXVlc3RIZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlLCBIVFRQSGVhZGVyTWFwIHsgcmVxdWVzdC5odHRw
SGVhZGVyRmllbGRzKCkgfSk7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIGRpc3BhdGNoRmV0
Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBn
bG9iYWxTYwogICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVj
dDo6TWFudWFsOwogCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgIGF1
dG8gZmV0Y2hSZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoZ2xvYmFsU2NvcGUsIFdURk1v
dmUoYm9keSksIFdURk1vdmUocmVxdWVzdEhlYWRlcnMpLCAgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWZlcnJlcikpOworICAgIGF1dG8gZmV0Y2hSZXF1ZXN0
ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoZ2xvYmFsU2NvcGUsIFdURk1vdmUoYm9keSksIFdURk1v
dmUocmVxdWVzdEhlYWRlcnMpLCAgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSwg
V1RGTW92ZShyZWZlcnJlciksIGZldGNoSWRlbnRpZmllcik7CiAKICAgICBGZXRjaEV2ZW50OjpJ
bml0IGluaXQ7CiAgICAgaW5pdC5yZXF1ZXN0ID0gV1RGTW92ZShmZXRjaFJlcXVlc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guaAppbmRleCBmYzVhNzI1OGU0N2U2N2FkZGRmYjE2MjE5ZDQ4ZmZlNjRh
NThhOWIxLi43NjcxNDZiYjAyMzY0ZGRhMWVmNzFhMDExMzQzOWFiY2U1ZTVkOTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgPSAwOwogfTsKIAotdm9pZCBkaXNwYXRj
aEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgc3Rk
OjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4sIFJlc291cmNlUmVx
dWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYpOwordm9pZCBkaXNwYXRj
aEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgc3Rk
OjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4sIFJlc291cmNlUmVx
dWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmll
cik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCmluZGV4IDlhNmMyZDUzNzRkMjFmNjUyNjY5ZDZkNzlmMzQ2NTk1NTVjZDcyYzkuLjY0NjBm
MGY2NWYwNTkwNmZjYmRhOGZlMTY1NmUyNWVhODdjNjVhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCkBAIC0xMjQsMTEgKzEyNCwxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OnJ1bkV2ZW50TG9vcCgpCiAgICAgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKTsKIH0KIAot
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxT
ZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQordm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2
aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElk
ZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIFJlZiBzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgp
KTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNs
aWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVl
c3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRpb25zID0gV1RGTW92ZShvcHRp
b25zKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgU2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZl
dGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVu
dElkLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25z
KSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBj
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0
aW9ucyksIGZldGNoSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgU2VydmljZVdvcmtl
ckZldGNoOjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUsIGNsaWVudElkLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVy
KSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5oCmluZGV4IDQwNjdkMTZkZTkyZDNiMzIxZTYyMDA0MDgxMzViMjlk
NmIxYzcyZjYuLmQ5ZTMzNjUxOWM1ZDA1YjgzNmY4NDEyMDg5MzUzMmU3OWE0MWMzMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
d2lsbFBvc3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tU
b0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZvaWQgcXVldWVUYXNr
VG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYsIFJlc291cmNlUmVx
dWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYpOworICAgIHZvaWQgcXVl
dWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYs
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYsIFJlc291
cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRl
bnRpZmllcik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAg
ICB2b2lkIHF1ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgcXVldWVUYXNr
VG9GaXJlQWN0aXZhdGVFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKaW5kZXggYTE3MzBlZDQ0YzNkMmViZDIwOGZkNThjNDk4NzI4OWQ0OWEwMzBmOC4uYTQxNzI0
YWIxNDFlZmRiZDJmY2M2MjJmZWM0MTEyZWQzNGM4OTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCkBAIC0yMjYsOCArMjI2LDggQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW8KIAogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5jb250YWlucyhrZXkpKTsK
ICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVudC5jb3B5UmVmKCkpOwotICAg
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVu
dElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJl
ci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCldKGF1dG8m
KSBtdXRhYmxlIHsKLSAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChX
VEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1
ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBv
cHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKSwgZmV0Y2hJZGVudGlmaWVyXShhdXRvJikg
bXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoV1RG
TW92ZShjbGllbnQpLCBXVEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllcik7CiAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKaW5kZXggNmJiMGJlODQ0NmEwOWZkNDVkNWMwODc4YzgwZjY2YWU1YjE2ZDFhZC4uNGE2
ZDYzM2RiMjgwMTUyMGViZTM0M2NjNTY5ZDg0MmUwYzE4NGJiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBodHRwSGVhZGVyc1RvS2VlcDsK
KyAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcjsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTM2Miw2ICszNjMsMTIgQEAgc3RkOjpv
cHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmRlY28KICAgICBpZiAoIWh0dHBIZWFkZXJzVG9LZWVwKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5odHRwSGVhZGVyc1RvS2VlcCA9IFdURk1v
dmUoKmh0dHBIZWFkZXJzVG9LZWVwKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxGZXRjaElkZW50aWZpZXI+PiBuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CisgICAgZGVj
b2RlciA+PiBuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CisgICAgaWYgKCFuYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVz
dWx0Lm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllciA9ICpuYXZpZ2F0aW9uUHJlbG9hZElkZW50
aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgKaW5kZXggN2JhMTNmYmI5NmZlODc5ZTcxNjViMDZjZTA4MzY3OTkyN2Vl
NWI5NC4uYzFlNDU1ODRlNDdmY2Y3YTNjNDk5NmIxZjRlYzZmN2RhYWYzODkyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaApAQCAtNzcsMTEgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBXZWJDb3Jl
OjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSBzb3VyY2VDcm9zc09yaWdpbk9wZW5lclBvbGljeTsK
ICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpOYXZpZ2F0aW9uUmVxdWVzdGVyPiBuYXZpZ2F0aW9uUmVxdWVzdGVyOwotICAgIAorCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9k
ZSBzZXJ2aWNlV29ya2Vyc01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBPcHRp
b25TZXQ8V2ViQ29yZTo6SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+IGh0dHBIZWFkZXJz
VG9LZWVwOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyPiBuYXZp
Z2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IDZkOGFjZTJlMmQxMGY4NTY1MjcxNGNhODVjYmI2ZjE4NDUzODg2ZjQuLmZh
MDMwZWU1ODA0ZDViZjk3ZTk1NDc1ZjEwODMwNGNlZGJlMDM3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTU0Niw0ICs1
NDcsMjEgQEAgU3RyaW5nIE5ldHdvcmtTZXNzaW9uOjphdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmll
ckZyb21QYWdlSWRlbnRpZmllcihXZWJQYWdlUHJveHkKICAgICByZXR1cm4gbV9hdHRyaWJ1dGVk
QnVuZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcnMuZ2V0KGlkZW50aWZpZXIpOwogfQog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkTmF2
aWdhdGlvblByZWxvYWRlclRhc2soU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKK3sKKyAg
ICBtX25hdmlnYXRpb25QcmVsb2FkZXJzLmFkZCh0YXNrLmZldGNoSWRlbnRpZmllcigpLCB0YXNr
KTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlTmF2aWdhdGlvblByZWxvYWRlclRh
c2soU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKK3sKKyAgICBtX25hdmlnYXRpb25QcmVs
b2FkZXJzLnJlbW92ZSh0YXNrLmZldGNoSWRlbnRpZmllcigpKTsKK30KKworU2VydmljZVdvcmtl
ckZldGNoVGFzayogTmV0d29ya1Nlc3Npb246Om5hdmlnYXRpb25QcmVsb2FkZXJUYXNrRnJvbUZl
dGNoSWRlbnRpZmllcihGZXRjaElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
bV9uYXZpZ2F0aW9uUHJlbG9hZGVycy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggM2RkZGY0YjMyODhkM2IyNzQxZWEzYWVmZDk4ZDEzZjc4
NGMxZWI3NC4uYjgwMjdiYTI1Y2EzZmI2N2YwOTAwMTBkM2E3YmY4YzYzNTA0M2QwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JS
ZWdpc3RyeUltcGwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5OwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CitjbGFzcyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogY2xhc3MgV2ViU29ja2V0VGFzazsKQEAgLTE3Miw2
ICsxNzQsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQg
YWRkU29mdFVwZGF0ZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI+JiYgbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMuYWRkKFdURk1vdmUobG9h
ZGVyKSk7IH0KICAgICB2b2lkIHJlbW92ZVNvZnRVcGRhdGVMb2FkZXIoU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIqIGxvYWRlcikgeyBtX3NvZnRVcGRhdGVMb2FkZXJzLnJlbW92ZShsb2Fk
ZXIpOyB9CisgICAgdm9pZCBhZGROYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayhTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrJik7CisgICAgU2VydmljZVdvcmtlckZldGNoVGFzayogbmF2aWdhdGlvblByZWxv
YWRlclRhc2tGcm9tRmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7Cisg
ICAgdm9pZCByZW1vdmVOYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayhTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrJik7CiAjZW5kaWYKIAogICAgIE5ldHdvcmtMb2FkU2NoZWR1bGVyJiBuZXR3b3JrTG9hZFNj
aGVkdWxlcigpOwpAQCAtMjU1LDggKzI2MCw5IEBAIHByb3RlY3RlZDoKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4+IG1f
bmF2aWdhdGlvblByZWxvYWRlcnM7CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CmluZGV4IDBjYmY5ODZmNzQxOTM5YjE0ZWYyOWJhZGM3OTYxZTVkZDMyZjgzN2IuLjUyYTg5NzUy
ODhlZWFlNDk5YmI1YzEwZTkyYWVjNzE5N2ZhYzIzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNTAs
NiArNTEsMzIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gU2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZnJvbU5hdmlnYXRpb25QcmVsb2FkZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
JiBzd1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5ldHdvcmtTZXNzaW9uKiBzZXNz
aW9uKQoreworICAgIC8vIEZJWE1FOiBnZXQgZmV0Y2ggaWRlbnRpZmllci4KKyAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdGFzayA9IHNlc3Npb24gPyBzZXNzaW9uLT5uYXZp
Z2F0aW9uUHJlbG9hZGVyVGFza0Zyb21GZXRjaElkZW50aWZpZXIoKmxvYWRlci5wYXJhbWV0ZXJz
KCkubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyKSA6IG51bGxwdHI7CisgICAgaWYgKCF0YXNr
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghdGFzay0+bV9wcmVsb2FkZXIg
fHwgdGFzay0+bV9pc0xvYWRpbmdGcm9tUHJlbG9hZGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gcHJlbG9hZCA9IHN0ZDo6ZXhjaGFuZ2UodGFzay0+bV9wcmVsb2FkZXIs
IHsgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oc3dT
ZXJ2ZXJDb25uZWN0aW9uLCBsb2FkZXIsIFdURk1vdmUocHJlbG9hZCkpOworfQorCitTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYgc3dTZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
c3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyPiYmIHByZWxv
YWRlcikKKyAgICA6IG1fc3dTZXJ2ZXJDb25uZWN0aW9uKHN3U2VydmVyQ29ubmVjdGlvbikKKyAg
ICAsIG1fbG9hZGVyKGxvYWRlcikKKyAgICAsIG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fcHJlbG9hZGVyKFdURk1vdmUocHJl
bG9hZGVyKSkKK3sKKyAgICBsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyKCk7Cit9CisKIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uJiBzd1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwg
TmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGJvb2wgaXNXb3JrZXJSZWFkeSkKICAgICA6IG1fc3dT
ZXJ2ZXJDb25uZWN0aW9uKHN3U2VydmVyQ29ubmVjdGlvbikKICAgICAsIG1fbG9hZGVyKGxvYWRl
cikKQEAgLTU3LDE3ICs4NCwyMSBAQCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJDbwogICAgICwgbV9z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAg
ICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAg
ICAgLCBtX2N1cnJlbnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCi0gICAgLCBtX3RpbWVvdXRU
aW1lcigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKQor
ICAgICwgbV9pbml0aWFsVVJMKG1fY3VycmVudFJlcXVlc3QudXJsKCkpCisgICAgLCBtX3RpbWVv
dXRUaW1lcihtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OnRpbWVvdXRUaW1lckZpcmVkKSkKICAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSkKICAgICAsIG1fc2hvdWxkU29mdFVw
ZGF0ZShyZWdpc3RyYXRpb24uc2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9w
dGlvbnMpKQogewogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coIlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6IChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCAiKSIsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQo
KSwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIG1fdGltZW91dFRpbWVyLnN0
YXJ0T25lU2hvdChsb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtQcm9jZXNz
KCkuc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKTsKKworICAgIG1fdGltZW91dFRpbWVyLT5z
dGFydE9uZVNob3QobG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2Vz
cygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiAKICAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgZXh0ZW5kaW5nIHRoaXMgYmFzZWQgb24gbmF2aWdhdGlvbiBwcmVsb2FkIG1hbmFnZXIuCi0g
ICAgYm9vbCBzaG91bGREb05hdmlnYXRpb25QcmVsb2FkID0gaXNOYXZpZ2F0aW9uUmVxdWVzdChs
b2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuZGVzdGluYXRpb24pICYmIGxvYWRlci5vcmlnaW5h
bFJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIkdFVCI7Ci0gICAgaWYgKHNob3VsZERvTmF2aWdh
dGlvblByZWxvYWQgJiYgIWlzV29ya2VyUmVhZHkpCisgICAgYm9vbCBzaG91bGREb05hdmlnYXRp
b25QcmVsb2FkID0gc2Vzc2lvbiAmJiBpc05hdmlnYXRpb25SZXF1ZXN0KGxvYWRlci5wYXJhbWV0
ZXJzKCkub3B0aW9ucy5kZXN0aW5hdGlvbikgJiYgbG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpLmh0
dHBNZXRob2QoKSA9PSAiR0VUIjsKKyAgICBpZiAoc2hvdWxkRG9OYXZpZ2F0aW9uUHJlbG9hZCAm
JiAhaXNXb3JrZXJSZWFkeSkgewogICAgICAgICBtX3ByZWxvYWRlciA9IG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI+KCpzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMgeyBsb2FkZXIucGFyYW1ldGVycygpIH0pOworICAgICAgICBzZXNzaW9uLT5hZGROYXZp
Z2F0aW9uUHJlbG9hZGVyVGFzaygqdGhpcyk7CisgICAgfQogfQogCiBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjp+U2VydmljZVdvcmtlckZldGNoVGFzaygpCkBAIC03Niw4ICsxMDcsMTMgQEAgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogICAgIGlmICht
X3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQogICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb25uZWN0
aW9uLT51bnJlZ2lzdGVyRmV0Y2goKnRoaXMpOwogCi0gICAgaWYgKG1fcHJlbG9hZGVyKQorICAg
IGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNl
c3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPnJlbW92ZU5hdmlnYXRpb25QcmVsb2FkZXJU
YXNrKCp0aGlzKTsKKwogICAgICAgICBtX3ByZWxvYWRlci0+Y2FuY2VsKCk7CisgICAgICAgIG1f
cHJlbG9hZGVyID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3Nh
Z2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtlcihNZXNz
YWdlJiYgbWVzc2FnZSkKQEAgLTEzMSw2ICsxNjcsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OnN0YXJ0RmV0Y2goKQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
CiB7CiAgICAgaWYgKG1fcHJlbG9hZGVyKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
dGhpcy0+c2Vzc2lvbigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlTmF2aWdhdGlvblBy
ZWxvYWRlclRhc2soKnRoaXMpOworCiAgICAgICAgIG1fcHJlbG9hZGVyLT5jYW5jZWwoKTsKICAg
ICAgICAgbV9wcmVsb2FkZXIgPSBudWxscHRyOwogICAgIH0KQEAgLTE0NSw3ICsxODQsOCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZQogCiAgICAgU1dGRVRDSF9SRUxFQVNFX0xPRygicHJvY2Vz
c1JlZGlyZWN0UmVzcG9uc2U6Iik7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBtX3Rp
bWVvdXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQorICAgICAgICBtX3Rp
bWVvdXRUaW1lci0+c3RvcCgpOwogICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwogCiAgICAgaWYg
KHNob3VsZFNldFNvdXJjZSA9PSBTaG91bGRTZXRTb3VyY2U6OlllcykKQEAgLTE1OCw2ICsxOTgs
OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZWRpcmVjdFJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIGlm
IChtX3ByZWxvYWRlcikgeworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Np
b24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPnJlbW92ZU5hdmlnYXRpb25QcmVsb2FkZXJUYXNr
KCp0aGlzKTsKKwogICAgICAgICBtX3ByZWxvYWRlci0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcHJl
bG9hZGVyID0gbnVsbHB0cjsKICAgICB9CkBAIC0xNzIsNyArMjE1LDggQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBib29sIG4KIAogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coInByb2Nlc3NSZXNwb25zZTog
KGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBl
Y3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0ICIsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlPSVkLCBzb3VyY2U9JXUpIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
cmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZXNwb25zZS5zb3VyY2UoKSkpOwogICAgIG1fd2FzSGFuZGxlZCA9
IHRydWU7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVvdXRUaW1l
cikKKyAgICAgICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZOZWVk
ZWQoKTsKIAogICAgIGlmIChtX2xvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKQEAgLTIwNyw3ICsyNTEsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgaW50NgogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fdGlt
ZW91dFRpbWVyIHx8ICFtX3RpbWVvdXRUaW1lci0+aXNBY3RpdmUoKSk7CiAgICAgc2VuZFRvQ2xp
ZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIApAQCAtMjE2LDI1ICsyNjAsMjYgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYgZm8KICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3RpbWVv
dXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXItPmlzQWN0aXZlKCkpOwogICAgIC8vIEZJWE1FOiBB
bGxvdyBXZWJSZXNvdXJjZUxvYWRlciB0byByZWNlaXZlIGZvcm0gZGF0YS4KIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2goKQogewotICAgIEFTU0VSVCghbV90aW1l
b3V0VGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lciB8fCAhbV90
aW1lb3V0VGltZXItPmlzQWN0aXZlKCkpOwogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coImRpZEZp
bmlzaDoiKTsKIAogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICBtX3RpbWVvdXRUaW1lci5zdG9w
KCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQorICAgICAgICBtX3RpbWVvdXRUaW1lci0+c3Rv
cCgpOwogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZp
bmlzaFJlc291cmNlTG9hZCB7IHsgfSB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1faXNEb25l
ID0gdHJ1ZTsKLSAgICBpZiAobV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICBt
X3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyICYmIG1fdGltZW91
dFRpbWVyLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fdGltZW91dFRpbWVyLT5zdG9wKCk7CiAg
ICAgICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwogICAgIH0KICAgICBpZiAobV9wcmVsb2FkZXIp
CkBAIC0yNTAsNyArMjk1LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RI
YW5kbGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWRO
b3RIYW5kbGU6Iik7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVv
dXRUaW1lcikKKyAgICAgICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBzb2Z0VXBkYXRl
SWZOZWVkZWQoKTsKIAogICAgIGlmIChtX3ByZWxvYWRlcikgewpAQCAtMjk1LDcgKzM0MSw4IEBA
IHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tXaXRoKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIG1fbG9hZGVyLnNlcnZpY2VXb3JrZXJEaWRO
b3RIYW5kbGUodGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV90aW1lb3V0VGlt
ZXIuc3RhcnRPbmVTaG90KG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3Jr
UHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CisgICAgaWYgKG1fdGltZW91
dFRpbWVyKQorICAgICAgICBtX3RpbWVvdXRUaW1lci0+c3RhcnRPbmVTaG90KG1fbG9hZGVyLmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXQoKSk7CiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAg
ICAgc3RhcnRGZXRjaCgpOwogfQpAQCAtMzcwLDYgKzQxNywxMSBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcigpCiAgICAgfSk7CiB9CiAKK05ldHdv
cmtTZXNzaW9uKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1
cm4gbV9zd1NlcnZlckNvbm5lY3Rpb24gPyBtX3N3U2VydmVyQ29ubmVjdGlvbi0+c2Vzc2lvbigp
IDogbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBTV0ZFVENI
X1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCA5
MGNkY2FlODU0MDNlNmE2M2Q1MGEwNWNiYTZjN2E5MGEzOWUyZjY3Li43YjNjMTM1YjM2Njc5M2Q3
YWI1M2ExNDAyNDM3YTFlMzFhZTRiZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02MCw3ICs2MiwxMSBAQCBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b247CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s+IGZyb21OYXZpZ2F0aW9uUHJlbG9hZGVyKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE5ldHdv
cmtTZXNzaW9uKik7CisKICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBOZXR3
b3JrU2Vzc2lvbiosIGJvb2wgaXNXb3JrZXJSZWFkeSk7CisgICAgU2VydmljZVdvcmtlckZldGNo
VGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24mLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI+JiYpOworCiAgICAg
flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJik7CkBAIC03Myw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9m
ZXRjaElkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXI7IH0KIAorICAgIGNvbnN0IFVSTCYgaW5pdGlhbFVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5pdGlhbFVSTDsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB0YWtlUmVxdWVz
dCgpIHsgcmV0dXJuIFdURk1vdmUobV9jdXJyZW50UmVxdWVzdCk7IH0KIAogICAgIHZvaWQgY2Fu
bm90SGFuZGxlKCk7CkBAIC05Nyw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc29mdFVw
ZGF0ZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyKCk7CiAg
ICAgdm9pZCBsb2FkQm9keUZyb21QcmVsb2FkZXIoKTsKKyAgICBOZXR3b3JrU2Vzc2lvbiogc2Vz
c2lvbigpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9TZXJ2
aWNlV29ya2VyKE1lc3NhZ2UmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9v
bCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKQEAgLTEwOCw3ICsxMTYsOCBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1
cnJlbnRSZXF1ZXN0OwotICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOworICAgIFVS
TCBtX2luaXRpYWxVUkw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRpbWVyPiBtX3Rp
bWVvdXRUaW1lcjsKICAgICBib29sIG1fd2FzSGFuZGxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2lzRG9uZSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY4ZDM4ZjVkNjM2MzhjYjk5
ZDhiNzBiZWQwMzFiMmVkZDNlMTFlMS4uZTA3ZDZkYTVmY2IxZTg1ZjcwNjFjMWFjNzc3ZDczNWYx
NGRhNGM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE1
Miw4ICsxNTIsMTMgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW4KIAogc3RkOjp1bmlxdWVfcHRy
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0
Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtl
cnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICBpZiAobG9hZGVyLnBhcmFt
ZXRlcnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKSB7
CisgICAgICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygpLnJlcXVlc3QucmVxdWVzdGVyKCkgPT0g
UmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoICYmIGlzTmF2aWdhdGlvblJlcXVlc3Qo
bG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8gdGFzayA9IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZyb21OYXZpZ2F0aW9uUHJl
bG9hZGVyKCp0aGlzLCBsb2FkZXIsIHJlcXVlc3QsIHNlc3Npb24oKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRhc2s7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQogCiAgICAgaWYgKCFzZXJ2ZXIoKS5jYW5IYW5kbGVTY2hlbWUobG9hZGVyLm9yaWdpbmFsUmVx
dWVzdCgpLnVybCgpLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAppbmRleCBjNjM1Nzc5MjliNWUwMjQyM2UzNTIyYjAwNzM5ZTMwM2Y3ZmQ4YjkwLi5lYzA2
YTUyZDA4MmZiNTRjM2ExMjhjMjAyY2Y5ZmE0YmMxZjViMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0z
MzMsNiArMzMzLDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBsb2FkUGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2Vyc01vZGUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSA9PSBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyA/IHJlc291cmNlTG9h
ZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5v
bmU7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI7CiAgICAgbG9hZFBhcmFtZXRlcnMuaHR0cEhlYWRlcnNUb0tlZXAgPSByZXNvdXJj
ZUxvYWRlci5vcHRpb25zKCkuaHR0cEhlYWRlcnNUb0tlZXA7CisgICAgaWYgKHJlc291cmNlTG9h
ZGVyLm9wdGlvbnMoKS5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIpCisgICAgICAgIGxvYWRQ
YXJhbWV0ZXJzLm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9w
dGlvbnMoKS5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIGF1dG8q
IGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjJhZDBiZDM2MmE4ZmZiM2Y1MzE1ZWE4OGJmMTAyZTM0MzBmYzJkMS4uZjIxNzIzYmE0NTU1M2Y2
NDRmY2E2MTc1Nzg1M2UyNWEyMTQ1Yzk3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEx
LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBu
YXZpZ2F0aW9uIHByZWxvYWQgaXMgc2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJl
c3BvbmRpbmcgbmF2aWdhdGlvbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2
aWNlLXdvcmtlci1wcmVsb2FkLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgIChvbmluc3RhbGwp
OgorICAgICAgICAob25tZXNzYWdlKToKKyAgICAgICAgKG9uYWN0aXZhdGUpOgorICAgICAgICAq
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9mZXRjaC1zZXJ2aWNlLXdv
cmtlci1wcmVsb2FkLXNjcmlwdC5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKwogMjAyMS0x
MS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJlbG9h
ZCBuYXZpZ2F0aW9uIHJlcXVlc3QgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBpbW1lZGlh
dGVseSByZWFkeSB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBmZXRjaCBldmVudApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNl
cnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwNGE0OWE3OGNkODkyOWE0ZmQwZGI0YWIwY2ViODAxYTAxOTUwZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2Vy
dmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIuanMKQEAgLTAsMCArMSwyNyBAQAorb25pbnN0YWxs
ID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKHNlbGYucG9ydCkKKyAgICAgICAgcmV0dXJuOworICAg
IGV2ZW50LndhaXRVbnRpbChuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYuaW5zdGFsbGluZ1By
b21pc2VSZXNvbHZlID0gcmVzb2x2ZSkpOworfQorCitvbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsK
KyAgICBpZiAoZXZlbnQuZGF0YS5wb3J0KQorICAgICAgICBzZWxmLnBvcnQgPSBldmVudC5kYXRh
LnBvcnQ7CisgICAgaWYgKHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlKSB7CisgICAgICAg
IHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlKCk7CisgICAgICAgIHNlbGYuaW5zdGFsbGlu
Z1Byb21pc2VSZXNvbHZlID0gbnVsbDsKKyAgICB9CisgICAgaWYgKHNlbGYuYWN0aXZhdGluZ1By
b21pc2VSZXNvbHZlKSB7CisgICAgICAgIHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlKCk7
CisgICAgICAgIHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlID0gbnVsbDsKKyAgICB9Cit9
OworCitvbmFjdGl2YXRlID0gKGV2ZW50KSA9PiB7CisgICAgZXZlbnQud2FpdFVudGlsKG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gc2VsZi5hY3RpdmF0aW5nUHJvbWlzZVJlc29sdmUgPSByZXNvbHZl
KSk7CisgICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdlKCJhY3RpdmF0aW5nIik7Cit9CisKK3NlbGYu
YWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsKKyAgICBldmVudC5yZXNwb25k
V2l0aChmZXRjaChldmVudC5yZXF1ZXN0KSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9m
ZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMzdlYzg2NDVjYTM0ZWExNzlkNmE1Yjk1Njc0ODc3NDQyYTBkMGM5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Ut
d29ya2VyLXByZWxvYWQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BB
U1MgU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIKK1BBU1MgU2VydmljZSB3b3JrZXIgbG9hZCB1c2Vz
IHByZWxvYWQgdGhyb3VnaCBjYWxsaW5nIGZldGNoIG9uIHRoZSBmZXRjaCBldmVudCByZXF1ZXN0
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRj
aC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5odHRwcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk2Mjc0YWNkOWZkNjEzOTFhOTdkYzZmYjk5MGFhYTY3YTc2ZGI4Y2UKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0
Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5odHRwcy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGFjdGl2ZVdvcmtlcjsKK3ZhciB1dWlkID0g
dG9rZW4oKTsKK3ZhciB1cmwgPSAiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2Zl
dGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5P3Rva2VuPSIgKyB1dWlkOwordmFy
IGZyYW1lOworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworCitmdW5jdGlv
biB3YWl0VW50aWxBY3RpdmF0aW5nKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImFjdGl2YXRpbmciKQorICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgfTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdHJpZ2dl
ckFjdGl2YXRpb24oKQoreworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSgiYWN0aXZhdGUi
KTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29y
a2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9
LCAoKSA9PiB7IH0pOworICAgIH0KKworICAgIGxldCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvZmV0
Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIuanMiLCB7IHNjb3BlIDogdXJsIH0pOwor
ICAgIGlmICghcmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9u
LnVucmVnaXN0ZXIoKTsKKyAgICAgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNlcnZp
Y2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHVybCB9KTsKKyAgICB9CisK
KyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBhY3RpdmVX
b3JrZXIucG9zdE1lc3NhZ2UoeyBwb3J0OiBjaGFubmVsLnBvcnQxIH0sIFtjaGFubmVsLnBvcnQx
XSk7CisKKyAgICByZXR1cm4gd2FpdFVudGlsQWN0aXZhdGluZygpOworfSwgIlNldHVwIGFjdGl2
YXRpbmcgd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGZl
dGNoKHVybCArICImdmFsdWU9dXNlLXByZWxvYWQiLCB7IG1ldGhvZDogJ1BPU1QnIH0pOworCisg
ICAgLy8gTG9hZCBpZnJhbWUsIHdpdGggYWN0aXZhdGluZyB3b3JrZXIsIHNvIG9ubHkgcHJlbG9h
ZCB3aWxsIHN0YXJ0LgorICAgIGNvbnN0IHByb21pc2UgPSB3aXRoSWZyYW1lKHVybCk7CisKKyAg
ICB0cmlnZ2VyQWN0aXZhdGlvbigpOworCisgICAgY29uc3QgZnJhbWUgPSBhd2FpdCBwcm9taXNl
OworICAgIGFzc2VydF9lcXVhbHMoZnJhbWUuY29udGVudFdpbmRvdy52YWx1ZSwgInVzZS1wcmVs
b2FkIik7CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSBHRVQgZmV0Y2ggdG8gdXJs
OiB0aGUgc2VydmljZSB3b3JrZXIgcHJlbG9hZAorICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQg
ZmV0Y2godXJsICsgIiZjb3VudD1UcnVlIik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCByZXNw
b25zZS50ZXh0KCksICIxIik7Cit9LCAiU2VydmljZSB3b3JrZXIgbG9hZCB1c2VzIHByZWxvYWQg
dGhyb3VnaCBjYWxsaW5nIGZldGNoIG9uIHRoZSBmZXRjaCBldmVudCByZXF1ZXN0Iik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC1z
Y3JpcHQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2Vz
L2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNjc4
MzZmNTQxNzAzZGU4NGYwOGI4ZWIzZTZjYzhjMzM4MTM5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2ZldGNoLXNlcnZp
Y2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5CkBAIC0wLDAgKzEsMzUgQEAKK2ltcG9ydCBvcwor
aW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCisKKworZGVmIG1haW4ocmVxdWVzdCwgcmVzcG9u
c2UpOgorICAgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgICAgdGVzdElkID0gaGFz
aGxpYi5tZDUodG9rZW4pLmhleGRpZ2VzdCgpCisgICAgY291bnRJZCA9IGhhc2hsaWIubWQ1KHRv
a2VuICsgYictY291bnQnKS5oZXhkaWdlc3QoKQorCisgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0g
IlBPU1QiOgorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRlc3RJZCkKKyAgICAg
ICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRlc3RJZCwgcmVxdWVzdC5HRVRbYid2YWx1ZSdd
KQorICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9h
c2NpaSIpCisgICAgICAgIHJldHVybiBiInVwZGF0ZWQgdG8gIiArIHJlcXVlc3QuR0VUW2IndmFs
dWUnXQorCisgICAgaWYgcmVxdWVzdC5HRVQuZmlyc3QoYiJjb3VudCIsIEZhbHNlKToKKyAgICAg
ICAgY291bnQgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKGNvdW50SWQpCisgICAgICAgIGlm
IG5vdCBjb3VudDoKKyAgICAgICAgICAgIGNvdW50ID0gMAorICAgICAgICByZXNwb25zZS5oZWFk
ZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9hc2NpaSIpCisgICAgICAgIHJldHVybiBz
dHIoY291bnQpCisKKyAgICBjb3VudCA9IHJlcXVlc3Quc2VydmVyLnN0YXNoLnRha2UoY291bnRJ
ZCkKKyAgICBpZiBub3QgY291bnQ6CisgICAgICAgIGNvdW50ID0gMAorICAgIGNvdW50ID0gY291
bnQgKyAxCisgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KGNvdW50SWQsIGNvdW50KQorCisg
ICAgdmFsdWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRlc3RJZCkKKyAgICBpZiBub3Qg
dmFsdWU6CisgICAgICAgIHZhbHVlID0gYiJub3RoaW5nIgorICAgIHJlc3BvbnNlLmhlYWRlcnMu
c2V0KGIiQ2FjaGUtQ29udHJvbCIsIGIibm8tY2FjaGUiKQorICAgIHJlc3BvbnNlLmhlYWRlcnMu
c2V0KGIiQ29udGVudC1UeXBlIiwgYiJ0ZXh0L2h0bWwiKQorICAgIHJldHVybiAiPGh0bWw+PGJv
ZHk+PHNjcmlwdD53aW5kb3cudmFsdWUgPSAnJXMnOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiAl
IHZhbHVlLmRlY29kZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445201</attachid>
            <date>2021-11-26 07:09:51 -0800</date>
            <delta_ts>2021-11-30 03:05:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233490-20211126160947.patch</filename>
            <type>text/plain</type>
            <size>41231</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBiMTY4YWFlMjNjMGUy
NjBhZjQ0ODQxYzhhZjQ1YzU4MzgzZGQyOC4uYmM2ZGJlYWQ1MjgzYWQxMTA2YmRiNWFjODk0ZmMx
OWUwYTE0MTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTExLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBuYXZpZ2F0aW9u
IHByZWxvYWQgaWYgc2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcg
bmF2aWdhdGlvbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdG9yZSB0aGUgZmV0Y2ggaWRlbnRpZmllciBpbiBGZXRjaFJlcXVlc3QgYXMg
dGhpcyBtaWdodCBiZSB1c2VkIGFzIHRoZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWRlbnRpZmllci4K
KyAgICAgICAgV2Ugc2V0IGl0IHdoZW4gY3JlYXRpbmcgYSBGZXRjaFJlcXVlc3QgZm9yIGZpcmlu
ZyBhIGZldGNoIGV2ZW50LgorICAgICAgICBUaGlzIGlkZW50aWZpZXIgaXMga2VwdCBpbiBjYXNl
IG9mIHJlcXVlc3QgY2xvbmluZyBvciB3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCBhcyBwYXJ0IG9m
IGNhbGxpbmcgZmV0Y2guCisgICAgICAgIEl0IGlzIHVzZWQgdG8gc2V0IHRoZSBuYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXIgaW4gUmVzb3VyY2VMb2FkZXJPcHRpb25zIHRoYXQgaXMgcGlwZWQg
dG8gV2ViTG9hZGVyU3RyYXRlZ3kuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAq
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorCiAyMDIxLTExLTI2
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVsb2FkIG5h
dmlnYXRpb24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5
IHJlYWR5IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDQ0OWM4MTg0NzhjOTRkYjliMWZmNGJlNmM4ZWVmMTk0NDZmOTFlY2QuLjBiOWI3Y2Q5
ODVlNjExMGIzMWMyY2I2ZWUwZGZkZGUyYmRhZWRmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMjEtMTEtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldXNlIG5hdmlnYXRpb24gcHJlbG9hZCBpZiBzZXJ2aWNlIHdvcmtlciBpcyBmZXRjaGlu
ZyB0aGUgY29ycmVzcG9uZGluZyBuYXZpZ2F0aW9uIHJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3JlIG5hdmlnYXRpb24gcHJlbG9hZGVy
IGluIE5ldHdvcmtTZXNzaW9uLCBrZXllZCBieSB0aGUgY29ycmVzcG9uZGluZyBmZXRjaCBpZGVu
dGlmaWVyLgorICAgICAgICBXaGVuIGEgbmF2aWdhdGlvbiByZXF1ZXN0IGlzIGNvbWluZyBmcm9t
IGZldGNoIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBwcmVsb2FkIGlkZW50aWZp
ZXIKKyAgICAgICAgd2UgbG9vayBhdCBvbmdvaW5nIHByZWxvYWRzIGFuZCB1c2UgaXQgaWYgYXZh
aWxhYmxlIHRvIGFuc3dlciB0aGUgZmV0Y2guCisgICAgICAgIFRvIGRvIHNvLCB3ZSBjcmVhdGUg
YSBuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayB0aGF0IHdpbGwgdGFrZSB0aGUgcHJlbG9hZGVy
IG9mIHRoZSBpbml0aWFsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorCiAyMDIx
LTExLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVs
b2FkIG5hdmlnYXRpb24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVk
aWF0ZWx5IHJlYWR5IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDZj
YmQxZjQ5M2Q0ODA3YzUzMmMyODEzZWZlMTdmYzkwMTU5NWY3NDIuLmU5ODkxNDFiNzdiOGUzZWU2
ODkxZjVlNDViZTBjMzJlOTk4NDA0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC05NCw2ICs5NCw3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0
YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYg
cmVxCiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja1BvbGljeTo6
U2VuZENhbGxiYWNrczsKICAgICBvcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGE7CiAgICAgb3B0aW9ucy5zYW1lT3JpZ2luRGF0
YVVSTEZsYWcgPSBTYW1lT3JpZ2luRGF0YVVSTEZsYWc6OlNldDsKKyAgICBvcHRpb25zLm5hdmln
YXRpb25QcmVsb2FkSWRlbnRpZmllciA9IHJlcXVlc3QubmF2aWdhdGlvblByZWxvYWRJZGVudGlm
aWVyKCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgZmV0Y2hSZXF1ZXN0ID0gcmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuY3BwCmluZGV4IGE5NTQ3NDBkM2U0M2NkZTMxMjBjMTMzNWI2MmQ3MTRiNzZkMTFhZmUu
LjkwNjFmNTEzN2M4OGE1YzhmNTQwYTExOThmMzg2YjUwYjI1ZDdhNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTE3MCw3ICsxNzAsNiBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNvbnN0IFN0
cmluZyYgdXJsLCBJbml0JiYgaW5pdCkKICAgICBtX29wdGlvbnMuY3JlZGVudGlhbHMgPSBDcmVk
ZW50aWFsczo6U2FtZU9yaWdpbjsKICAgICBtX3JlZmVycmVyID0gImNsaWVudCJfczsKICAgICBt
X3JlcXVlc3Quc2V0VVJMKHJlcXVlc3RVUkwpOwotICAgIG1fcmVxdWVzdC5zZXRSZXF1ZXN0ZXIo
UmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKTsKICAgICBtX3JlcXVlc3Quc2V0SW5p
dGlhdG9ySWRlbnRpZmllcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmVxdWVz
dElkZW50aWZpZXIoKSk7CiAKICAgICBhdXRvIG9wdGlvbnNSZXN1bHQgPSBpbml0aWFsaXplT3B0
aW9ucyhpbml0KTsKQEAgLTIwNSw2ICsyMDQsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJl
cXVlc3Q6OmluaXRpYWxpemVXaXRoKGNvbnN0IFN0cmluZyYgdXJsLCBJbml0JiYgaW5pdCkKIEV4
Y2VwdGlvbk9yPHZvaWQ+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoRmV0Y2hSZXF1ZXN0
JiBpbnB1dCwgSW5pdCYmIGluaXQpCiB7CiAgICAgbV9yZXF1ZXN0ID0gaW5wdXQubV9yZXF1ZXN0
OworICAgIG1fbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyID0gaW5wdXQubmF2aWdhdGlvblBy
ZWxvYWRJZGVudGlmaWVyKCk7CisKICAgICBtX29wdGlvbnMgPSBpbnB1dC5tX29wdGlvbnM7CiAg
ICAgbV9yZWZlcnJlciA9IGlucHV0Lm1fcmVmZXJyZXI7CiAKQEAgLTMyMiw4ICszMjMsOSBAQCBF
eGNlcHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZQogICAgIGlmIChpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCb2R5IGlzIGRpc3R1cmJlZCBv
ciBsb2NrZWQiX3MgfTsKIAotICAgIGF1dG8gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVx
dWVzdChjb250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVy
cy5nZXQoKSksIFJlc291cmNlUmVxdWVzdCB7IG1fcmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyBt
X29wdGlvbnN9LCBTdHJpbmcgeyBtX3JlZmVycmVyIH0pKTsKKyAgICBhdXRvIGNsb25lID0gYWRv
cHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgc3RkOjpudWxsb3B0LCBGZXRjaEhlYWRl
cnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkpLCBSZXNvdXJjZVJlcXVlc3QgeyBtX3JlcXVlc3Qg
fSwgRmV0Y2hPcHRpb25zIHsgbV9vcHRpb25zIH0sIFN0cmluZyB7IG1fcmVmZXJyZXIgfSkpOwog
ICAgIGNsb25lLT5jbG9uZUJvZHkoKnRoaXMpOworICAgIGNsb25lLT5zZXROYXZpZ2F0aW9uUHJl
bG9hZElkZW50aWZpZXIobV9uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIpOwogICAgIGNsb25l
LT5tX3NpZ25hbC0+c2lnbmFsRm9sbG93KG1fc2lnbmFsKTsKICAgICByZXR1cm4gY2xvbmU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAppbmRleCA0NWZj
YjcwZTNlZTg5MDc5NzBmZTFlNjVmNjhjYjZiYzQ3Y2RmMDhmLi44NjA5OWQ5M2Q1NzAxNmY4YWJj
N2FhYzc5YTE5ZjVjYWY5MzgyOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBYm9ydFNpZ25hbC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5T3duZXIuaCIK
KyNpbmNsdWRlICJGZXRjaElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIK
ICNpbmNsdWRlICJGZXRjaFJlcXVlc3RJbml0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkBAIC04MCw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdC51cmwoKTsgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291
cmNlUmVxdWVzdCgpIGNvbnN0OworICAgIEZldGNoSWRlbnRpZmllciBuYXZpZ2F0aW9uUHJlbG9h
ZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmll
cjsgfQorICAgIHZvaWQgc2V0TmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyKEZldGNoSWRlbnRp
ZmllciBpZGVudGlmaWVyKSB7IG1fbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsgfQogCiBwcml2YXRlOgogICAgIEZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJl
c291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOwpAQCAt
OTcsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9yZWZlcnJlcjsKICAgICBtdXRh
YmxlIFN0cmluZyBtX3JlcXVlc3RVUkw7CiAgICAgUmVmPEFib3J0U2lnbmFsPiBtX3NpZ25hbDsK
KyAgICBGZXRjaElkZW50aWZpZXIgbV9uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CiB9Owog
CiBpbmxpbmUgRmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVh
ZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMm
JiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKQEAgLTEwNiw2ICsxMTAsNyBAQCBpbmxpbmUg
RmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgc3RkOjpvcHRpb25hbAogICAgICwgbV9yZWZlcnJlcihXVEZNb3ZlKHJlZmVycmVyKSkKICAg
ICAsIG1fc2lnbmFsKEFib3J0U2lnbmFsOjpjcmVhdGUoY29udGV4dCkpCiB7CisgICAgbV9yZXF1
ZXN0LnNldFJlcXVlc3RlcihSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6RmV0Y2gpOwogICAg
IHVwZGF0ZUNvbnRlbnRUeXBlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCBhMTlkY2Q0OGQxYTNhZjU0YTAzMDg2NzNiYjc0NjQ4
MWU1NWUyN2Q5Li5hY2MxMmY3MzNmNTZmZGQ0YzA0NmUyMjNiM2VhODdhMTg2NWNlZTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
LmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgorI2luY2x1ZGUgIkZldGNoSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkZldGNoT3B0aW9ucy5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtMjIyLDYgKzIyMyw3IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgOiBwdWJsaWMgRmV0Y2hPcHRpb25zIHsKICAgICBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3kgOiBiaXRXaWR0aE9mQ2xp
ZW50Q3JlZGVudGlhbFBvbGljeTsKICAgICBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5
IDogYml0V2lkdGhPZlByZWZsaWdodFBvbGljeTsKICAgICBMb2FkZWRGcm9tT3BhcXVlU291cmNl
IGxvYWRlZEZyb21PcGFxdWVTb3VyY2UgOiBiaXRXaWR0aE9mTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZTsKKyAgICBGZXRjaElkZW50aWZpZXIgbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDFiNjUzMmMzYjBlYWE4MGQ5YmQ0NmM2ZDQzMjEzNjk2MjFjMDE5
YmIuLjIwODY4N2FkMTU2NTM4NTE5OTQ5OWI0OTBjYzJiMWM4NTFjNTI1MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTkxLDYgKzkxLDcgQEAgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CiAgICAgY29weS5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gdGhpcy0+Y2xpZW50
Q3JlZGVudGlhbFBvbGljeTsKICAgICBjb3B5Lm1heFJlZGlyZWN0Q291bnQgPSB0aGlzLT5tYXhS
ZWRpcmVjdENvdW50OwogICAgIGNvcHkucHJlZmxpZ2h0UG9saWN5ID0gdGhpcy0+cHJlZmxpZ2h0
UG9saWN5OworICAgIGNvcHkubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyID0gdGhpcy0+bmF2
aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMKICAgICBjb3B5LmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gdGhpcy0+Y29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApp
bmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li5kNDU0ZTlkMTc0
ODQwZjY1YzM3YTAxMTUyODkxNTJhMTAyNjQyNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENs
aWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIH0pOwog
fQogCi12b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQordm9pZCBkaXNw
YXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgZ2xvYmFsU2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiBy
ZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllcikKIHsKICAgICBhdXRvIHJlcXVlc3RIZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVh
dGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlLCBIVFRQSGVhZGVyTWFwIHsgcmVxdWVz
dC5odHRwSGVhZGVyRmllbGRzKCkgfSk7CiAKQEAgLTE2Nyw2ICsxNjcsNyBAQCB2b2lkIGRpc3Bh
dGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlJiBnbG9iYWxTYwogCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwogICAg
IGF1dG8gZmV0Y2hSZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoZ2xvYmFsU2NvcGUsIFdU
Rk1vdmUoYm9keSksIFdURk1vdmUocmVxdWVzdEhlYWRlcnMpLCAgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWZlcnJlcikpOworICAgIGZldGNoUmVxdWVzdC0+
c2V0TmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyKGZldGNoSWRlbnRpZmllcik7CiAKICAgICBG
ZXRjaEV2ZW50OjpJbml0IGluaXQ7CiAgICAgaW5pdC5yZXF1ZXN0ID0gV1RGTW92ZShmZXRjaFJl
cXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBmYzVhNzI1OGU0N2U2N2FkZGRmYjE2
MjE5ZDQ4ZmZlNjRhNThhOWIxLi43NjcxNDZiYjAyMzY0ZGRhMWVmNzFhMDExMzQzOWFiY2U1ZTVk
OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgPSAwOwogfTsKIAot
dm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4s
IFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYpOwor
dm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4s
IFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZl
dGNoSWRlbnRpZmllcik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCmluZGV4IDlhNmMyZDUzNzRkMjFmNjUyNjY5ZDZkNzlmMzQ2NTk1NTVj
ZDcyYzkuLjY0NjBmMGY2NWYwNTkwNmZjYmRhOGZlMTY1NmUyNWVhODdjNjVhMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0xMjQsMTEgKzEyNCwxMSBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCiAgICAgV29ya2VyVGhyZWFkOjpydW5FdmVudExv
b3AoKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRj
aEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBv
cHRpb25zKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2
ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRp
b25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIFJlZiBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpn
bG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRpb25zID0g
V1RGTW92ZShvcHRpb25zKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgU2VydmljZVdvcmtlckZldGNo
OjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUsIGNsaWVudElkLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RG
TW92ZShvcHRpb25zKSk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3Ao
KS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2VydmljZVdvcmtlckds
b2JhbFNjb3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgb3B0aW9ucyA9
IFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAg
U2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudElkLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDQwNjdkMTZkZTkyZDNiMzIxZTYy
MDA0MDgxMzViMjlkNmIxYzcyZjYuLmQ5ZTMzNjUxOWM1ZDA1YjgzNmY4NDEyMDg5MzUzMmU3OWE0
MWMzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50KCk7CiAgICAgdm9pZCB3
aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZv
aWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGll
bnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYs
IFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYpOwor
ICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNo
OjpDbGllbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25z
JiYsIEZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3Vy
Y2VEYXRhKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZv
aWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAKaW5kZXggZTEzYWI4YmRlZmZiM2JiOGZhY2FjNDA4ODQyYmY4MDM0MmUx
OWMzNS4uYWYwMTZiMjJmMDdkNWUyZTc5Nzc2NDVlNjJlMGY1MjIzYmYyNjliYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0yMjYsOCArMjI2LDggQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aW8KIAogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5jb250
YWlucyhrZXkpKTsKICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVudC5jb3B5
UmVmKCkpOwotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjbGllbnQgPSBXVEZNb3ZlKGNs
aWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJy
ZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRD
b3B5KCldKGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgcG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJl
cXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xh
dGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKSwgZmV0Y2hJZGVudGlm
aWVyXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZl
dGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmll
cik7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKaW5kZXggNmJiMGJlODQ0NmEwOWZkNDVkNWMwODc4YzgwZjY2YWU1
YjE2ZDFhZC4uNGE2ZDYzM2RiMjgwMTUyMGViZTM0M2NjNTY5ZDg0MmUwYzE4NGJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGVuY29kZXIgPDwgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBodHRwSGVh
ZGVyc1RvS2VlcDsKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcjsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTM2Miw2ICszNjMs
MTIgQEAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KICAgICBpZiAoIWh0dHBIZWFkZXJzVG9LZWVw
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5odHRwSGVhZGVyc1Rv
S2VlcCA9IFdURk1vdmUoKmh0dHBIZWFkZXJzVG9LZWVwKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxGZXRjaElkZW50aWZpZXI+PiBuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZp
ZXI7CisgICAgZGVjb2RlciA+PiBuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CisgICAgaWYg
KCFuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmVzdWx0Lm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllciA9ICpuYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggN2JhMTNmYmI5NmZlODc5ZTcxNjViMDZj
ZTA4MzY3OTkyN2VlNWI5NC4uYzFlNDU1ODRlNDdmY2Y3YTNjNDk5NmIxZjRlYzZmN2RhYWYzODky
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtNzcsMTEgKzc3LDEyIEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSBzb3VyY2VDcm9zc09yaWdpbk9w
ZW5lclBvbGljeTsKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpOYXZpZ2F0aW9uUmVxdWVzdGVyPiBuYXZpZ2F0aW9uUmVxdWVzdGVy
OwotICAgIAorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vyc01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
c01vZGU6Ok5vbmUgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cjsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+
IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyPiBuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDZkOGFjZTJlMmQxMGY4NTY1MjcxNGNhODVjYmI2ZjE4
NDUzODg2ZjQuLmZhMDMwZWU1ODA0ZDViZjk3ZTk1NDc1ZjEwODMwNGNlZGJlMDM3MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBs
LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
QEAgLTU0Niw0ICs1NDcsMjEgQEAgU3RyaW5nIE5ldHdvcmtTZXNzaW9uOjphdHRyaWJ1dGVkQnVu
ZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcihXZWJQYWdlUHJveHkKICAgICByZXR1cm4g
bV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcnMuZ2V0KGlkZW50
aWZpZXIpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrU2Vz
c2lvbjo6YWRkTmF2aWdhdGlvblByZWxvYWRlclRhc2soU2VydmljZVdvcmtlckZldGNoVGFzayYg
dGFzaykKK3sKKyAgICBtX25hdmlnYXRpb25QcmVsb2FkZXJzLmFkZCh0YXNrLmZldGNoSWRlbnRp
ZmllcigpLCB0YXNrKTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlTmF2aWdhdGlv
blByZWxvYWRlclRhc2soU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKK3sKKyAgICBtX25h
dmlnYXRpb25QcmVsb2FkZXJzLnJlbW92ZSh0YXNrLmZldGNoSWRlbnRpZmllcigpKTsKK30KKwor
U2VydmljZVdvcmtlckZldGNoVGFzayogTmV0d29ya1Nlc3Npb246Om5hdmlnYXRpb25QcmVsb2Fk
ZXJUYXNrRnJvbUZldGNoSWRlbnRpZmllcihGZXRjaElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gbV9uYXZpZ2F0aW9uUHJlbG9hZGVycy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggM2RkZGY0YjMyODhkM2IyNzQxZWEz
YWVmZDk4ZDEzZjc4NGMxZWI3NC4uYjgwMjdiYTI1Y2EzZmI2N2YwOTAwMTBkM2E3YmY4YzYzNTA0
M2QwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgTmV0d29ya1By
b2Nlc3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CitjbGFzcyBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwog
Y2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogY2xhc3MgV2ViU29ja2V0VGFz
azsKQEAgLTE3Miw2ICsxNzQsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgYWRkU29mdFVwZGF0ZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI+JiYgbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMuYWRk
KFdURk1vdmUobG9hZGVyKSk7IH0KICAgICB2b2lkIHJlbW92ZVNvZnRVcGRhdGVMb2FkZXIoU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIqIGxvYWRlcikgeyBtX3NvZnRVcGRhdGVMb2FkZXJz
LnJlbW92ZShsb2FkZXIpOyB9CisgICAgdm9pZCBhZGROYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayhT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CisgICAgU2VydmljZVdvcmtlckZldGNoVGFzayogbmF2
aWdhdGlvblByZWxvYWRlclRhc2tGcm9tRmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRl
bnRpZmllcik7CisgICAgdm9pZCByZW1vdmVOYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayhTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJik7CiAjZW5kaWYKIAogICAgIE5ldHdvcmtMb2FkU2NoZWR1bGVyJiBu
ZXR3b3JrTG9hZFNjaGVkdWxlcigpOwpAQCAtMjU1LDggKzI2MCw5IEBAIHByb3RlY3RlZDoKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYWtQdHI8U2VydmljZVdvcmtlckZl
dGNoVGFzaz4+IG1fbmF2aWdhdGlvblByZWxvYWRlcnM7CiAjZW5kaWYKLSAgICAKKwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suY3BwCmluZGV4IDUwMDMxODlhNzlmMjJkNDg3MTc2NmZhYWNhMDQ4NzBhNjA4NjM0
MDEuLjkxYWQyZmY3MzhlMTdlYTk2Yjk5ZTU4MGQ3NThkYWE5YThjYWNjMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgpAQCAtNTAsNiArNTEsMzEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4g
U2VydmljZVdvcmtlckZldGNoVGFzazo6ZnJvbU5hdmlnYXRpb25QcmVsb2FkZXIoV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5ldHdvcmtT
ZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGlmICghbG9hZGVyLnBhcmFtZXRlcnMoKS5uYXZpZ2F0
aW9uUHJlbG9hZElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0
byB0YXNrID0gc2Vzc2lvbiA/IHNlc3Npb24tPm5hdmlnYXRpb25QcmVsb2FkZXJUYXNrRnJvbUZl
dGNoSWRlbnRpZmllcigqbG9hZGVyLnBhcmFtZXRlcnMoKS5uYXZpZ2F0aW9uUHJlbG9hZElkZW50
aWZpZXIpIDogbnVsbHB0cjsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgaWYgKCF0YXNrLT5tX3ByZWxvYWRlciB8fCB0YXNrLT5tX2lzTG9hZGluZ0Zyb21Q
cmVsb2FkZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwcmVsb2FkID0g
c3RkOjpleGNoYW5nZSh0YXNrLT5tX3ByZWxvYWRlciwgeyB9KTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzd1NlcnZlckNvbm5lY3Rpb24sIGxvYWRlciwg
V1RGTW92ZShwcmVsb2FkKSk7Cit9CisKK1NlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvbm5lY3Rpb24s
IE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXI+JiYgcHJlbG9hZGVyKQorICAgIDogbV9zd1NlcnZlckNv
bm5lY3Rpb24oc3dTZXJ2ZXJDb25uZWN0aW9uKQorICAgICwgbV9sb2FkZXIobG9hZGVyKQorICAg
ICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQorICAgICwgbV9wcmVsb2FkZXIoV1RGTW92ZShwcmVsb2FkZXIpKQoreworICAgIGxvYWRSZXNw
b25zZUZyb21QcmVsb2FkZXIoKTsKK30KKwogU2VydmljZVdvcmtlckZldGNoVGFzazo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24mIHN3U2VydmVyQ29ubmVjdGlv
biwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbiwg
Ym9vbCBpc1dvcmtlclJlYWR5KQogICAgIDogbV9zd1NlcnZlckNvbm5lY3Rpb24oc3dTZXJ2ZXJD
b25uZWN0aW9uKQogICAgICwgbV9sb2FkZXIobG9hZGVyKQpAQCAtNTcsMTIgKzgzLDEzIEBAIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uJiBzd1NlcnZlckNvCiAgICAgLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwgbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAsIG1fY3VycmVudFJlcXVlc3QoV1RG
TW92ZShyZXF1ZXN0KSkKLSAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtl
ckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVvdXRUaW1lcihtYWtl
VW5pcXVlPFRpbWVyPigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1l
ckZpcmVkKSkKICAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIocmVn
aXN0cmF0aW9uLmlkZW50aWZpZXIoKSkKICAgICAsIG1fc2hvdWxkU29mdFVwZGF0ZShyZWdpc3Ry
YXRpb24uc2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMpKQogewog
ICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6IChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCAlZCkiLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCksIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSwgbV9zZXJ2aWNlV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc1dvcmtlclJlYWR5KTsKLSAgICBtX3RpbWVvdXRU
aW1lci5zdGFydE9uZVNob3QobG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3Jr
UHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CisKKyAgICBtX3RpbWVvdXRU
aW1lci0+c3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29y
a1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOwogCiAgICAgLy8gRklYTUU6
IENvbnNpZGVyIGV4dGVuZGluZyB0aGlzIGJhc2VkIG9uIG5hdmlnYXRpb24gcHJlbG9hZCBtYW5h
Z2VyLgogICAgIGJvb2wgc2hvdWxkRG9OYXZpZ2F0aW9uUHJlbG9hZCA9IHNlc3Npb24gJiYgaXNO
YXZpZ2F0aW9uUmVxdWVzdChsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuZGVzdGluYXRpb24p
ICYmIGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIkdFVCI7CkBAIC03
MCw2ICs5Nyw3IEBAIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvCiAgICAgICAgIE5ldHdvcmtMb2Fk
UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbG9hZGVyLnBhcmFtZXRlcnMoKTsKICAgICAgICAgcGFy
YW1ldGVycy5yZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAgbV9wcmVsb2FkZXIg
PSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyPigqc2Vzc2lvbiwg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHNlc3Npb24tPmFkZE5hdmlnYXRpb25QcmVs
b2FkZXJUYXNrKCp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTgwLDYgKzEwOCw5IEBAIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCkKICAgICAgICAgbV9zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0aGlzKTsKIAogICAgIGlmICht
X3ByZWxvYWRlcikgeworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24o
KSkKKyAgICAgICAgICAgIHNlc3Npb24tPnJlbW92ZU5hdmlnYXRpb25QcmVsb2FkZXJUYXNrKCp0
aGlzKTsKKwogICAgICAgICBtX3ByZWxvYWRlci0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcHJlbG9h
ZGVyID0gbnVsbHB0cjsKICAgICB9CkBAIC0xMzYsNiArMTY3LDkgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKCkKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlKQogewogICAgIGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPnJlbW92ZU5hdmln
YXRpb25QcmVsb2FkZXJUYXNrKCp0aGlzKTsKKwogICAgICAgICBtX3ByZWxvYWRlci0+Y2FuY2Vs
KCk7CiAgICAgICAgIG1fcHJlbG9hZGVyID0gbnVsbHB0cjsKICAgICB9CkBAIC0xNTAsNyArMTg0
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVkaXJlY3RSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UKIAogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0co
InByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlOiIpOwogICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7Ci0g
ICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVvdXRUaW1lcikKKyAgICAg
ICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAog
ICAgIGlmIChzaG91bGRTZXRTb3VyY2UgPT0gU2hvdWxkU2V0U291cmNlOjpZZXMpCkBAIC0xNjMs
NiArMTk4LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVkaXJlY3RS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UKIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsK
ICAgICBpZiAobV9wcmVsb2FkZXIpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlz
LT5zZXNzaW9uKCkpCisgICAgICAgICAgICBzZXNzaW9uLT5yZW1vdmVOYXZpZ2F0aW9uUHJlbG9h
ZGVyVGFzaygqdGhpcyk7CisKICAgICAgICAgbV9wcmVsb2FkZXItPmNhbmNlbCgpOwogICAgICAg
ICBtX3ByZWxvYWRlciA9IG51bGxwdHI7CiAgICAgfQpAQCAtMTc3LDcgKzIxNSw4IEBAIHZvaWQg
U2VydmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgYm9vbCBuCiAKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJwcm9jZXNzUmVz
cG9uc2U6IChodHRwU3RhdHVzQ29kZT0lZCwgTUlNRVR5cGU9JSIgUFVCTElDX0xPR19TVFJJTkcg
IiwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoPSUiIFBSSWQ2NCAiLCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZT0lZCwgc291cmNlPSV1KSIsIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCksIHJlc3BvbnNlLm1pbWVUeXBlKCkudXRmOCgpLmRhdGEoKSwgcmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCksIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVzcG9uc2Uuc291cmNlKCkpKTsKICAgICBtX3dhc0hh
bmRsZWQgPSB0cnVlOwotICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1l
b3V0VGltZXIpCisgICAgICAgIG1fdGltZW91dFRpbWVyLT5zdG9wKCk7CiAgICAgc29mdFVwZGF0
ZUlmTmVlZGVkKCk7CiAKICAgICBpZiAobV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CkBAIC0yMTIsNyArMjUxLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDYKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJU
KCFtX3RpbWVvdXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXItPmlzQWN0aXZlKCkpOwogICAgIHNl
bmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhIHsg
ZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CiB9CiAKQEAgLTIyMSw3ICsyNjAsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmbwogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1f
dGltZW91dFRpbWVyIHx8ICFtX3RpbWVvdXRUaW1lci0+aXNBY3RpdmUoKSk7CiAgICAgLy8gRklY
TUU6IEFsbG93IFdlYlJlc291cmNlTG9hZGVyIHRvIHJlY2VpdmUgZm9ybSBkYXRhLgogfQogCkBA
IC0yMzIsMTkgKzI3MSwyMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZpbmlz
aCgpCiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoV2l0aE1ldHJpY3Mo
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7Ci0gICAgQVNT
RVJUKCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fdGltZW91dFRp
bWVyIHx8ICFtX3RpbWVvdXRUaW1lci0+aXNBY3RpdmUoKSk7CiAgICAgU1dGRVRDSF9SRUxFQVNF
X0xPRygiZGlkRmluaXNoV2l0aE1ldHJpY3M6Iik7CiAKICAgICBtX2lzRG9uZSA9IHRydWU7Ci0g
ICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVvdXRUaW1lcikKKyAgICAg
ICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyBuZXR3b3JrTG9hZE1ldHJp
Y3MgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBtX2lzRG9uZSA9IHRydWU7Ci0gICAgaWYgKG1f
dGltZW91dFRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgp
OworICAgIGlmIChtX3RpbWVvdXRUaW1lciAmJiBtX3RpbWVvdXRUaW1lci0+aXNBY3RpdmUoKSkg
eworICAgICAgICBtX3RpbWVvdXRUaW1lci0+c3RvcCgpOwogICAgICAgICBzb2Z0VXBkYXRlSWZO
ZWVkZWQoKTsKICAgICB9CiAgICAgaWYgKG1fcHJlbG9hZGVyKSB7CkBAIC0yNjIsNyArMzAyLDgg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWROb3RIYW5kbGU6Iik7Ci0gICAg
bV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVvdXRUaW1lcikKKyAgICAgICAg
bV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAg
IGlmIChtX3ByZWxvYWRlcikgewpAQCAtMzA3LDcgKzM0OCw4IEBAIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tXaXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCiAgICAgICAgIG1fbG9hZGVyLnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUodGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
bG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQoKSk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQorICAgICAgICBt
X3RpbWVvdXRUaW1lci0+c3RhcnRPbmVTaG90KG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiAgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAgc3RhcnRGZXRjaCgpOwog
fQpAQCAtMzgyLDYgKzQyNCwxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRC
b2R5RnJvbVByZWxvYWRlcigpCiAgICAgfSk7CiB9CiAKK05ldHdvcmtTZXNzaW9uKiBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9zd1NlcnZlckNvbm5l
Y3Rpb24gPyBtX3N3U2VydmVyQ29ubmVjdGlvbi0+c2Vzc2lvbigpIDogbnVsbHB0cjsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBTV0ZFVENIX1JFTEVBU0VfTE9HCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCAzZTg2N2E0MWE2MjE4Yjg1ODM1
MjAzMWU4NjFkYTAxYTUwYjhmYTk4Li5kOTljNjNjN2UwMWExOTdjZDg1ZjU4Yzc5OTZjZjdiMDM0
MGZhZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTYzLDcg
KzYzLDExIEBAIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtl
ckZldGNoVGFzaz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gZnJvbU5hdmln
YXRpb25QcmVsb2FkZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29ya1Nlc3Npb24qKTsK
KwogICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgTmV0
d29ya1Jlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIE5ldHdvcmtTZXNzaW9uKiwg
Ym9vbCBpc1dvcmtlclJlYWR5KTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcj4mJik7CisKICAgICB+U2VydmljZVdvcmtl
ckZldGNoVGFzaygpOwogCiAgICAgdm9pZCBzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mKTsKQEAgLTEwMSw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc29mdFVwZGF0
ZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyKCk7CiAgICAg
dm9pZCBsb2FkQm9keUZyb21QcmVsb2FkZXIoKTsKKyAgICBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lv
bigpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9TZXJ2aWNl
V29ya2VyKE1lc3NhZ2UmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBz
ZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKQEAgLTExMiw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJl
bnRSZXF1ZXN0OwotICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpUaW1lcj4gbV90aW1lb3V0VGltZXI7CiAgICAgYm9vbCBtX3dh
c0hhbmRsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0RvbmUgeyBmYWxzZSB9OwogICAgIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIG1fc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDM2OGQzOGY1ZDYzNjM4Y2I5OWQ4YjcwYmVkMDMxYjJlZGQzZTExZTEuLmUw
N2Q2ZGE1ZmNiMWU4NWY3MDYxYzFhYzc3N2Q3MzVmMTRkYTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNTIsOCArMTUyLDEzIEBAIHZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyIGNsaWVuCiAKIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChs
b2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01v
ZGU6Ok5vbmUpCisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlcnNNb2Rl
ID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkgeworICAgICAgICBpZiAobG9hZGVyLnBhcmFt
ZXRlcnMoKS5yZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVy
OjpGZXRjaCAmJiBpc05hdmlnYXRpb25SZXF1ZXN0KGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9u
cy5kZXN0aW5hdGlvbikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHRhc2sgPSBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpmcm9tTmF2aWdhdGlvblByZWxvYWRlcigqdGhpcywgbG9hZGVyLCByZXF1
ZXN0LCBzZXNzaW9uKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0YXNrOworICAgICAgICB9
CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAogICAgIGlmICghc2VydmVyKCkuY2Fu
SGFuZGxlU2NoZW1lKGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzYzNTc3OTI5YjVlMDI0
MjNlMzUyMmIwMDczOWUzMDNmN2ZkOGI5MC4uZWMwNmE1MmQwODJmYjU0YzNhMTI4YzIwMmNmOWZh
NGJjMWY1YjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzMzLDYgKzMzMyw4IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMCiAgICAgbG9hZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID0gcmVz
b3VyY2VMb2FkZXIub3B0aW9ucygpLmxvYWRlZEZyb21PcGFxdWVTb3VyY2UgPT0gTG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZTo6Tm8gPyByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtl
cnNNb2RlIDogU2VydmljZVdvcmtlcnNNb2RlOjpOb25lOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIub3B0aW9u
cygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGxvYWRQYXJhbWV0
ZXJzLmh0dHBIZWFkZXJzVG9LZWVwID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmh0dHBIZWFk
ZXJzVG9LZWVwOworICAgIGlmIChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubmF2aWdhdGlvblBy
ZWxvYWRJZGVudGlmaWVyKQorICAgICAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uUHJlbG9h
ZElkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubmF2aWdhdGlvblByZWxvYWRJ
ZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUt
PmRvY3VtZW50KCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZmNjVmOGIwNzgxMzk0MDk4MTc3YTAxMjhm
NmNiZDBkNjFlZWRlYzEuLjMxMDUwYzNiMzU2MGFkNmJkNTUxZmZjZmZhMDU1YWUzMmZhZGNmODcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgbmF2aWdhdGlvbiBwcmVsb2FkIGlmIHNlcnZp
Y2Ugd29ya2VyIGlzIGZldGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIG5hdmlnYXRpb24gcmVxdWVz
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIu
anM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2
aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0
cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291
cmNlcy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXNjcmlwdC5weTogQWRkZWQuCisKIDIw
MjEtMTEtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFBy
ZWxvYWQgbmF2aWdhdGlvbiByZXF1ZXN0IGlmIHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3QgaW1t
ZWRpYXRlbHkgcmVhZHkgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QgZmV0Y2ggZXZl
bnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRj
aC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdvcmtlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMDRhNDlhNzhjZDg5MjlhNGZkMGRiNGFiMGNlYjgwMWEwMTk1MGU4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNo
LXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzCkBAIC0wLDAgKzEsMjcgQEAKK29uaW5z
dGFsbCA9IChldmVudCkgPT4geworICAgIGlmIChzZWxmLnBvcnQpCisgICAgICAgIHJldHVybjsK
KyAgICBldmVudC53YWl0VW50aWwobmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLmluc3RhbGxp
bmdQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmUpKTsKK30KKworb25tZXNzYWdlID0gKGV2ZW50KSA9
PiB7CisgICAgaWYgKGV2ZW50LmRhdGEucG9ydCkKKyAgICAgICAgc2VsZi5wb3J0ID0gZXZlbnQu
ZGF0YS5wb3J0OworICAgIGlmIChzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSkgeworICAg
ICAgICBzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSgpOworICAgICAgICBzZWxmLmluc3Rh
bGxpbmdQcm9taXNlUmVzb2x2ZSA9IG51bGw7CisgICAgfQorICAgIGlmIChzZWxmLmFjdGl2YXRp
bmdQcm9taXNlUmVzb2x2ZSkgeworICAgICAgICBzZWxmLmFjdGl2YXRpbmdQcm9taXNlUmVzb2x2
ZSgpOworICAgICAgICBzZWxmLmFjdGl2YXRpbmdQcm9taXNlUmVzb2x2ZSA9IG51bGw7CisgICAg
fQorfTsKKworb25hY3RpdmF0ZSA9IChldmVudCkgPT4geworICAgIGV2ZW50LndhaXRVbnRpbChu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlID0gcmVz
b2x2ZSkpOworICAgIHNlbGYucG9ydC5wb3N0TWVzc2FnZSgiYWN0aXZhdGluZyIpOworfQorCitz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7CisgICAgZXZlbnQucmVz
cG9uZFdpdGgoZmV0Y2goZXZlbnQucmVxdWVzdCkpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9h
ZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTM3ZWM4NjQ1Y2EzNGVhMTc5ZDZhNWI5NTY3NDg3NzQ0MmEwZDBjOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2
aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKwor
CitQQVNTIFNldHVwIGFjdGl2YXRpbmcgd29ya2VyCitQQVNTIFNlcnZpY2Ugd29ya2VyIGxvYWQg
dXNlcyBwcmVsb2FkIHRocm91Z2ggY2FsbGluZyBmZXRjaCBvbiB0aGUgZmV0Y2ggZXZlbnQgcmVx
dWVzdAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
ZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NjI3NGFjZDlmZDYxMzkxYTk3ZGM2ZmI5OTBhYWE2N2E3NmRiOGNl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDY3IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciBhY3RpdmVXb3JrZXI7Cit2YXIgdXVp
ZCA9IHRva2VuKCk7Cit2YXIgdXJsID0gIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXNjcmlwdC5weT90b2tlbj0iICsgdXVpZDsK
K3ZhciBmcmFtZTsKK2NvbnN0IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKworZnVu
Y3Rpb24gd2FpdFVudGlsQWN0aXZhdGluZygpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IChldmVudCkgPT4g
eworICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJhY3RpdmF0aW5nIikKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH07CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRy
aWdnZXJBY3RpdmF0aW9uKCkKK3sKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoImFjdGl2
YXRlIik7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+
IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisKKyAgICBsZXQgcmVnaXN0cmF0aW9uID0gYXdhaXQg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2VydmljZS13b3JrZXJz
L2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHVybCB9
KTsKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi51bnJlZ2lzdGVyKCk7CisgICAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2ViS2l0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1z
ZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdvcmtlci5qcyIsIHsgc2NvcGUgOiB1cmwgfSk7CisgICAg
fQorCisgICAgYWN0aXZlV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgYWN0
aXZlV29ya2VyLnBvc3RNZXNzYWdlKHsgcG9ydDogY2hhbm5lbC5wb3J0MSB9LCBbY2hhbm5lbC5w
b3J0MV0pOworCisgICAgcmV0dXJuIHdhaXRVbnRpbEFjdGl2YXRpbmcoKTsKK30sICJTZXR1cCBh
Y3RpdmF0aW5nIHdvcmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBmZXRjaCh1cmwgKyAiJnZhbHVlPXVzZS1wcmVsb2FkIiwgeyBtZXRob2Q6ICdQT1NUJyB9KTsK
KworICAgIC8vIExvYWQgaWZyYW1lLCB3aXRoIGFjdGl2YXRpbmcgd29ya2VyLCBzbyBvbmx5IHBy
ZWxvYWQgd2lsbCBzdGFydC4KKyAgICBjb25zdCBwcm9taXNlID0gd2l0aElmcmFtZSh1cmwpOwor
CisgICAgdHJpZ2dlckFjdGl2YXRpb24oKTsKKworICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgcHJv
bWlzZTsKKyAgICBhc3NlcnRfZXF1YWxzKGZyYW1lLmNvbnRlbnRXaW5kb3cudmFsdWUsICJ1c2Ut
cHJlbG9hZCIpOworCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25seSBvbmUgR0VUIGZldGNoIHRv
IHVybDogdGhlIHNlcnZpY2Ugd29ya2VyIHByZWxvYWQKKyAgICBjb25zdCByZXNwb25zZSA9IGF3
YWl0IGZldGNoKHVybCArICImY291bnQ9VHJ1ZSIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
cmVzcG9uc2UudGV4dCgpLCAiMSIpOworfSwgIlNlcnZpY2Ugd29ya2VyIGxvYWQgdXNlcyBwcmVs
b2FkIHRocm91Z2ggY2FsbGluZyBmZXRjaCBvbiB0aGUgZmV0Y2ggZXZlbnQgcmVxdWVzdCIpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxv
YWQtc2NyaXB0LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291
cmNlcy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXNjcmlwdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MDY3ODM2ZjU0MTcwM2RlODRmMDhiOGViM2U2Y2M4YzMzODEzOWZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9mZXRjaC1z
ZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXNjcmlwdC5weQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQg
b3MKK2ltcG9ydCBoYXNobGliCitpbXBvcnQganNvbgorCisKK2RlZiBtYWluKHJlcXVlc3QsIHJl
c3BvbnNlKToKKyAgICB0b2tlbiA9IHJlcXVlc3QuR0VUW2IndG9rZW4nXQorICAgIHRlc3RJZCA9
IGhhc2hsaWIubWQ1KHRva2VuKS5oZXhkaWdlc3QoKQorICAgIGNvdW50SWQgPSBoYXNobGliLm1k
NSh0b2tlbiArIGInLWNvdW50JykuaGV4ZGlnZXN0KCkKKworICAgIGlmIHJlcXVlc3QubWV0aG9k
ID09ICJQT1NUIjoKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZSh0ZXN0SWQpCisg
ICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dCh0ZXN0SWQsIHJlcXVlc3QuR0VUW2IndmFs
dWUnXSkKKyAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDb250ZW50LVR5cGUiLCBiInRl
eHQvYXNjaWkiKQorICAgICAgICByZXR1cm4gYiJ1cGRhdGVkIHRvICIgKyByZXF1ZXN0LkdFVFti
J3ZhbHVlJ10KKworICAgIGlmIHJlcXVlc3QuR0VULmZpcnN0KGIiY291bnQiLCBGYWxzZSk6Cisg
ICAgICAgIGNvdW50ID0gcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZShjb3VudElkKQorICAgICAg
ICBpZiBub3QgY291bnQ6CisgICAgICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgcmVzcG9uc2Uu
aGVhZGVycy5zZXQoYiJDb250ZW50LVR5cGUiLCBiInRleHQvYXNjaWkiKQorICAgICAgICByZXR1
cm4gc3RyKGNvdW50KQorCisgICAgY291bnQgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKGNv
dW50SWQpCisgICAgaWYgbm90IGNvdW50OgorICAgICAgICBjb3VudCA9IDAKKyAgICBjb3VudCA9
IGNvdW50ICsgMQorICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dChjb3VudElkLCBjb3VudCkK
KworICAgIHZhbHVlID0gcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZSh0ZXN0SWQpCisgICAgaWYg
bm90IHZhbHVlOgorICAgICAgICB2YWx1ZSA9IGIibm90aGluZyIKKyAgICByZXNwb25zZS5oZWFk
ZXJzLnNldChiIkNhY2hlLUNvbnRyb2wiLCBiIm5vLWNhY2hlIikKKyAgICByZXNwb25zZS5oZWFk
ZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9odG1sIikKKyAgICByZXR1cm4gIjxodG1s
Pjxib2R5PjxzY3JpcHQ+d2luZG93LnZhbHVlID0gJyVzJzs8L3NjcmlwdD48L2JvZHk+PC9odG1s
PiIgJSB2YWx1ZS5kZWNvZGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445405</attachid>
            <date>2021-11-30 03:05:10 -0800</date>
            <delta_ts>2021-12-01 03:23:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233490-20211130120508.patch</filename>
            <type>text/plain</type>
            <size>40210</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYxNjYyYmZhZjIyMDRl
MzI0OGY0MTg0OWVlOTk3ZGY4ZmI2M2UyOS4uMzA0Y2Y4MmVlYjg4NTgzNjg5NTM3YjY1NmU4OTcw
ODRiNzEyYWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTExLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBuYXZpZ2F0aW9u
IHByZWxvYWQgaWYgc2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcg
bmF2aWdhdGlvbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdG9yZSB0aGUgZmV0Y2ggaWRlbnRpZmllciBpbiBGZXRjaFJlcXVlc3QgYXMg
dGhpcyBtaWdodCBiZSB1c2VkIGFzIHRoZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWRlbnRpZmllci4K
KyAgICAgICAgV2Ugc2V0IGl0IHdoZW4gY3JlYXRpbmcgYSBGZXRjaFJlcXVlc3QgZm9yIGZpcmlu
ZyBhIGZldGNoIGV2ZW50LgorICAgICAgICBUaGlzIGlkZW50aWZpZXIgaXMga2VwdCBpbiBjYXNl
IG9mIHJlcXVlc3QgY2xvbmluZyBvciB3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCBhcyBwYXJ0IG9m
IGNhbGxpbmcgZmV0Y2guCisgICAgICAgIEl0IGlzIHVzZWQgdG8gc2V0IHRoZSBuYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXIgaW4gUmVzb3VyY2VMb2FkZXJPcHRpb25zIHRoYXQgaXMgcGlwZWQg
dG8gV2ViTG9hZGVyU3RyYXRlZ3kuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAq
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorCiAyMDIxLTExLTMw
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBBdWRp
b1NhbXBsZURhdGFTb3VyY2UgdG8gaW5jcmVhc2UvZGVjcmVhc2UgYnVmZmVyZWQgZGF0YSBwcm9n
cmVzc2l2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdhOTdmNDQ0YWUyYjIxMGJjYTc4NzhlNjZkYTY5NjA2Y2Fk
MzQ2NDIuLjJjOGFjMTg5MGI4ODUzMWM5NzkwNDE5YjI0MzlkYTg3ZGQwMDg2Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFJldXNlIG5hdmlnYXRpb24gcHJlbG9hZCBpZiBzZXJ2aWNlIHdv
cmtlciBpcyBmZXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBuYXZpZ2F0aW9uIHJlcXVlc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ5MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3JlIG5hdmln
YXRpb24gcHJlbG9hZGVyIGluIE5ldHdvcmtTZXNzaW9uLCBrZXllZCBieSB0aGUgY29ycmVzcG9u
ZGluZyBmZXRjaCBpZGVudGlmaWVyLgorICAgICAgICBXaGVuIGEgbmF2aWdhdGlvbiByZXF1ZXN0
IGlzIGNvbWluZyBmcm9tIGZldGNoIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBw
cmVsb2FkIGlkZW50aWZpZXIKKyAgICAgICAgd2UgbG9vayBhdCBvbmdvaW5nIHByZWxvYWRzIGFu
ZCB1c2UgaXQgaWYgYXZhaWxhYmxlIHRvIGFuc3dlciB0aGUgZmV0Y2guCisgICAgICAgIFRvIGRv
IHNvLCB3ZSBjcmVhdGUgYSBuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayB0aGF0IHdpbGwgdGFr
ZSB0aGUgcHJlbG9hZGVyIG9mIHRoZSBpbml0aWFsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorCiAyMDIxLTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBNaWdyYXRlIHNvbWUgV2ViU1dDbGllbnRDb25uZWN0aW9uIG1lc3NhZ2VzIHRv
IGFzeW5jIHJlcGxpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggNmNiZDFmNDkzZDQ4MDdjNTMyYzI4MTNlZmUxN2ZjOTAxNTk1Zjc0Mi4uZTk4
OTE0MWI3N2I4ZTNlZTY4OTFmNWU0NWJlMGMzMmU5OTg0MDRiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgdm9pZCBG
ZXRjaExvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmV0Y2hSZXF1ZXN0JiByZXEKICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENh
bGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzOwogICAgIG9wdGlvbnMuZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YTsKICAgICBvcHRpb25z
LnNhbWVPcmlnaW5EYXRhVVJMRmxhZyA9IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6U2V0OworICAg
IG9wdGlvbnMubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyID0gcmVxdWVzdC5uYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXIoKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBmZXRjaFJlcXVlc3Qg
PSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggYTk1NDc0MGQzZTQzY2RlMzEyMGMxMzM1YjYy
ZDcxNGI3NmQxMWFmZS4uOTA2MWY1MTM3Yzg4YTVjOGY1NDBhMTE5OGYzODZiNTBiMjVkN2E2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAt
MTcwLDcgKzE3MCw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6
ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIEluaXQmJiBpbml0KQogICAgIG1fb3B0aW9ucy5jcmVk
ZW50aWFscyA9IENyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOwogICAgIG1fcmVmZXJyZXIgPSAiY2xp
ZW50Il9zOwogICAgIG1fcmVxdWVzdC5zZXRVUkwocmVxdWVzdFVSTCk7Ci0gICAgbV9yZXF1ZXN0
LnNldFJlcXVlc3RlcihSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6RmV0Y2gpOwogICAgIG1f
cmVxdWVzdC5zZXRJbml0aWF0b3JJZGVudGlmaWVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllcigpKTsKIAogICAgIGF1dG8gb3B0aW9uc1Jlc3VsdCA9
IGluaXRpYWxpemVPcHRpb25zKGluaXQpOwpAQCAtMjA1LDYgKzIwNCw4IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIElu
aXQmJiBpbml0KQogRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0
aChGZXRjaFJlcXVlc3QmIGlucHV0LCBJbml0JiYgaW5pdCkKIHsKICAgICBtX3JlcXVlc3QgPSBp
bnB1dC5tX3JlcXVlc3Q7CisgICAgbV9uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIgPSBpbnB1
dC5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIoKTsKKwogICAgIG1fb3B0aW9ucyA9IGlucHV0
Lm1fb3B0aW9uczsKICAgICBtX3JlZmVycmVyID0gaW5wdXQubV9yZWZlcnJlcjsKIApAQCAtMzIy
LDggKzMyMyw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRjaFJlcXVlc3Q6
OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAgICAgaWYgKGlzRGlzdHVyYmVk
T3JMb2NrZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJvZHkg
aXMgZGlzdHVyYmVkIG9yIGxvY2tlZCJfcyB9OwogCi0gICAgYXV0byBjbG9uZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUobV9oZWFkZXJzLmdldCgpKSwgUmVzb3VyY2VSZXF1ZXN0IHsgbV9yZXF1ZXN0IH0sIEZl
dGNoT3B0aW9ucyB7IG1fb3B0aW9uc30sIFN0cmluZyB7IG1fcmVmZXJyZXIgfSkpOworICAgIGF1
dG8gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBzdGQ6Om51bGxv
cHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIFJlc291cmNlUmVxdWVz
dCB7IG1fcmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyBtX29wdGlvbnMgfSwgU3RyaW5nIHsgbV9y
ZWZlcnJlciB9KSk7CiAgICAgY2xvbmUtPmNsb25lQm9keSgqdGhpcyk7CisgICAgY2xvbmUtPnNl
dE5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcihtX25hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmll
cik7CiAgICAgY2xvbmUtPm1fc2lnbmFsLT5zaWduYWxGb2xsb3cobV9zaWduYWwpOwogICAgIHJl
dHVybiBjbG9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5oCmluZGV4IDQ1ZmNiNzBlM2VlODkwNzk3MGZlMWU2NWY2OGNiNmJjNDdjZGYwOGYuLjg2MDk5
ZDkzZDU3MDE2ZjhhYmM3YWFjNzlhMTlmNWNhZjkzODI5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkFib3J0U2lnbmFsLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGZXRj
aEJvZHlPd25lci5oIgorI2luY2x1ZGUgIkZldGNoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZl
dGNoT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdEluaXQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTgwLDYgKzgxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CisgICAgRmV0Y2hJZGVudGlmaWVyIG5h
dmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvblBy
ZWxvYWRJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXROYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZp
ZXIoRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgbV9uYXZpZ2F0aW9uUHJlbG9hZElkZW50
aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6CiAgICAgRmV0Y2hSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNo
SGVhZGVycz4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmLCBTdHJpbmcmJiBy
ZWZlcnJlcik7CkBAIC05Nyw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3JlZmVy
cmVyOwogICAgIG11dGFibGUgU3RyaW5nIG1fcmVxdWVzdFVSTDsKICAgICBSZWY8QWJvcnRTaWdu
YWw+IG1fc2lnbmFsOworICAgIEZldGNoSWRlbnRpZmllciBtX25hdmlnYXRpb25QcmVsb2FkSWRl
bnRpZmllcjsKIH07CiAKIGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5
LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQpAQCAtMTA2LDYgKzEx
MCw3IEBAIGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsCiAgICAgLCBtX3JlZmVycmVyKFdURk1vdmUo
cmVmZXJyZXIpKQogICAgICwgbV9zaWduYWwoQWJvcnRTaWduYWw6OmNyZWF0ZShjb250ZXh0KSkK
IHsKKyAgICBtX3JlcXVlc3Quc2V0UmVxdWVzdGVyKFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVy
OjpGZXRjaCk7CiAgICAgdXBkYXRlQ29udGVudFR5cGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCmluZGV4IGExOWRjZDQ4ZDFhM2FmNTRh
MDMwODY3M2JiNzQ2NDgxZTU1ZTI3ZDkuLmFjYzEyZjczM2Y1NmZkZDRjMDQ2ZTIyM2IzZWE4N2Ex
ODY1Y2VlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIK
ICNpbmNsdWRlICJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmgiCisjaW5jbHVkZSAiRmV0Y2hJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRUUEhl
YWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC0yMjIsNiAr
MjIzLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlv
bnMgewogICAgIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSA6
IGJpdFdpZHRoT2ZDbGllbnRDcmVkZW50aWFsUG9saWN5OwogICAgIFByZWZsaWdodFBvbGljeSBw
cmVmbGlnaHRQb2xpY3kgOiBiaXRXaWR0aE9mUHJlZmxpZ2h0UG9saWN5OwogICAgIExvYWRlZEZy
b21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA6IGJpdFdpZHRoT2ZMb2FkZWRG
cm9tT3BhcXVlU291cmNlOworICAgIEZldGNoSWRlbnRpZmllciBuYXZpZ2F0aW9uUHJlbG9hZElk
ZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMWI2NTMyYzNiMGVhYTgwZDliZDQ2YzZk
NDMyMTM2OTYyMWMwMTliYi4uMjA4Njg3YWQxNTY1Mzg1MTk5NDk5YjQ5MGNjMmIxYzg1MWM1MjUz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTEs
NiArOTEsNyBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
czo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBjb3B5LmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PSB0aGlzLT5jbGllbnRDcmVkZW50aWFsUG9saWN5OwogICAgIGNvcHkubWF4UmVkaXJlY3RDb3Vu
dCA9IHRoaXMtPm1heFJlZGlyZWN0Q291bnQ7CiAgICAgY29weS5wcmVmbGlnaHRQb2xpY3kgPSB0
aGlzLT5wcmVmbGlnaHRQb2xpY3k7CisgICAgY29weS5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZp
ZXIgPSB0aGlzLT5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CiAKICAgICAvLyBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucwogICAgIGNvcHkuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3
ODkuLmQ0NTRlOWQxNzQ4NDBmNjVjMzdhMDExNTI4OTE1MmExMDI2NDI0M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NS
ZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+
LCBzCiAgICAgfSk7CiB9CiAKLXZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYg
Y2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlv
bnMpCit2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIGF1dG8gcmVxdWVzdEhlYWRlcnMgPSBGZXRj
aEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUsIEhUVFBIZWFk
ZXJNYXAgeyByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSB9KTsKIApAQCAtMTY3LDYgKzE2Nyw3
IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAKICAgICBVUkwgcmVxdWVzdFVSTCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgYXV0byBmZXRjaFJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShn
bG9iYWxTY29wZSwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShyZXF1ZXN0SGVhZGVycyksICBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlZmVycmVyKSk7CisgICAg
ZmV0Y2hSZXF1ZXN0LT5zZXROYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIoZmV0Y2hJZGVudGlm
aWVyKTsKIAogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5pdDsKICAgICBpbml0LnJlcXVlc3QgPSBX
VEZNb3ZlKGZldGNoUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZjNWE3MjU4
ZTQ3ZTY3YWRkZGZiMTYyMTlkNDhmZmU2NGE1OGE5YjEuLjc2NzE0NmJiMDIzNjRkZGExZWY3MWEw
MTEzNDM5YWJjZTVlNWQ5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KSA9IDA7CiB9OwogCi12b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmLCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRj
aE9wdGlvbnMmJik7Cit2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmLCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRj
aE9wdGlvbnMmJiwgRmV0Y2hJZGVudGlmaWVyKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggODUzMDk2ZGQxNzUzMTdjNTVmMGE2
NGFkNWNlZTBhYjFiZTllNTU2My4uOGIxY2VjZDM3ZGUzMWMzMjAxOWQ2OGYzYTJlMDQxMjM3YTI4
NWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTEyNCwxMSArMTI0LDExIEBA
IHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKICAgICBXb3JrZXJUaHJl
YWQ6OnJ1bkV2ZW50TG9vcCgpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVl
VGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNs
aWVudCwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiBj
bGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZl
dGNoT3B0aW9ucyYmIG9wdGlvbnMpCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFz
a1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVu
dCwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiBjbGll
bnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNo
T3B0aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCiB7CiAg
ICAgUmVmIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4oKmdsb2JhbFNjb3BlKCkpOwotICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJ
ZCwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJl
ciksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpXSgpIG11dGFibGUgewotICAgICAgICBTZXJ2
aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50SWQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50
SWQsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJy
ZXIpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyXSgpIG11dGFi
bGUgeworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudChXVEZN
b3ZlKGNsaWVudCksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50SWQsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50
aWZpZXIpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggNDA2N2Qx
NmRlOTJkM2IzMjFlNjIwMDQwODEzNWIyOWQ2YjFjNzJmNi4uZDllMzM2NTE5YzVkMDViODM2Zjg0
MTIwODkzNTMyZTc5YTQxYzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQo
KTsKICAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dCgpOwogCi0gICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29y
a2VyRmV0Y2g6OkNsaWVudD4mJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRj
aE9wdGlvbnMmJik7CisgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2
aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVy
LCBGZXRjaE9wdGlvbnMmJiwgRmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIHF1ZXVlVGFza1Rv
UG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlck9yQ2xp
ZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2
ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjOWM4ZTJiYTJlZWJjYjI1NjVkY2Ey
N2ZiMWZkMGYwYjcyN2FiY2ZkLi5jZmQzNmExOGU4ZmM1YmFiZGQ1MmQ5Yjc0OTlmODk0MjIyMzZj
YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTIyMSw4ICsy
MjEsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3RpbwogCiAgICAgQVNTRVJUKCFtX29uZ29pbmdG
ZXRjaFRhc2tzLmNvbnRhaW5zKGtleSkpOwogICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGtl
eSwgY2xpZW50LmNvcHlSZWYoKSk7Ci0gICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNsaWVu
dCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVk
Q29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0
aW9ucy5pc29sYXRlZENvcHkoKV0oYXV0byYpIG11dGFibGUgewotICAgICAgICB0aHJlYWQoKS5x
dWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJ
ZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
LCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0g
cmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgp
LCBmZXRjaElkZW50aWZpZXJdKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFkKCkucXVl
dWVUYXNrVG9GaXJlRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQp
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwg
ZmV0Y2hJZGVudGlmaWVyKTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCA2YmIwYmU4NDQ2YTA5ZmQ0NWQ1
YzA4NzhjODBmNjZhZTViMTZkMWFkLi40YTZkNjMzZGIyODAxNTIwZWJlMzQzY2M1NjlkODQyZTBj
MTg0YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI4LDYgKzEyOCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAg
ZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBlbmNv
ZGVyIDw8IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGVuY29kZXIgPDwgbmF2aWdhdGlvblByZWxv
YWRJZGVudGlmaWVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpA
QCAtMzYyLDYgKzM2MywxMiBAQCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjbwogICAgIGlmICghaHR0
cEhlYWRlcnNUb0tlZXApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0
Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RGTW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAg
c3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEZldGNoSWRlbnRpZmllcj4+IG5hdmlnYXRpb25Q
cmVsb2FkSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IG5hdmlnYXRpb25QcmVsb2FkSWRlbnRp
ZmllcjsKKyAgICBpZiAoIW5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVy
ID0gKm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA3YmExM2ZiYjk2
ZmU4NzllNzE2NWIwNmNlMDgzNjc5OTI3ZWU1Yjk0Li5jMWU0NTU4NGU0N2ZjZjdhM2M0OTk2YjFm
NGVjNmY3ZGFhZjM4OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC03NywxMSArNzcs
MTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHNvdXJj
ZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OwogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCB7IDAg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok5hdmlnYXRpb25SZXF1ZXN0ZXI+IG5hdmln
YXRpb25SZXF1ZXN0ZXI7Ci0gICAgCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
V2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlIHNlcnZpY2VXb3JrZXJzTW9kZSB7IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpIVFRQSGVhZGVyc1RvS2Vl
cEZyb21DbGVhbmluZz4gaHR0cEhlYWRlcnNUb0tlZXA7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXI+IG5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcjsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmQ4YWNlMmUyZDEwZjg1NjUy
NzE0Y2E4NWNiYjZmMTg0NTM4ODZmNC4uZmEwMzBlZTU4MDRkNWJmOTdlOTU0NzVmMTA4MzA0Y2Vk
YmUwMzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENsaWVudEltcGwuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgpAQCAtNTQ2LDQgKzU0NywyMSBAQCBTdHJpbmcgTmV0d29ya1Nlc3Npb246
OmF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJvbVBhZ2VJZGVudGlmaWVyKFdlYlBhZ2VQcm94
eQogICAgIHJldHVybiBtX2F0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJvbVBhZ2VJZGVudGlm
aWVycy5nZXQoaWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2
b2lkIE5ldHdvcmtTZXNzaW9uOjphZGROYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayhTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrJiB0YXNrKQoreworICAgIG1fbmF2aWdhdGlvblByZWxvYWRlcnMuYWRkKHRh
c2suZmV0Y2hJZGVudGlmaWVyKCksIHRhc2spOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpy
ZW1vdmVOYXZpZ2F0aW9uUHJlbG9hZGVyVGFzayhTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNr
KQoreworICAgIG1fbmF2aWdhdGlvblByZWxvYWRlcnMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlm
aWVyKCkpOworfQorCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBOZXR3b3JrU2Vzc2lvbjo6bmF2
aWdhdGlvblByZWxvYWRlclRhc2tGcm9tRmV0Y2hJZGVudGlmaWVyKEZldGNoSWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX25hdmlnYXRpb25QcmVsb2FkZXJzLmdldChpZGVu
dGlmaWVyKS5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAzZGRkZjRi
MzI4OGQzYjI3NDFlYTNhZWZkOThkMTNmNzg0YzFlYjc0Li5iODAyN2JhMjVjYTNmYjY3ZjA5MDAx
MGQzYTdiZjhjNjM1MDQzZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtNjUsNiArNjYsNyBAQCBj
bGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNz
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hh
bm5lbDsKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJQYWdlTmV0d29y
a1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFz
cyBXZWJTb2NrZXRUYXNrOwpAQCAtMTcyLDYgKzE3NCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBhZGRTb2Z0VXBkYXRlTG9hZGVyKHN0ZDo6dW5pcXVl
X3B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4mJiBsb2FkZXIpIHsgbV9zb2Z0VXBk
YXRlTG9hZGVycy5hZGQoV1RGTW92ZShsb2FkZXIpKTsgfQogICAgIHZvaWQgcmVtb3ZlU29mdFVw
ZGF0ZUxvYWRlcihTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlciogbG9hZGVyKSB7IG1fc29m
dFVwZGF0ZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KKyAgICB2b2lkIGFkZE5hdmlnYXRpb25Q
cmVsb2FkZXJUYXNrKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKKyAgICBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrKiBuYXZpZ2F0aW9uUHJlbG9hZGVyVGFza0Zyb21GZXRjaElkZW50aWZpZXIoV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZU5hdmlnYXRpb25QcmVsb2Fk
ZXJUYXNrKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKICNlbmRpZgogCiAgICAgTmV0d29ya0xv
YWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CkBAIC0yNTUsOCArMjYwLDkgQEAg
cHJvdGVjdGVkOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEhhc2hTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPj4gbV9zb2Z0VXBkYXRl
TG9hZGVyczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2Vha1B0cjxT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPj4gbV9uYXZpZ2F0aW9uUHJlbG9hZGVyczsKICNlbmRpZgot
ICAgIAorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhIG1fYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggYTg0MWIwYTkxNmRkOWQ3ZTUxNjVmZTdl
NmYzNmY5OWU3M2JlNDA4Yy4uMzQ4ZDI3ZTdjYmZhMjNjODY2OTUzOTNmZGQwYzA3NTQ1ZWEwMmM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC01MCw2ICs1MSwyOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrPiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpmcm9tTmF2aWdhdGlvblByZWxv
YWRlcihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIHN3U2VydmVyQ29ubmVjdGlvbiwgTmV0d29ya1Jl
c291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24pCit7CisgICAgaWYgKCFsb2FkZXIucGFyYW1l
dGVycygpLm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvIHRhc2sgPSBzZXNzaW9uID8gc2Vzc2lvbi0+bmF2aWdhdGlvblByZWxv
YWRlclRhc2tGcm9tRmV0Y2hJZGVudGlmaWVyKCpsb2FkZXIucGFyYW1ldGVycygpLm5hdmlnYXRp
b25QcmVsb2FkSWRlbnRpZmllcikgOiBudWxscHRyOworICAgIGlmICghdGFzayB8fCAhdGFzay0+
bV9wcmVsb2FkZXIgfHwgdGFzay0+bV9pc0xvYWRpbmdGcm9tUHJlbG9hZGVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcHJlbG9hZCA9IHN0ZDo6ZXhjaGFuZ2UodGFzay0+
bV9wcmVsb2FkZXIsIHsgfSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZl
dGNoVGFzaz4oc3dTZXJ2ZXJDb25uZWN0aW9uLCBsb2FkZXIsIFdURk1vdmUocHJlbG9hZCkpOwor
fQorCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNX
U2VydmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyPiYmIHByZWxvYWRlcikKKyAgICA6IG1fc3dTZXJ2ZXJDb25uZWN0aW9uKHN3U2VydmVyQ29u
bmVjdGlvbikKKyAgICAsIG1fbG9hZGVyKGxvYWRlcikKKyAgICAsIG1fZmV0Y2hJZGVudGlmaWVy
KFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fcHJlbG9hZGVy
KFdURk1vdmUocHJlbG9hZGVyKSkKK3sKKyAgICBsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyKCk7
Cit9CisKIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbiwgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGJvb2wgaXNXb3JrZXJSZWFkeSkK
ICAgICA6IG1fc3dTZXJ2ZXJDb25uZWN0aW9uKHN3U2VydmVyQ29ubmVjdGlvbikKICAgICAsIG1f
bG9hZGVyKGxvYWRlcikKQEAgLTU3LDEyICs4MCwxMyBAQCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJD
bwogICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcikKICAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpCiAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCi0gICAg
LCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRU
aW1lckZpcmVkKQorICAgICwgbV90aW1lb3V0VGltZXIobWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCkpCiAgICAgLCBtX3Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVy
KCkpCiAgICAgLCBtX3Nob3VsZFNvZnRVcGRhdGUocmVnaXN0cmF0aW9uLnNob3VsZFNvZnRVcGRh
dGUobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKSkKIHsKICAgICBTV0ZFVENIX1JFTEVBU0Vf
TE9HKCJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOiAoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI9
JSIgUFJJdTY0ICIsIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgJWQpIiwgbV9zZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLnRvVUludDY0KCksIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSwgaXNXb3JrZXJSZWFkeSk7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxv
YWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0KCkpOworCisgICAgbV90aW1lb3V0VGltZXItPnN0YXJ0T25lU2hvdChs
b2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdv
cmtlckZldGNoVGltZW91dCgpKTsKIAogICAgIC8vIEZJWE1FOiBDb25zaWRlciBleHRlbmRpbmcg
dGhpcyBiYXNlZCBvbiBuYXZpZ2F0aW9uIHByZWxvYWQgbWFuYWdlci4KICAgICBib29sIHNob3Vs
ZERvTmF2aWdhdGlvblByZWxvYWQgPSBzZXNzaW9uICYmIGlzTmF2aWdhdGlvblJlcXVlc3QobG9h
ZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSAmJiBsb2FkZXIub3JpZ2luYWxS
ZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiOwpAQCAtNzAsNiArOTQsNyBAQCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYgc3dTZXJ2ZXJDbwogICAgICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
cyA9IGxvYWRlci5wYXJhbWV0ZXJzKCk7CiAgICAgICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IG1f
Y3VycmVudFJlcXVlc3Q7CiAgICAgICAgIG1fcHJlbG9hZGVyID0gbWFrZVVuaXF1ZTxTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlcj4oKnNlc3Npb24sIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgICAgICBzZXNzaW9uLT5hZGROYXZpZ2F0aW9uUHJlbG9hZGVyVGFzaygqdGhpcyk7CiAg
ICAgfQogfQogCkBAIC0xNDQsNyArMTY5LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Ojpwcm9jZXNzUmVkaXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UKIAog
ICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coInByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlOiIpOwogICAg
IG1fd2FzSGFuZGxlZCA9IHRydWU7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlm
IChtX3RpbWVvdXRUaW1lcikKKyAgICAgICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBz
b2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIGlmIChzaG91bGRTZXRTb3VyY2UgPT0gU2hvdWxk
U2V0U291cmNlOjpZZXMpCkBAIC0xNjgsNyArMTk0LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29s
IG4KIAogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coInByb2Nlc3NSZXNwb25zZTogKGh0dHBTdGF0
dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRl
bnRMZW5ndGg9JSIgUFJJZDY0ICIsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlPSVkLCBzb3VyY2U9JXUpIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2Uu
bWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgo
KSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZXNwb25zZS5zb3VyY2UoKSkpOwogICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7Ci0g
ICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVvdXRUaW1lcikKKyAgICAg
ICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAog
ICAgIGlmIChtX2xvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6TmF2aWdhdGUpIHsKQEAgLTIwMyw3ICsyMzAsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgaW50NgogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVy
IHx8ICFtX3RpbWVvdXRUaW1lci0+aXNBY3RpdmUoKSk7CiAgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCB9KTsKIH0KIApAQCAtMjEyLDcgKzIzOSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
IGZvCiAgICAgaWYgKG1faXNEb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIW1f
dGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIgfHwg
IW1fdGltZW91dFRpbWVyLT5pc0FjdGl2ZSgpKTsKICAgICAvLyBGSVhNRTogQWxsb3cgV2ViUmVz
b3VyY2VMb2FkZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9CiAKQEAgLTIyMywxOSArMjUwLDIw
IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIAogdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2hXaXRoTWV0cmljcyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKLSAgICBBU1NFUlQoIW1fdGltZW91dFRp
bWVyLmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIgfHwgIW1fdGltZW91
dFRpbWVyLT5pc0FjdGl2ZSgpKTsKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hX
aXRoTWV0cmljczoiKTsKIAogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQorICAgICAgICBtX3RpbWVvdXRUaW1l
ci0+c3RvcCgpOwogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZEZpbmlzaFJlc291cmNlTG9hZCB7IG5ldHdvcmtMb2FkTWV0cmljcyB9KTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICBpZiAobV90aW1lb3V0VGltZXIuaXNB
Y3RpdmUoKSkgewotICAgICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fdGlt
ZW91dFRpbWVyICYmIG1fdGltZW91dFRpbWVyLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fdGlt
ZW91dFRpbWVyLT5zdG9wKCk7CiAgICAgICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwogICAgIH0K
ICAgICBjYW5jZWxQcmVsb2FkSWZOZWNlc3NhcnkoKTsKQEAgLTI1MCw3ICsyNzgsOCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coImRpZE5vdEhhbmRsZToiKTsKLSAgICBtX3RpbWVv
dXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQorICAgICAgICBtX3RpbWVv
dXRUaW1lci0+c3RvcCgpOwogICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwogCiAgICAgaWYgKG1f
cHJlbG9hZGVyKSB7CkBAIC0yOTUsNyArMzI0LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAg
ICAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSh0aGlzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobV9sb2FkZXIu
Y29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZl
dGNoVGltZW91dCgpKTsKKyAgICBpZiAobV90aW1lb3V0VGltZXIpCisgICAgICAgIG1fdGltZW91
dFRpbWVyLT5zdGFydE9uZVNob3QobV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5l
dHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKTsKICAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBzdGFydEZldGNoKCk7CiB9CkBAIC0z
NzQsMTAgKzQwNCwxOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNlbFByZWxv
YWRJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKCFtX3ByZWxvYWRlcikKICAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNl
c3Npb24tPnJlbW92ZU5hdmlnYXRpb25QcmVsb2FkZXJUYXNrKCp0aGlzKTsKKwogICAgIG1fcHJl
bG9hZGVyLT5jYW5jZWwoKTsKICAgICBtX3ByZWxvYWRlciA9IG51bGxwdHI7CiB9CiAKK05ldHdv
cmtTZXNzaW9uKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1
cm4gbV9zd1NlcnZlckNvbm5lY3Rpb24gPyBtX3N3U2VydmVyQ29ubmVjdGlvbi0+c2Vzc2lvbigp
IDogbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBTV0ZFVENI
X1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCA4
ZTU2YzdiMWU4YmI0YTg4OTliYWE2YTU5ZmFhMjNkZDNmNzhlNTE1Li5hYmE5MDU3MmYwNTFlZWQ5
MGYyZjdhOWQ1MzUwNWUxYTRmNGU5OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKQEAgLTYzLDcgKzYzLDExIEBAIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZl
dGNoVGFzaz4gZnJvbU5hdmlnYXRpb25QcmVsb2FkZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwg
TmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
TmV0d29ya1Nlc3Npb24qKTsKKwogICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbiYs
IE5ldHdvcmtTZXNzaW9uKiwgYm9vbCBpc1dvcmtlclJlYWR5KTsKKyAgICBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYs
IHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcj4mJik7CisK
ICAgICB+U2VydmljZVdvcmtlckZldGNoVGFzaygpOwogCiAgICAgdm9pZCBzdGFydChXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKQEAgLTEwMiw2ICsxMDYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbG9hZFJlc3BvbnNlRnJvbVByZWxvYWRlcigpOwogICAgIHZvaWQgbG9hZEJvZHlG
cm9tUHJlbG9hZGVyKCk7CiAgICAgdm9pZCBjYW5jZWxQcmVsb2FkSWZOZWNlc3NhcnkoKTsKKyAg
ICBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbigpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVz
c2FnZT4gYm9vbCBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKQEAgLTExMyw3
ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwotICAgIFdlYkNvcmU6OlRpbWVyIG1f
dGltZW91dFRpbWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaW1lcj4gbV90aW1l
b3V0VGltZXI7CiAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI+IG1fcHJlbG9hZGVyOwogICAg
IGJvb2wgbV93YXNIYW5kbGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggYmY3NzcwM2M4MjY2NDcyNGIzOWQ4Y2FiMzliNjYyNzJmYjMzODRi
OC4uMWE4NmM0NzNiZTEwNjA4MzEwZjRkZGJmMTk0MTY4NjdkMjQzOTJlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE1Miw4ICsxNTIsMTMgQEAgdm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgY2xpZW4KIAogc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAg
aWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3Jr
ZXJzTW9kZTo6Tm9uZSkKKyAgICBpZiAobG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2Vy
c01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKSB7CisgICAgICAgIGlmIChsb2FkZXIu
cGFyYW1ldGVycygpLnJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1
ZXN0ZXI6OkZldGNoICYmIGlzTmF2aWdhdGlvblJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5v
cHRpb25zLmRlc3RpbmF0aW9uKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gdGFzayA9IFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmZyb21OYXZpZ2F0aW9uUHJlbG9hZGVyKCp0aGlzLCBsb2FkZXIs
IHJlcXVlc3QsIHNlc3Npb24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRhc2s7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgaWYgKCFzZXJ2ZXIo
KS5jYW5IYW5kbGVTY2hlbWUobG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLnByb3RvY29s
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBjNjM1Nzc5Mjli
NWUwMjQyM2UzNTIyYjAwNzM5ZTMwM2Y3ZmQ4YjkwLi5lYzA2YTUyZDA4MmZiNTRjM2ExMjhjMjAy
Y2Y5ZmE0YmMxZjViMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zMzMsNiArMzMzLDggQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNl
TG9hZGVyJiByZXNvdXJjZUwKICAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUg
PSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA9PSBMb2Fk
ZWRGcm9tT3BhcXVlU291cmNlOjpObyA/IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNl
V29ya2Vyc01vZGUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmU7CiAgICAgbG9hZFBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaHR0cEhlYWRlcnNUb0tlZXAgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuaHR0
cEhlYWRlcnNUb0tlZXA7CisgICAgaWYgKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5uYXZpZ2F0
aW9uUHJlbG9hZElkZW50aWZpZXIpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25Q
cmVsb2FkSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5uYXZpZ2F0aW9uUHJl
bG9hZElkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUgPyBm
cmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWE3OTI0ZTA0Y2JlZWI2YzU0MmQw
MzE0MjA3ZWM0N2FjYzRlZmYwNy4uYWRjODQxNmI2ODgyYmJhNzc5Y2JmYTExMzJkOGM0MmZlNWE3
NjEyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTMwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWYg
c2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBy
ZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdv
cmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNo
LXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9h
ZC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
cmVzb3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5OiBBZGRlZC4K
KwogMjAyMS0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUHJlbG9hZCBuYXZpZ2F0aW9uIHJlcXVlc3QgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIG5v
dCBpbW1lZGlhdGVseSByZWFkeSB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBmZXRj
aCBldmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2Vy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwNGE0OWE3OGNkODkyOWE0ZmQwZGI0YWIwY2ViODAxYTAxOTUwZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
ZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIuanMKQEAgLTAsMCArMSwyNyBAQAor
b25pbnN0YWxsID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKHNlbGYucG9ydCkKKyAgICAgICAgcmV0
dXJuOworICAgIGV2ZW50LndhaXRVbnRpbChuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYuaW5z
dGFsbGluZ1Byb21pc2VSZXNvbHZlID0gcmVzb2x2ZSkpOworfQorCitvbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YS5wb3J0KQorICAgICAgICBzZWxmLnBvcnQgPSBl
dmVudC5kYXRhLnBvcnQ7CisgICAgaWYgKHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlKSB7
CisgICAgICAgIHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlKCk7CisgICAgICAgIHNlbGYu
aW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlID0gbnVsbDsKKyAgICB9CisgICAgaWYgKHNlbGYuYWN0
aXZhdGluZ1Byb21pc2VSZXNvbHZlKSB7CisgICAgICAgIHNlbGYuYWN0aXZhdGluZ1Byb21pc2VS
ZXNvbHZlKCk7CisgICAgICAgIHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlID0gbnVsbDsK
KyAgICB9Cit9OworCitvbmFjdGl2YXRlID0gKGV2ZW50KSA9PiB7CisgICAgZXZlbnQud2FpdFVu
dGlsKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5hY3RpdmF0aW5nUHJvbWlzZVJlc29sdmUg
PSByZXNvbHZlKSk7CisgICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdlKCJhY3RpdmF0aW5nIik7Cit9
CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsKKyAgICBldmVu
dC5yZXNwb25kV2l0aChmZXRjaChldmVudC5yZXF1ZXN0KSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1w
cmVsb2FkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMzdlYzg2NDVjYTM0ZWExNzlkNmE1Yjk1Njc0ODc3NDQyYTBkMGM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNo
LXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorCisKK1BBU1MgU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIKK1BBU1MgU2VydmljZSB3b3JrZXIg
bG9hZCB1c2VzIHByZWxvYWQgdGhyb3VnaCBjYWxsaW5nIGZldGNoIG9uIHRoZSBmZXRjaCBldmVu
dCByZXF1ZXN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2Mjc0YWNkOWZkNjEzOTFhOTdkYzZmYjk5MGFhYTY3YTc2
ZGI4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5odHRwcy5odG1sCkBAIC0wLDAgKzEs
NjcgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGFjdGl2ZVdvcmtlcjsKK3Zh
ciB1dWlkID0gdG9rZW4oKTsKK3ZhciB1cmwgPSAiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5P3Rva2VuPSIgKyB1
dWlkOwordmFyIGZyYW1lOworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwor
CitmdW5jdGlvbiB3YWl0VW50aWxBY3RpdmF0aW5nKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImFjdGl2YXRpbmciKQorICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gdHJpZ2dlckFjdGl2YXRpb24oKQoreworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSgi
YWN0aXZhdGUiKTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlU2VwYXJhdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4o
KCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKworICAgIGxldCByZWdpc3RyYXRpb24gPSBh
d2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9zZXJ2aWNlLXdv
cmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIuanMiLCB7IHNjb3BlIDog
dXJsIH0pOworICAgIGlmICghcmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpIHsKKyAgICAgICAgcmVn
aXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsKKyAgICAgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL2Zl
dGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHVybCB9KTsK
KyAgICB9CisKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAg
ICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoeyBwb3J0OiBjaGFubmVsLnBvcnQxIH0sIFtjaGFu
bmVsLnBvcnQxXSk7CisKKyAgICByZXR1cm4gd2FpdFVudGlsQWN0aXZhdGluZygpOworfSwgIlNl
dHVwIGFjdGl2YXRpbmcgd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIGZldGNoKHVybCArICImdmFsdWU9dXNlLXByZWxvYWQiLCB7IG1ldGhvZDogJ1BPU1Qn
IH0pOworCisgICAgLy8gTG9hZCBpZnJhbWUsIHdpdGggYWN0aXZhdGluZyB3b3JrZXIsIHNvIG9u
bHkgcHJlbG9hZCB3aWxsIHN0YXJ0LgorICAgIGNvbnN0IHByb21pc2UgPSB3aXRoSWZyYW1lKHVy
bCk7CisKKyAgICB0cmlnZ2VyQWN0aXZhdGlvbigpOworCisgICAgY29uc3QgZnJhbWUgPSBhd2Fp
dCBwcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoZnJhbWUuY29udGVudFdpbmRvdy52YWx1ZSwg
InVzZS1wcmVsb2FkIik7CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSBHRVQgZmV0
Y2ggdG8gdXJsOiB0aGUgc2VydmljZSB3b3JrZXIgcHJlbG9hZAorICAgIGNvbnN0IHJlc3BvbnNl
ID0gYXdhaXQgZmV0Y2godXJsICsgIiZjb3VudD1UcnVlIik7CisgICAgYXNzZXJ0X2VxdWFscyhh
d2FpdCByZXNwb25zZS50ZXh0KCksICIxIik7Cit9LCAiU2VydmljZSB3b3JrZXIgbG9hZCB1c2Vz
IHByZWxvYWQgdGhyb3VnaCBjYWxsaW5nIGZldGNoIG9uIHRoZSBmZXRjaCBldmVudCByZXF1ZXN0
Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvZmV0Y2gtc2VydmljZS13b3JrZXIt
cHJlbG9hZC1zY3JpcHQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
cmVzb3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIwNjc4MzZmNTQxNzAzZGU4NGYwOGI4ZWIzZTZjYzhjMzM4MTM5ZmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2Zl
dGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5CkBAIC0wLDAgKzEsMzUgQEAKK2lt
cG9ydCBvcworaW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCisKKworZGVmIG1haW4ocmVxdWVz
dCwgcmVzcG9uc2UpOgorICAgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgICAgdGVz
dElkID0gaGFzaGxpYi5tZDUodG9rZW4pLmhleGRpZ2VzdCgpCisgICAgY291bnRJZCA9IGhhc2hs
aWIubWQ1KHRva2VuICsgYictY291bnQnKS5oZXhkaWdlc3QoKQorCisgICAgaWYgcmVxdWVzdC5t
ZXRob2QgPT0gIlBPU1QiOgorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRlc3RJ
ZCkKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRlc3RJZCwgcmVxdWVzdC5HRVRb
Yid2YWx1ZSddKQorICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQtVHlwZSIs
IGIidGV4dC9hc2NpaSIpCisgICAgICAgIHJldHVybiBiInVwZGF0ZWQgdG8gIiArIHJlcXVlc3Qu
R0VUW2IndmFsdWUnXQorCisgICAgaWYgcmVxdWVzdC5HRVQuZmlyc3QoYiJjb3VudCIsIEZhbHNl
KToKKyAgICAgICAgY291bnQgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKGNvdW50SWQpCisg
ICAgICAgIGlmIG5vdCBjb3VudDoKKyAgICAgICAgICAgIGNvdW50ID0gMAorICAgICAgICByZXNw
b25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9hc2NpaSIpCisgICAgICAg
IHJldHVybiBzdHIoY291bnQpCisKKyAgICBjb3VudCA9IHJlcXVlc3Quc2VydmVyLnN0YXNoLnRh
a2UoY291bnRJZCkKKyAgICBpZiBub3QgY291bnQ6CisgICAgICAgIGNvdW50ID0gMAorICAgIGNv
dW50ID0gY291bnQgKyAxCisgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KGNvdW50SWQsIGNv
dW50KQorCisgICAgdmFsdWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRlc3RJZCkKKyAg
ICBpZiBub3QgdmFsdWU6CisgICAgICAgIHZhbHVlID0gYiJub3RoaW5nIgorICAgIHJlc3BvbnNl
LmhlYWRlcnMuc2V0KGIiQ2FjaGUtQ29udHJvbCIsIGIibm8tY2FjaGUiKQorICAgIHJlc3BvbnNl
LmhlYWRlcnMuc2V0KGIiQ29udGVudC1UeXBlIiwgYiJ0ZXh0L2h0bWwiKQorICAgIHJldHVybiAi
PGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cudmFsdWUgPSAnJXMnOzwvc2NyaXB0PjwvYm9keT48
L2h0bWw+IiAlIHZhbHVlLmRlY29kZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445546</attachid>
            <date>2021-12-01 03:23:09 -0800</date>
            <delta_ts>2021-12-01 05:37:06 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233490-20211201122305.patch</filename>
            <type>text/plain</type>
            <size>40279</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZDhiYjI3ODg4NzE2
MzFhYjU2YWJiYjBlZGQ3NGFiMGRjYTQ0YS4uYmUzNGMxY2I1NGY5NTI3NjZmY2IxMzhkNTJhMjVm
ZTY4NjZlZjM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEyLTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBuYXZpZ2F0aW9u
IHByZWxvYWQgaWYgc2VydmljZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcg
bmF2aWdhdGlvbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBTdG9yZSB0aGUgZmV0Y2ggaWRlbnRpZmllciBpbiBGZXRjaFJlcXVlc3QgYXMgdGhp
cyBtaWdodCBiZSB1c2VkIGFzIHRoZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWRlbnRpZmllci4KKyAg
ICAgICAgV2Ugc2V0IGl0IHdoZW4gY3JlYXRpbmcgYSBGZXRjaFJlcXVlc3QgZm9yIGZpcmluZyBh
IGZldGNoIGV2ZW50LgorICAgICAgICBUaGlzIGlkZW50aWZpZXIgaXMga2VwdCBpbiBjYXNlIG9m
IHJlcXVlc3QgY2xvbmluZyBvciB3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCBhcyBwYXJ0IG9mIGNh
bGxpbmcgZmV0Y2guCisgICAgICAgIEl0IGlzIHVzZWQgdG8gc2V0IHRoZSBuYXZpZ2F0aW9uUHJl
bG9hZElkZW50aWZpZXIgaW4gUmVzb3VyY2VMb2FkZXJPcHRpb25zIHRoYXQgaXMgcGlwZWQgdG8g
V2ViTG9hZGVyU3RyYXRlZ3kuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMuaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmg6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAqIGxv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorCiAyMDIxLTEyLTAxICBF
bnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W01TRV1bV1BFXSBQYXJhbWV0ZXJpemUgbWF4aW11bSBidWZmZXIgc2l6ZSB1c2luZyB0aGUgTVNF
X01BWF9CVUZGRVJfU0laRSBlbnYgdmFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdlZDFkZTU4ZTFkYTVkNGM5YmI0
ZWI5ZDhmNzA3ODhjMTdkOGE3NTQuLjM1OWZkZGNjM2JjODUyYTgzNGYxMzk5OTIxMTNjOWM2ZjVk
MTE4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTItMDEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJldXNlIG5hdmlnYXRpb24gcHJlbG9h
ZCBpZiBzZXJ2aWNlIHdvcmtlciBpcyBmZXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBuYXZpZ2F0
aW9uIHJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAg
IFN0b3JlIG5hdmlnYXRpb24gcHJlbG9hZGVyIGluIE5ldHdvcmtTZXNzaW9uLCBrZXllZCBieSB0
aGUgY29ycmVzcG9uZGluZyBmZXRjaCBpZGVudGlmaWVyLgorICAgICAgICBXaGVuIGEgbmF2aWdh
dGlvbiByZXF1ZXN0IGlzIGNvbWluZyBmcm9tIGZldGNoIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcg
bmF2aWdhdGlvbiBwcmVsb2FkIGlkZW50aWZpZXIKKyAgICAgICAgd2UgbG9vayBhdCBvbmdvaW5n
IHByZWxvYWRzIGFuZCB1c2UgaXQgaWYgYXZhaWxhYmxlIHRvIGFuc3dlciB0aGUgZmV0Y2guCisg
ICAgICAgIFRvIGRvIHNvLCB3ZSBjcmVhdGUgYSBuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayB0
aGF0IHdpbGwgdGFrZSB0aGUgcHJlbG9hZGVyIG9mIHRoZSBpbml0aWFsIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwOgorCiAyMDIxLTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNo
VGFzayBkb2VzIG5vdCBuZWVkIHRvIHF1ZXJ5IHR3aWNlIGZvciBhIHJlZ2lzdHJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCA2Y2JkMWY0
OTNkNDgwN2M1MzJjMjgxM2VmZTE3ZmM5MDE1OTVmNzQyLi5lOTg5MTQxYjc3YjhlM2VlNjg5MWY1
ZTQ1YmUwYzMyZTk5ODQwNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcApAQCAtOTQsNiArOTQsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcQog
ICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRD
YWxsYmFja3M7CiAgICAgb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhOwogICAgIG9wdGlvbnMuc2FtZU9yaWdpbkRhdGFVUkxG
bGFnID0gU2FtZU9yaWdpbkRhdGFVUkxGbGFnOjpTZXQ7CisgICAgb3B0aW9ucy5uYXZpZ2F0aW9u
UHJlbG9hZElkZW50aWZpZXIgPSByZXF1ZXN0Lm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcigp
OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGZldGNoUmVxdWVzdCA9IHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcAppbmRleCBhOTU0NzQwZDNlNDNjZGUzMTIwYzEzMzViNjJkNzE0Yjc2ZDExYWZlLi45MDYx
ZjUxMzdjODhhNWM4ZjU0MGExMTk4ZjM4NmI1MGIyNWQ3YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0xNzAsNyArMTcwLDYgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcm
IHVybCwgSW5pdCYmIGluaXQpCiAgICAgbV9vcHRpb25zLmNyZWRlbnRpYWxzID0gQ3JlZGVudGlh
bHM6OlNhbWVPcmlnaW47CiAgICAgbV9yZWZlcnJlciA9ICJjbGllbnQiX3M7CiAgICAgbV9yZXF1
ZXN0LnNldFVSTChyZXF1ZXN0VVJMKTsKLSAgICBtX3JlcXVlc3Quc2V0UmVxdWVzdGVyKFJlc291
cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpGZXRjaCk7CiAgICAgbV9yZXF1ZXN0LnNldEluaXRpYXRv
cklkZW50aWZpZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJlcXVlc3RJZGVu
dGlmaWVyKCkpOwogCiAgICAgYXV0byBvcHRpb25zUmVzdWx0ID0gaW5pdGlhbGl6ZU9wdGlvbnMo
aW5pdCk7CkBAIC0yMDUsNiArMjA0LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0
Ojppbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcmIHVybCwgSW5pdCYmIGluaXQpCiBFeGNlcHRp
b25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKEZldGNoUmVxdWVzdCYgaW5w
dXQsIEluaXQmJiBpbml0KQogewogICAgIG1fcmVxdWVzdCA9IGlucHV0Lm1fcmVxdWVzdDsKKyAg
ICBtX25hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllciA9IGlucHV0Lm5hdmlnYXRpb25QcmVsb2Fk
SWRlbnRpZmllcigpOworCiAgICAgbV9vcHRpb25zID0gaW5wdXQubV9vcHRpb25zOwogICAgIG1f
cmVmZXJyZXIgPSBpbnB1dC5tX3JlZmVycmVyOwogCkBAIC0zMjIsOCArMzIzLDkgQEAgRXhjZXB0
aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IEZldGNoUmVxdWVzdDo6Y2xvbmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGUKICAgICBpZiAoaXNEaXN0dXJiZWRPckxvY2tlZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQm9keSBpcyBkaXN0dXJiZWQgb3IgbG9j
a2VkIl9zIH07CiAKLSAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3Qo
Y29udGV4dCwgc3RkOjpudWxsb3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0
KCkpLCBSZXNvdXJjZVJlcXVlc3QgeyBtX3JlcXVlc3QgfSwgRmV0Y2hPcHRpb25zIHsgbV9vcHRp
b25zfSwgU3RyaW5nIHsgbV9yZWZlcnJlciB9KSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUobV9oZWFkZXJzLmdldCgpKSwgUmVzb3VyY2VSZXF1ZXN0IHsgbV9yZXF1ZXN0IH0sIEZl
dGNoT3B0aW9ucyB7IG1fb3B0aW9ucyB9LCBTdHJpbmcgeyBtX3JlZmVycmVyIH0pKTsKICAgICBj
bG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKKyAgICBjbG9uZS0+c2V0TmF2aWdhdGlvblByZWxvYWRJ
ZGVudGlmaWVyKG1fbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyKTsKICAgICBjbG9uZS0+bV9z
aWduYWwtPnNpZ25hbEZvbGxvdyhtX3NpZ25hbCk7CiAgICAgcmV0dXJuIGNsb25lOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggNDVmY2I3MGUz
ZWU4OTA3OTcwZmUxZTY1ZjY4Y2I2YmM0N2NkZjA4Zi4uODYwOTlkOTNkNTcwMTZmOGFiYzdhYWM3
OWExOWY1Y2FmOTM4Mjk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVxdWVzdC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWJvcnRTaWduYWwuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCisjaW5j
bHVkZSAiRmV0Y2hJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5j
bHVkZSAiRmV0Y2hSZXF1ZXN0SW5pdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpA
QCAtODAsNiArODEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJl
cXVlc3QoKSBjb25zdDsKKyAgICBGZXRjaElkZW50aWZpZXIgbmF2aWdhdGlvblByZWxvYWRJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7IH0K
KyAgICB2b2lkIHNldE5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcihGZXRjaElkZW50aWZpZXIg
aWRlbnRpZmllcikgeyBtX25hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllciA9IGlkZW50aWZpZXI7
IH0KIAogcHJpdmF0ZToKICAgICBGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgRmV0Y2hPcHRpb25zJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKQEAgLTk3LDYg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7CiAgICAgbXV0YWJsZSBT
dHJpbmcgbV9yZXF1ZXN0VVJMOwogICAgIFJlZjxBYm9ydFNpZ25hbD4gbV9zaWduYWw7CisgICAg
RmV0Y2hJZGVudGlmaWVyIG1fbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwogfTsKIAogaW5s
aW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+
JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCkBAIC0xMDYsNiArMTEwLDcgQEAgaW5saW5lIEZldGNo
UmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0
ZDo6b3B0aW9uYWwKICAgICAsIG1fcmVmZXJyZXIoV1RGTW92ZShyZWZlcnJlcikpCiAgICAgLCBt
X3NpZ25hbChBYm9ydFNpZ25hbDo6Y3JlYXRlKGNvbnRleHQpKQogeworICAgIG1fcmVxdWVzdC5z
ZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKTsKICAgICB1cGRh
dGVDb250ZW50VHlwZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmgKaW5kZXggYTE5ZGNkNDhkMWEzYWY1NGEwMzA4NjczYmI3NDY0ODFlNTVl
MjdkOS4uOWNhZmM2ZTRmNjczYWRmZjRkYWZjYzM5MzQwMzlmZjViNjJjMTFmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgog
I2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkNyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3kuaCIKKyNpbmNsdWRlICJGZXRjaElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJGZXRjaE9wdGlvbnMuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKQEAgLTIwNCw2ICsyMDUsNyBAQCBzdHJ1Y3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgc3RkOjpvcHRp
b25hbDxDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5PiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
OwogICAgIE9wdGlvblNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4gaHR0cEhlYWRl
cnNUb0tlZXA7CiAgICAgdWludDhfdCBtYXhSZWRpcmVjdENvdW50IHsgMjAgfTsKKyAgICBGZXRj
aElkZW50aWZpZXIgbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwogCiAgICAgU2VuZENhbGxi
YWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzIDogYml0V2lkdGhPZlNlbmRDYWxsYmFja1BvbGlj
eTsKICAgICBDb250ZW50U25pZmZpbmdQb2xpY3kgc25pZmZDb250ZW50IDogYml0V2lkdGhPZkNv
bnRlbnRTbmlmZmluZ1BvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCAxYjY1MzJjM2IwZWFhODBkOWJkNDZjNmQ0MzIxMzY5NjIxYzAxOWJiLi4y
MDg2ODdhZDE1NjUzODUxOTk0OTliNDkwY2MyYjFjODUxYzUyNTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC05MSw2ICs5MSw3IEBAIFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkoKSBj
b25zdAogICAgIGNvcHkuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IHRoaXMtPmNsaWVudENyZWRl
bnRpYWxQb2xpY3k7CiAgICAgY29weS5tYXhSZWRpcmVjdENvdW50ID0gdGhpcy0+bWF4UmVkaXJl
Y3RDb3VudDsKICAgICBjb3B5LnByZWZsaWdodFBvbGljeSA9IHRoaXMtPnByZWZsaWdodFBvbGlj
eTsKKyAgICBjb3B5Lm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllciA9IHRoaXMtPm5hdmlnYXRp
b25QcmVsb2FkSWRlbnRpZmllcjsKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJPcHRpb25zCiAg
ICAgY29weS5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IHRoaXMtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
NGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4OS4uZDQ1NGU5ZDE3NDg0MGY2
NWMzN2EwMTE1Mjg5MTUyYTEwMjY0MjQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+
JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICB9KTsKIH0KIAot
dm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
dHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykKK3ZvaWQgZGlzcGF0Y2hG
ZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUm
IGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJy
ZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIpCiB7CiAgICAgYXV0byByZXF1ZXN0SGVhZGVycyA9IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZl
dGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgSFRUUEhlYWRlck1hcCB7IHJlcXVlc3QuaHR0
cEhlYWRlckZpZWxkcygpIH0pOwogCkBAIC0xNjcsNiArMTY3LDcgQEAgdm9pZCBkaXNwYXRjaEZl
dGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYg
Z2xvYmFsU2MKIAogICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBhdXRv
IGZldGNoUmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKGdsb2JhbFNjb3BlLCBXVEZNb3Zl
KGJvZHkpLCBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSwgIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUob3B0aW9ucyksIFdURk1vdmUocmVmZXJyZXIpKTsKKyAgICBmZXRjaFJlcXVlc3QtPnNldE5h
dmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcihmZXRjaElkZW50aWZpZXIpOwogCiAgICAgRmV0Y2hF
dmVudDo6SW5pdCBpbml0OwogICAgIGluaXQucmVxdWVzdCA9IFdURk1vdmUoZmV0Y2hSZXF1ZXN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXggZmM1YTcyNThlNDdlNjdhZGRkZmIxNjIxOWQ0
OGZmZTY0YTU4YTliMS4uNzY3MTQ2YmIwMjM2NGRkYTFlZjcxYTAxMTM0MzlhYmNlNWU1ZDk5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpID0gMDsKIH07CiAKLXZvaWQg
ZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBSZXNv
dXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKK3ZvaWQg
ZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBSZXNv
dXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElk
ZW50aWZpZXIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcAppbmRleCA4NTMwOTZkZDE3NTMxN2M1NWYwYTY0YWQ1Y2VlMGFiMWJlOWU1NTYz
Li44YjFjZWNkMzdkZTMxYzMyMDE5ZDY4ZjNhMmUwNDEyMzdhMjg1YTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcApAQCAtMTI0LDExICsxMjQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpydW5FdmVudExvb3AoKQogICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVu
dChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9u
cykKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChS
ZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKIHsKICAgICBSZWYgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFs
U2NvcGUoKSk7Ci0gICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgb3B0aW9ucyA9IFdURk1v
dmUob3B0aW9ucyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlz
cGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUo
b3B0aW9ucykpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVl
dWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBXVEZN
b3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIFNlcnZp
Y2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllcik7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCA0MDY3ZDE2ZGU5MmQzYjMyMWU2MjAwNDA4
MTM1YjI5ZDZiMWM3MmY2Li5kOWUzMzY1MTljNWQwNWI4MzZmODQxMjA4OTM1MzJlNzlhNDFjMzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpOwogICAgIHZvaWQgd2lsbFBv
c3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50KCk7CiAKLSAgICB2b2lkIHF1
ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYm
LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmLCBSZXNv
dXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKKyAgICB2
b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xp
ZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYm
LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBG
ZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgcXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0
YSk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHF1
ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwCmluZGV4IGM5YzhlMmJhMmVlYmNiMjU2NWRjYTI3ZmIxZmQwZjBiNzI3YWJjZmQu
LmNmZDM2YTE4ZThmYzViYWJkZDUyZDliNzQ5OWY4OTQyMjIzNmNhZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjIxLDggKzIyMSw4IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgY29ubmVjdGlvCiAKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMo
a2V5KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigp
KTsKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
LCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0g
cmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgp
XShhdXRvJikgbXV0YWJsZSB7Ci0gICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNo
RXZlbnQoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucykpOworICAgIHBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0
ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENv
cHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCksIGZldGNoSWRlbnRpZmllcl0o
YXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2
ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIpOwog
ICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuY3BwCmluZGV4IDZiYjBiZTg0NDZhMDlmZDQ1ZDVjMDg3OGM4MGY2NmFlNWIxNmQx
YWQuLjRhNmQ2MzNkYjI4MDE1MjBlYmUzNDNjYzU2OWQ4NDJlMGMxODRiYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKICAgICBlbmNvZGVyIDw8IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgaHR0cEhlYWRlcnNU
b0tlZXA7CisgICAgZW5jb2RlciA8PCBuYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXI7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0zNjIsNiArMzYzLDEyIEBA
IHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgaWYgKCFodHRwSGVhZGVyc1RvS2VlcCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaHR0cEhlYWRlcnNUb0tlZXAg
PSBXVEZNb3ZlKCpodHRwSGVhZGVyc1RvS2VlcCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
b3B0aW9uYWw8RmV0Y2hJZGVudGlmaWVyPj4gbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOworICAgIGlmICghbmF2
aWdhdGlvblByZWxvYWRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJlc3VsdC5uYXZpZ2F0aW9uUHJlbG9hZElkZW50aWZpZXIgPSAqbmF2aWdhdGlvblByZWxv
YWRJZGVudGlmaWVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDdiYTEzZmJiOTZmZTg3OWU3MTY1YjA2Y2UwODM2
Nzk5MjdlZTViOTQuLmMxZTQ1NTg0ZTQ3ZmNmN2EzYzQ5OTZiMWY0ZWM2ZjdkYWFmMzg5MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTc3LDExICs3NywxMiBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3k7CiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEIHsgMCB9OwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6TmF2aWdhdGlvblJlcXVlc3Rlcj4gbmF2aWdhdGlvblJlcXVlc3RlcjsKLSAg
ICAKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29y
a2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
OjpOb25lIH07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OkhUVFBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nPiBodHRw
SGVhZGVyc1RvS2VlcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cj4gbmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCA2ZDhhY2UyZTJkMTBmODU2NTI3MTRjYTg1Y2JiNmYxODQ1Mzg4
NmY0Li5mYTAzMGVlNTgwNGQ1YmY5N2U5NTQ3NWYxMDgzMDRjZWRiZTAzNzEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oIgog
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC01
NDYsNCArNTQ3LDIxIEBAIFN0cmluZyBOZXR3b3JrU2Vzc2lvbjo6YXR0cmlidXRlZEJ1bmRsZUlk
ZW50aWZpZXJGcm9tUGFnZUlkZW50aWZpZXIoV2ViUGFnZVByb3h5CiAgICAgcmV0dXJuIG1fYXR0
cmlidXRlZEJ1bmRsZUlkZW50aWZpZXJGcm9tUGFnZUlkZW50aWZpZXJzLmdldChpZGVudGlmaWVy
KTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgTmV0d29ya1Nlc3Npb246
OmFkZE5hdmlnYXRpb25QcmVsb2FkZXJUYXNrKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2sp
Cit7CisgICAgbV9uYXZpZ2F0aW9uUHJlbG9hZGVycy5hZGQodGFzay5mZXRjaElkZW50aWZpZXIo
KSwgdGFzayk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnJlbW92ZU5hdmlnYXRpb25QcmVs
b2FkZXJUYXNrKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgbV9uYXZpZ2F0
aW9uUHJlbG9hZGVycy5yZW1vdmUodGFzay5mZXRjaElkZW50aWZpZXIoKSk7Cit9CisKK1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sqIE5ldHdvcmtTZXNzaW9uOjpuYXZpZ2F0aW9uUHJlbG9hZGVyVGFz
a0Zyb21GZXRjaElkZW50aWZpZXIoRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIG1fbmF2aWdhdGlvblByZWxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGY0ZjUxZDRhYjQzZGY2YmNlNWEwODMyN2Y2
OGNhOGVkODg2NjU3OTMuLmRhNjIwMTM5M2UxNTA2N2M2YTUyNmQ4MWM4YmEwMWUxNTE2N2EyMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9CbG9iUmVnaXN0cnlJbXBsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CkBAIC02NSw2ICs2Niw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNz
OwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOworY2xhc3MgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNz
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBA
IC0xNzUsNiArMTc3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICB2b2lkIGFkZFNvZnRVcGRhdGVMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyPiYmIGxvYWRlcikgeyBtX3NvZnRVcGRhdGVMb2FkZXJzLmFkZChXVEZN
b3ZlKGxvYWRlcikpOyB9CiAgICAgdm9pZCByZW1vdmVTb2Z0VXBkYXRlTG9hZGVyKFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyKiBsb2FkZXIpIHsgbV9zb2Z0VXBkYXRlTG9hZGVycy5yZW1v
dmUobG9hZGVyKTsgfQorICAgIHZvaWQgYWRkTmF2aWdhdGlvblByZWxvYWRlclRhc2soU2Vydmlj
ZVdvcmtlckZldGNoVGFzayYpOworICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqIG5hdmlnYXRp
b25QcmVsb2FkZXJUYXNrRnJvbUZldGNoSWRlbnRpZmllcihXZWJDb3JlOjpGZXRjaElkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVtb3ZlTmF2aWdhdGlvblByZWxvYWRlclRhc2soU2VydmljZVdvcmtl
ckZldGNoVGFzayYpOwogI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29y
a0xvYWRTY2hlZHVsZXIoKTsKQEAgLTI1OCw4ICsyNjMsOSBAQCBwcm90ZWN0ZWQ6CiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+PiBtX3NvZnRVcGRhdGVMb2FkZXJzOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s+PiBtX25hdmlnYXRpb25QcmVsb2FkZXJzOwogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgbV9hcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcAppbmRleCBhODQxYjBhOTE2ZGQ5ZDdlNTE2NWZlN2U2ZjM2Zjk5ZTczYmU0MDhjLi4z
NDhkMjdlN2NiZmEyM2M4NjY5NTM5M2ZkZDBjMDc1NDVlYTAyYzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
QEAgLTUwLDYgKzUxLDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmZyb21OYXZpZ2F0aW9uUHJlbG9hZGVyKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYgc3dTZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRl
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBOZXR3b3JrU2Vzc2lv
biogc2Vzc2lvbikKK3sKKyAgICBpZiAoIWxvYWRlci5wYXJhbWV0ZXJzKCkubmF2aWdhdGlvblBy
ZWxvYWRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdGFz
ayA9IHNlc3Npb24gPyBzZXNzaW9uLT5uYXZpZ2F0aW9uUHJlbG9hZGVyVGFza0Zyb21GZXRjaElk
ZW50aWZpZXIoKmxvYWRlci5wYXJhbWV0ZXJzKCkubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVy
KSA6IG51bGxwdHI7CisgICAgaWYgKCF0YXNrIHx8ICF0YXNrLT5tX3ByZWxvYWRlciB8fCB0YXNr
LT5tX2lzTG9hZGluZ0Zyb21QcmVsb2FkZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byBwcmVsb2FkID0gc3RkOjpleGNoYW5nZSh0YXNrLT5tX3ByZWxvYWRlciwgeyB9KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzd1NlcnZlckNv
bm5lY3Rpb24sIGxvYWRlciwgV1RGTW92ZShwcmVsb2FkKSk7Cit9CisKK1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBz
d1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI+JiYgcHJlbG9hZGVyKQor
ICAgIDogbV9zd1NlcnZlckNvbm5lY3Rpb24oc3dTZXJ2ZXJDb25uZWN0aW9uKQorICAgICwgbV9s
b2FkZXIobG9hZGVyKQorICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9wcmVsb2FkZXIoV1RGTW92ZShwcmVsb2FkZXIp
KQoreworICAgIGxvYWRSZXNwb25zZUZyb21QcmVsb2FkZXIoKTsKK30KKwogU2VydmljZVdvcmtl
ckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24m
IHN3U2VydmVyQ29ubmVjdGlvbiwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBOZXR3b3Jr
U2Vzc2lvbiogc2Vzc2lvbiwgYm9vbCBpc1dvcmtlclJlYWR5KQogICAgIDogbV9zd1NlcnZlckNv
bm5lY3Rpb24oc3dTZXJ2ZXJDb25uZWN0aW9uKQogICAgICwgbV9sb2FkZXIobG9hZGVyKQpAQCAt
NTcsMTIgKzgwLDEzIEBAIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvCiAgICAgLCBtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwgbV9z
ZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAsIG1f
Y3VycmVudFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKLSAgICAsIG1fdGltZW91dFRpbWVyKCp0
aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQpCisgICAgLCBt
X3RpbWVvdXRUaW1lcihtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKSkKICAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSkKICAgICAsIG1fc2hvdWxk
U29mdFVwZGF0ZShyZWdpc3RyYXRpb24uc2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVy
cygpLm9wdGlvbnMpKQogewogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coIlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6IChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiLCAlZCkiLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LnRvVUludDY0KCksIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIudG9VSW50
NjQoKSwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBpc1dvcmtlclJlYWR5
KTsKLSAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobG9hZGVyLmNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7
CisKKyAgICBtX3RpbWVvdXRUaW1lci0+c3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkp
OwogCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGV4dGVuZGluZyB0aGlzIGJhc2VkIG9uIG5hdmln
YXRpb24gcHJlbG9hZCBtYW5hZ2VyLgogICAgIGJvb2wgc2hvdWxkRG9OYXZpZ2F0aW9uUHJlbG9h
ZCA9IHNlc3Npb24gJiYgaXNOYXZpZ2F0aW9uUmVxdWVzdChsb2FkZXIucGFyYW1ldGVycygpLm9w
dGlvbnMuZGVzdGluYXRpb24pICYmIGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS5odHRwTWV0aG9k
KCkgPT0gIkdFVCI7CkBAIC03MCw2ICs5NCw3IEBAIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvCiAg
ICAgICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbG9hZGVyLnBhcmFtZXRl
cnMoKTsKICAgICAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKICAg
ICAgICAgbV9wcmVsb2FkZXIgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyPigqc2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHNlc3Npb24t
PmFkZE5hdmlnYXRpb25QcmVsb2FkZXJUYXNrKCp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTE0NCw3
ICsxNjksOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZWRpcmVjdFJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZQogCiAgICAgU1dGRVRDSF9SRUxFQVNF
X0xPRygicHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2U6Iik7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1
ZTsKLSAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQor
ICAgICAgICBtX3RpbWVvdXRUaW1lci0+c3RvcCgpOwogICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgp
OwogCiAgICAgaWYgKHNob3VsZFNldFNvdXJjZSA9PSBTaG91bGRTZXRTb3VyY2U6OlllcykKQEAg
LTE2OCw3ICsxOTQsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbgogCiAgICAgU1dGRVRDSF9S
RUxFQVNFX0xPRygicHJvY2Vzc1Jlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBl
PSUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQg
IiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQsIHNvdXJjZT0ldSki
LCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5k
YXRhKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3BvbnNlLnNv
dXJjZSgpKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBtX3RpbWVvdXRUaW1lci5z
dG9wKCk7CisgICAgaWYgKG1fdGltZW91dFRpbWVyKQorICAgICAgICBtX3RpbWVvdXRUaW1lci0+
c3RvcCgpOwogICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwogCiAgICAgaWYgKG1fbG9hZGVyLnBh
cmFtZXRlcnMoKS5vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkg
ewpAQCAtMjAzLDcgKzIzMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2CiAgICAgaWYgKG1f
aXNEb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVyLmlz
QWN0aXZlKCkpOworICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIgfHwgIW1fdGltZW91dFRpbWVy
LT5pc0FjdGl2ZSgpKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCkBA
IC0yMTIsNyArMjM5LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
Rm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm8KICAgICBpZiAobV9pc0Rv
bmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3Rp
dmUoKSk7CisgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXItPmlz
QWN0aXZlKCkpOwogICAgIC8vIEZJWE1FOiBBbGxvdyBXZWJSZXNvdXJjZUxvYWRlciB0byByZWNl
aXZlIGZvcm0gZGF0YS4KIH0KIApAQCAtMjIzLDE5ICsyNTAsMjAgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2goKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZEZpbmlzaFdpdGhNZXRyaWNzKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQogewotICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7Cisg
ICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lciB8fCAhbV90aW1lb3V0VGltZXItPmlzQWN0aXZlKCkp
OwogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coImRpZEZpbmlzaFdpdGhNZXRyaWNzOiIpOwogCiAg
ICAgbV9pc0RvbmUgPSB0cnVlOwotICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAo
bV90aW1lb3V0VGltZXIpCisgICAgICAgIG1fdGltZW91dFRpbWVyLT5zdG9wKCk7CiAgICAgc2Vu
ZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VM
b2FkIHsgbmV0d29ya0xvYWRNZXRyaWNzIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgbV9pc0Rv
bmUgPSB0cnVlOwotICAgIGlmIChtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1lb3V0VGltZXIgJiYgbV90aW1l
b3V0VGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV90aW1lb3V0VGltZXItPnN0b3AoKTsK
ICAgICAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CiAgICAgfQogICAgIGNhbmNlbFByZWxvYWRJ
Zk5lY2Vzc2FyeSgpOwpAQCAtMjUwLDcgKzI3OCw4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6ZGlkTm90SGFuZGxlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU1dGRVRDSF9SRUxF
QVNFX0xPRygiZGlkTm90SGFuZGxlOiIpOwotICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAg
ICBpZiAobV90aW1lb3V0VGltZXIpCisgICAgICAgIG1fdGltZW91dFRpbWVyLT5zdG9wKCk7CiAg
ICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CiAKICAgICBpZiAobV9wcmVsb2FkZXIpIHsKQEAgLTI5
NSw3ICszMjQsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRmV0Y2hU
YXNrV2l0aChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICBtX2xvYWRlci5zZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlKHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOworICAg
IGlmIChtX3RpbWVvdXRUaW1lcikKKyAgICAgICAgbV90aW1lb3V0VGltZXItPnN0YXJ0T25lU2hv
dChtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpOwogICAgIHN0YXJ0RmV0Y2goKTsKIH0KQEAgLTM3NCwxMCArNDA0LDE5IEBAIHZv
aWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y2FuY2VsUHJlbG9hZElmTmVjZXNzYXJ5KCkKIHsK
ICAgICBpZiAoIW1fcHJlbG9hZGVyKQogICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlTmF2aWdh
dGlvblByZWxvYWRlclRhc2soKnRoaXMpOworCiAgICAgbV9wcmVsb2FkZXItPmNhbmNlbCgpOwog
ICAgIG1fcHJlbG9hZGVyID0gbnVsbHB0cjsKIH0KIAorTmV0d29ya1Nlc3Npb24qIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX3N3U2VydmVyQ29ubmVj
dGlvbiA/IG1fc3dTZXJ2ZXJDb25uZWN0aW9uLT5zZXNzaW9uKCkgOiBudWxscHRyOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFNXRkVUQ0hfUkVMRUFTRV9MT0cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IDhlNTZjN2IxZThiYjRhODg5OWJh
YTZhNTlmYWEyM2RkM2Y3OGU1MTUuLmFiYTkwNTcyZjA1MWVlZDkwZjJmN2E5ZDUzNTA1ZTFhNGY0
ZTk4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtNjMsNyAr
NjMsMTEgQEAgY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogY2xhc3MgU2Vy
dmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBmcm9tTmF2aWdh
dGlvblByZWxvYWRlcihXZWJTV1NlcnZlckNvbm5lY3Rpb24mLCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBOZXR3b3JrU2Vzc2lvbiopOwor
CiAgICAgU2VydmljZVdvcmtlckZldGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24mLCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgTmV0d29ya1Nlc3Npb24qLCBi
b29sIGlzV29ya2VyUmVhZHkpOworICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyPiYmKTsKKwogICAgIH5TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrKCk7CiAKICAgICB2b2lkIHN0YXJ0KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYpOwpAQCAtMTAyLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkUmVzcG9u
c2VGcm9tUHJlbG9hZGVyKCk7CiAgICAgdm9pZCBsb2FkQm9keUZyb21QcmVsb2FkZXIoKTsKICAg
ICB2b2lkIGNhbmNlbFByZWxvYWRJZk5lY2Vzc2FyeSgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBz
ZXNzaW9uKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb1Nl
cnZpY2VXb3JrZXIoTWVzc2FnZSYmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBi
b29sIHNlbmRUb0NsaWVudChNZXNzYWdlJiYpOwpAQCAtMTEzLDcgKzExOCw3IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX3NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1f
c2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1f
Y3VycmVudFJlcXVlc3Q7Ci0gICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRpbWVyPiBtX3RpbWVvdXRUaW1lcjsKICAgICBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlcj4gbV9wcmVsb2FkZXI7CiAgICAgYm9vbCBtX3dhc0hhbmRsZWQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBk
OWM0ZGYzNzJhM2RkNGQ3OWI5MjM1ZDJlZjA2ZWQwYzAxNmY1ZGRkLi4xODhmMjA5OWI4NTAzZTZm
YzQ5MTU4MDkyNDBkNzIxMTJjZDZmMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcApAQCAtMTUyLDggKzE1MiwxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6Y29udHJvbENsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbgog
CiBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAobG9hZGVyLnBhcmFtZXRl
cnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKQorICAg
IGlmIChsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29y
a2Vyc01vZGU6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkucmVxdWVz
dC5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6RmV0Y2ggJiYgaXNO
YXZpZ2F0aW9uUmVxdWVzdChsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuZGVzdGluYXRpb24p
KSB7CisgICAgICAgICAgICBpZiAoYXV0byB0YXNrID0gU2VydmljZVdvcmtlckZldGNoVGFzazo6
ZnJvbU5hdmlnYXRpb25QcmVsb2FkZXIoKnRoaXMsIGxvYWRlciwgcmVxdWVzdCwgc2Vzc2lvbigp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFzazsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CiAKICAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShs
b2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGM2MzU3NzkyOWI1ZTAyNDIzZTM1MjJiMDA3Mzll
MzAzZjdmZDhiOTAuLmVjMDZhNTJkMDgyZmI1NGMzYTEyOGMyMDJjZjlmYTRiYzFmNWIzOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKQEAgLTMzMyw2ICszMzMsOCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAog
ICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9w
dGlvbnMoKS5sb2FkZWRGcm9tT3BhcXVlU291cmNlID09IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6
Ok5vID8gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA6IFNlcnZp
Y2VXb3JrZXJzTW9kZTo6Tm9uZTsKICAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBsb2FkUGFyYW1ldGVycy5odHRwSGVhZGVy
c1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2VlcDsKKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmll
cikKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvblByZWxvYWRJZGVudGlmaWVyID0g
cmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLm5hdmlnYXRpb25QcmVsb2FkSWRlbnRpZmllcjsKICNl
bmRpZgogCiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNlMjJi
Li40OGIwZTE2YmRkOTQ0ZTJkYTBmMGNiZDcxNWIwNjQzMTk4NGZlNzQ5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMjEtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIFJldXNlIG5hdmlnYXRpb24gcHJlbG9hZCBpZiBzZXJ2aWNlIHdvcmtlciBpcyBm
ZXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBuYXZpZ2F0aW9uIHJlcXVlc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ5MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9h
ZC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvZmV0Y2gtc2Vydmlj
ZS13b3JrZXItcHJlbG9hZC1zY3JpcHQucHk6IEFkZGVkLgorCiAyMDIxLTExLTMwICBSb2JlcnQg
SmVubmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUJBU0VMSU5FIFsgTW9udGVy
ZXkgXWZhc3QvY3NzL2NvbnRpbnVhdGlvbkNyYXNoLmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGNv
bnN0YW50IHRleHQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXBy
ZWxvYWQtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNGE0OWE3OGNkODkyOWE0ZmQwZGI0YWIwY2Vi
ODAxYTAxOTUwZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIuanMKQEAgLTAs
MCArMSwyNyBAQAorb25pbnN0YWxsID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKHNlbGYucG9ydCkK
KyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50LndhaXRVbnRpbChuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlID0gcmVzb2x2ZSkpOworfQorCitvbm1l
c3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YS5wb3J0KQorICAgICAgICBz
ZWxmLnBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgaWYgKHNlbGYuaW5zdGFsbGluZ1Byb21p
c2VSZXNvbHZlKSB7CisgICAgICAgIHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlKCk7Cisg
ICAgICAgIHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlID0gbnVsbDsKKyAgICB9CisgICAg
aWYgKHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlKSB7CisgICAgICAgIHNlbGYuYWN0aXZh
dGluZ1Byb21pc2VSZXNvbHZlKCk7CisgICAgICAgIHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNv
bHZlID0gbnVsbDsKKyAgICB9Cit9OworCitvbmFjdGl2YXRlID0gKGV2ZW50KSA9PiB7CisgICAg
ZXZlbnQud2FpdFVudGlsKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5hY3RpdmF0aW5nUHJv
bWlzZVJlc29sdmUgPSByZXNvbHZlKSk7CisgICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdlKCJhY3Rp
dmF0aW5nIik7Cit9CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsKKyAgICBldmVudC5yZXNwb25kV2l0aChmZXRjaChldmVudC5yZXF1ZXN0KSk7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2
aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzdlYzg2NDVjYTM0ZWExNzlkNmE1Yjk1Njc0ODc3NDQy
YTBkMGM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorCisKK1BBU1MgU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIKK1BBU1MgU2Vy
dmljZSB3b3JrZXIgbG9hZCB1c2VzIHByZWxvYWQgdGhyb3VnaCBjYWxsaW5nIGZldGNoIG9uIHRo
ZSBmZXRjaCBldmVudCByZXF1ZXN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9mZXRjaC1zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3Jr
ZXItcHJlbG9hZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2Mjc0YWNkOWZkNjEzOTFhOTdkYzZm
Yjk5MGFhYTY3YTc2ZGI4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC5odHRwcy5odG1s
CkBAIC0wLDAgKzEsNjcgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91
dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGFjdGl2
ZVdvcmtlcjsKK3ZhciB1dWlkID0gdG9rZW4oKTsKK3ZhciB1cmwgPSAiL1dlYktpdC9zZXJ2aWNl
LXdvcmtlcnMvcmVzb3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5
P3Rva2VuPSIgKyB1dWlkOwordmFyIGZyYW1lOworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbCgpOworCitmdW5jdGlvbiB3YWl0VW50aWxBY3RpdmF0aW5nKCkKK3sKKyAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGNoYW5uZWwucG9ydDIub25tZXNz
YWdlID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImFjdGl2
YXRpbmciKQorICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gdHJpZ2dlckFjdGl2YXRpb24oKQoreworICAgIGFjdGl2ZVdvcmtlci5w
b3N0TWVzc2FnZSgiYWN0aXZhdGUiKTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0
Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKworICAgIGxldCByZWdp
c3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktp
dC9zZXJ2aWNlLXdvcmtlcnMvZmV0Y2gtc2VydmljZS13b3JrZXItcHJlbG9hZC13b3JrZXIuanMi
LCB7IHNjb3BlIDogdXJsIH0pOworICAgIGlmICghcmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpIHsK
KyAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsKKyAgICAgICAgcmVnaXN0cmF0aW9u
ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2Vydmlj
ZS13b3JrZXJzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtd29ya2VyLmpzIiwgeyBzY29w
ZSA6IHVybCB9KTsKKyAgICB9CisKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5z
dGFsbGluZzsKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoeyBwb3J0OiBjaGFubmVsLnBv
cnQxIH0sIFtjaGFubmVsLnBvcnQxXSk7CisKKyAgICByZXR1cm4gd2FpdFVudGlsQWN0aXZhdGlu
ZygpOworfSwgIlNldHVwIGFjdGl2YXRpbmcgd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIGZldGNoKHVybCArICImdmFsdWU9dXNlLXByZWxvYWQiLCB7IG1l
dGhvZDogJ1BPU1QnIH0pOworCisgICAgLy8gTG9hZCBpZnJhbWUsIHdpdGggYWN0aXZhdGluZyB3
b3JrZXIsIHNvIG9ubHkgcHJlbG9hZCB3aWxsIHN0YXJ0LgorICAgIGNvbnN0IHByb21pc2UgPSB3
aXRoSWZyYW1lKHVybCk7CisKKyAgICB0cmlnZ2VyQWN0aXZhdGlvbigpOworCisgICAgY29uc3Qg
ZnJhbWUgPSBhd2FpdCBwcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoZnJhbWUuY29udGVudFdp
bmRvdy52YWx1ZSwgInVzZS1wcmVsb2FkIik7CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmx5
IG9uZSBHRVQgZmV0Y2ggdG8gdXJsOiB0aGUgc2VydmljZSB3b3JrZXIgcHJlbG9hZAorICAgIGNv
bnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsICsgIiZjb3VudD1UcnVlIik7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCByZXNwb25zZS50ZXh0KCksICIxIik7Cit9LCAiU2VydmljZSB3b3Jr
ZXIgbG9hZCB1c2VzIHByZWxvYWQgdGhyb3VnaCBjYWxsaW5nIGZldGNoIG9uIHRoZSBmZXRjaCBl
dmVudCByZXF1ZXN0Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvZmV0Y2gtc2Vy
dmljZS13b3JrZXItcHJlbG9hZC1zY3JpcHQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwNjc4MzZmNTQxNzAzZGU4NGYwOGI4ZWIzZTZjYzhjMzM4MTM5ZmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
cmVzb3VyY2VzL2ZldGNoLXNlcnZpY2Utd29ya2VyLXByZWxvYWQtc2NyaXB0LnB5CkBAIC0wLDAg
KzEsMzUgQEAKK2ltcG9ydCBvcworaW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCisKKworZGVm
IG1haW4ocmVxdWVzdCwgcmVzcG9uc2UpOgorICAgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tl
biddCisgICAgdGVzdElkID0gaGFzaGxpYi5tZDUodG9rZW4pLmhleGRpZ2VzdCgpCisgICAgY291
bnRJZCA9IGhhc2hsaWIubWQ1KHRva2VuICsgYictY291bnQnKS5oZXhkaWdlc3QoKQorCisgICAg
aWYgcmVxdWVzdC5tZXRob2QgPT0gIlBPU1QiOgorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFz
aC50YWtlKHRlc3RJZCkKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRlc3RJZCwg
cmVxdWVzdC5HRVRbYid2YWx1ZSddKQorICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNv
bnRlbnQtVHlwZSIsIGIidGV4dC9hc2NpaSIpCisgICAgICAgIHJldHVybiBiInVwZGF0ZWQgdG8g
IiArIHJlcXVlc3QuR0VUW2IndmFsdWUnXQorCisgICAgaWYgcmVxdWVzdC5HRVQuZmlyc3QoYiJj
b3VudCIsIEZhbHNlKToKKyAgICAgICAgY291bnQgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtl
KGNvdW50SWQpCisgICAgICAgIGlmIG5vdCBjb3VudDoKKyAgICAgICAgICAgIGNvdW50ID0gMAor
ICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9hc2Np
aSIpCisgICAgICAgIHJldHVybiBzdHIoY291bnQpCisKKyAgICBjb3VudCA9IHJlcXVlc3Quc2Vy
dmVyLnN0YXNoLnRha2UoY291bnRJZCkKKyAgICBpZiBub3QgY291bnQ6CisgICAgICAgIGNvdW50
ID0gMAorICAgIGNvdW50ID0gY291bnQgKyAxCisgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0
KGNvdW50SWQsIGNvdW50KQorCisgICAgdmFsdWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtl
KHRlc3RJZCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHZhbHVlID0gYiJub3RoaW5nIgor
ICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KGIiQ2FjaGUtQ29udHJvbCIsIGIibm8tY2FjaGUiKQor
ICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KGIiQ29udGVudC1UeXBlIiwgYiJ0ZXh0L2h0bWwiKQor
ICAgIHJldHVybiAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cudmFsdWUgPSAnJXMnOzwvc2Ny
aXB0PjwvYm9keT48L2h0bWw+IiAlIHZhbHVlLmRlY29kZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>