<?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>180702</bug_id>
          
          <creation_ts>2017-12-12 10:32:08 -0800</creation_ts>
          <short_desc>[Service Workers] Implement &quot;Soft Update&quot; algorithm</short_desc>
          <delta_ts>2017-12-26 18:13:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=181166</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=181167</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>179808</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jlewis3</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1380708</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-12 10:32:08 -0800</bug_when>
    <thetext>Implement &quot;Soft Update&quot; algorithm:
- https://w3c.github.io/ServiceWorker/#soft-update-algorithm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383822</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-20 14:06:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/36163461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384144</commentid>
    <comment_count>2</comment_count>
      <attachid>330036</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-21 10:35:11 -0800</bug_when>
    <thetext>Created attachment 330036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384159</commentid>
    <comment_count>3</comment_count>
      <attachid>330040</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-21 10:44:57 -0800</bug_when>
    <thetext>Created attachment 330040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384404</commentid>
    <comment_count>4</comment_count>
      <attachid>330040</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-21 21:52:50 -0800</bug_when>
    <thetext>Comment on attachment 330040
Patch

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

&gt; Source/WebCore/workers/service/SWClientConnection.cpp:132
&gt; +        failedFetchingScript(jobDataIdentifier, registrationKey, ResourceError { errorDomainWebKitInternal, 0, URL(), ASCIILiteral(&quot;Failed to fetch service worker script&quot;) });

I don&apos;t know whether this makeScopeExit is worth it here:
- There is only one early return
- We could probably have different error messages for the two failure cases.

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:195
&gt;      if (!context || !context-&gt;sessionID().isValid()) {

Given updateRegistration is only called by ServiceWorkerRegistration, we probably do not need to check that context is null since this is done at the call sites.
We could also move that if statement and maybe the next one to the two call sites.

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:368
&gt;          context-&gt;postTask([job = makeRef(job), exception](ScriptExecutionContext&amp;) {

Looking at the code, it seems we take a job ref both to go to main thread and to go to worker thread.
Given it carries a Ref&lt;DeferredPromise&gt;, I do not think this is actually safe, since we may destroy the promise in the main thread.
We should probably rework this. For instance m_scheduledJobs should not have refs of jobs that are created in the worker thread.

&gt; Source/WebCore/workers/service/context/SWContextManager.cpp:131
&gt; +    serviceWorker-&gt;thread().runLoop().postTask([task = WTFMove(task)] (auto&amp; context) {

Are we sure postTask will actually always execute the task?
I would guess that if we are trying to terminate the worker, adding a task in the queue will not make the task be executed.
Maybe the m_workerMap check prevents that case. If so, we could assert that the queue is not being killed.

&gt; Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp:141
&gt; +    if (isNonSubresourceRequest || (registration.lastUpdateTime() &amp;&amp; (WallTime::now() - registration.lastUpdateTime()) &gt; 86400_s))

We probably have this now - lastUpdateTime &gt; 86400 in various places.
Would it be useful to have a helper function for this on the registration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384532</commentid>
    <comment_count>5</comment_count>
      <attachid>330138</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-22 12:44:59 -0800</bug_when>
    <thetext>Created attachment 330138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384539</commentid>
    <comment_count>6</comment_count>
      <attachid>330138</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-22 13:17:51 -0800</bug_when>
    <thetext>Comment on attachment 330138
Patch

Clearing flags on attachment: 330138

Committed r226274: &lt;https://trac.webkit.org/changeset/226274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384540</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-22 13:17:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384764</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-12-26 17:41:59 -0800</bug_when>
    <thetext>After this patch the test imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https.html has become very flaky on WK2. It is most common on macOS:

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=imported%2Fw3c%2Fweb-platform-tests%2Fservice-workers%2Fservice-worker%2Fregister-same-scope-different-script-url.https.html

https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r226294%20(1953)/results.html
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/builds/1953


diff:
--- /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt
+++ /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-actual.txt
@@ -1,7 +1,9 @@
+
+Harness Error (TIMEOUT), message = null
 
 PASS Register different scripts concurrently 
 PASS Register then register new script URL 
 PASS Register then register new script URL that 404s 
 FAIL Register then register new script that does not install assert_unreached: unexpected rejection: assert_equals: on redundant, installing should be null expected null but got object &quot;[object ServiceWorker]&quot; Reached unreachable code
-PASS Register same-scope new script url effect on controller 
+TIMEOUT Register same-scope new script url effect on controller Test timed out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384767</commentid>
    <comment_count>9</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-12-26 17:54:08 -0800</bug_when>
    <thetext>Created new bug for above flakiness:
https://bugs.webkit.org/show_bug.cgi?id=181166</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330036</attachid>
            <date>2017-12-21 10:35:11 -0800</date>
            <delta_ts>2017-12-21 10:44:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180702-20171221103510.patch</filename>
            <type>text/plain</type>
            <size>40442</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQxNjM0N2IyZjQ3MmNl
MmRmMmY1Yzc5NDllZjAzNThkZmEzYzgzOS4uMzVhOGM5OGRiZjgyOTk4MTFlMjUwMDViNTk5ZjMx
YjY5YjNmNGNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTEyLTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10g
SW1wbGVtZW50ICJTb2Z0IFVwZGF0ZSIgYWxnb3JpdGhtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2MTYzNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCAiU29mdCBVcGRhdGUiIGFsZ29yaXRobToKKyAgICAgICAgLSBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jc29mdC11cGRhdGUtYWxnb3JpdGhtCisKKyAg
ICAgICAgQ2FsbCBzb2Z0VXBkYXRlIGF0IHRoZSBlbmQgb2YgIkhhbmRsZSBGZXRjaCIsIGFzIHBl
cjoKKyAgICAgICAgLSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jb24tZmV0
Y2gtcmVxdWVzdC1hbGdvcml0aG0KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlYmFzZWxpbmVk
IGV4aXN0aW5nIHRlc3QuCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1Rv
KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNo
Rm9yU2VydmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZh
aWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0
RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNl
V29ya2VySm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYjo6cHJvbWlzZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29u
dGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oOgorCiAyMDE3LTEyLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBEbyBub3Qgc2VhcmNoIGZvciBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRp
b24gaW4gY2FzZSBvZiBub24gSFRUUCBuYXZpZ2F0aW9uIGxvYWRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEwNGNj
ZjRlMjQ3YThlY2JhNzI2ZjhjMmVmMDVkMzBiNDFiYjliOTcuLjJkNTdlNTM0OTMyMjg1ODAwNmU5
YTgyODlhYWNlZTVjNDc1NTc0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTIt
MjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbU2VydmljZSBX
b3JrZXJzXSBJbXBsZW1lbnQgIlNvZnQgVXBkYXRlIiBhbGdvcml0aG0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcwMgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzYxNjM0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3Rh
cnRTY3JpcHRGZXRjaEluQ2xpZW50KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTItMjAgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFRlbGwg
UGFzc0tpdCB3aGV0aGVyIEFwcGxlIFBheSBKUyBvciBQYXltZW50IFJlcXVlc3Qgd2FzIHVzZWQg
dG8gc3RhcnQgYW4gQXBwbGUgUGF5IHNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBhOGM5MGJlZTFlMzFiZjc4ZDg2OTc2MTZmZmQ3
YTY4NDZiM2QwYzc2Li5lM2NkZWE4NWQwOTFhY2UzMTg2MzNkNWJjMzk0ZjI0ZDg5YjM4OTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01
NzgsMTAgKzU3OCwxMSBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKICAgICByZXR1cm4gbmF2aWdhdG9yID8g
Jm5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyJiBjb250ZXh0SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4mJiB0YXNrKQorYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFz
a1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRlbnRpZmllciwg
V1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyAgICBib29sIHdhc1Bvc3RlZCA9IGZhbHNl
OwogICAgIHN3aXRjaE9uKGNvbnRleHRJZGVudGlmaWVyLCBbJl0gKERvY3VtZW50SWRlbnRpZmll
ciBpZGVudGlmaWVyKSB7CiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERv
Y3VtZW50c01hcCgpLmdldChpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKQEAg
LTU4OSwxMSArNTkwLDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tU
byhjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4CiAgICAgICAgIGRvY3Vt
ZW50LT5wb3N0VGFzayhbdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8mIHNjb3BlKSB7CiAgICAg
ICAgICAgICB0YXNrKHNjb3BlKTsKICAgICAgICAgfSk7CisgICAgICAgIHdhc1Bvc3RlZD0gdHJ1
ZTsKICAgICB9LCBbJl0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgewotICAg
ICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtl
cihpZGVudGlmaWVyLCBbdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8mIHNjb3BlKSB7CisgICAg
ICAgIHdhc1Bvc3RlZCA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9T
ZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oYXV0byYgc2Nv
cGUpIHsKICAgICAgICAgICAgIHRhc2soc2NvcGUpOwogICAgICAgICB9KTsKICAgICB9KTsKKyAg
ICByZXR1cm4gd2FzUG9zdGVkOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFmODRjYTAzYjcyMjA5YTViYWUzYjcwZDRkMjJk
NTdlODdiNDE3ZjUuLjQ4ZDYwNDIyMGQ3YTg5M2FlNWUzMmZhYzYwODZjYjNiNzhlODgzZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjQ4LDcg
KzI0OCw3IEBAIHB1YmxpYzoKIAogICAgIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIHNlcnZpY2VX
b3JrZXJDb250YWluZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHBvc3RU
YXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiwgV1RG
OjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7CiAjZW5kaWYKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmNwcAppbmRleCA2ZmUwNjExOTA3NTFjNGQ2MmM0MDQyZmIxN2E3ODZl
NDMwNTc4M2Y2Li4yMjk2MmNlODQ3NDI1ZDY3MzgzZTIwODhhZGU2OGQ5NjE5ZWFmOTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYzLDEyICs2NCwxMSBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmluaXNoZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0
cgogICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZp
ZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgc2NyaXB0LCB7IH0gfSk7CiB9CiAK
LXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29y
a2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBTV0NsaWVudENv
bm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKIAotICAgIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3Ry
YXRpb25LZXkoKSwgeyB9LCBlcnJvciB9KTsKKyAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2Vy
dmVyKHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgeyB9LCBlcnJvciB9KTsK
IH0KIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3Qg
RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKQEAgLTkwLDE1ICs5MCwyMyBAQCB2b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyAgICBh
dXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCBzaG91bGROb3RpZnlXaGVuUmVz
b2x2ZWQsIHJlZ2lzdHJhdGlvbktleSA9IHJlZ2lzdHJhdGlvbkRhdGEua2V5XSB7CisgICAgICAg
IGlmIChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgPT0gU2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
OjpZZXMpCisgICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShyZWdpc3Ry
YXRpb25LZXkpOworICAgIH0pOworCiAgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFr
ZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikgewogICAg
ICAgICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZv
dW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9z
dFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHJlZ2lzdHJhdGlvbkRhdGEg
PSByZWdpc3RyYXRpb25EYXRhLmlzb2xhdGVkQ29weSgpLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBib29sIHdhc1Bvc3Rl
ZCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRp
ZmllcigpLCBbam9iLCByZWdpc3RyYXRpb25EYXRhID0gcmVnaXN0cmF0aW9uRGF0YS5pc29sYXRl
ZENvcHkoKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CiAgICAgICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFdURk1v
dmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CiAgICAgfSk7
CisKKyAgICBpZiAod2FzUG9zdGVkKQorICAgICAgICBndWFyZC5yZWxlYXNlKCk7CiB9CiAKIHZv
aWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwg
Ym9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKQEAgLTExNiwxMCArMTI0LDE0IEBAIHZvaWQgU1dD
bGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3Qg
U2VydmljZVdvcmtlckpvCiAgICAgfSk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpz
dGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYgam9iRGF0YUlkZW50aWZpZXIsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kp
Cit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIEZldGNoT3B0
aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAorICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JEYXRhSWRl
bnRpZmllciwgJnJlZ2lzdHJhdGlvbktleV0geworICAgICAgICBmYWlsZWRGZXRjaGluZ1Njcmlw
dChqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBSZXNvdXJjZUVycm9yIHsgZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgVVJMKCksIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGZldGNoIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCIpIH0pOworICAgIH0pOworCiAgICAgYXV0byBq
b2IgPSBtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIp
OwogICAgIGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJPUigiSm9iICVzIGluc3RydWN0ZWQg
dG8gc3RhcnQgZmV0Y2ggZnJvbSBzZXJ2ZXIsIGJ1dCBqb2Igd2FzIG5vdCBmb3VuZCIsIGpvYkRh
dGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTEzMSw5ICsx
NDMsMTEgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRl
bnRpZmllcigpLCBbam9iLCBjYWNoZVBvbGljeV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBib29sIHdhc1Bvc3RlZCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8o
am9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBbam9iLCBjYWNoZVBvbGljeV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKICAgICAgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKGNhY2hlUG9saWN5
KTsKICAgICB9KTsKKyAgICBpZiAod2FzUG9zdGVkKQorICAgICAgICBndWFyZC5yZWxlYXNlKCk7
CiB9CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYm
IHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDc4NzVm
NjQ5N2ViY2NmYjc4YTI5YmFiODE5YzE3NTQ4MWE1OGMxYzQuLjRhZTc4YTM4ODdkZmFjODEzMDVh
MzEyOWFmNTM4YTA4MTY5MzRmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAgICAgdm9pZCBmaW5p
c2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIGZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgdm9pZCBmYWlsZWRGZXRjaGluZ1NjcmlwdChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
KSA9IDA7CiAKQEAgLTg5LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgam9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlm
eVdoZW5SZXNvbHZlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpv
YlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
Ym9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgRmV0Y2hPcHRpb25zOjpDYWNo
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdv
cmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCmluZGV4IDdiOWM1NGE4Nzc0MTQ0ZTQxYzA2NWNjMGYyNjZhMDYzZTk5
MzhmYjYuLjgxODA2ZmIzMzk3MjU0YmZhMzMyMTE5MmU0MWEyYjIwYmYxMTI2M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKQEAgLTE4OSwxOCArMTg5LDIwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJl
CiAgICAgc2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5zZXNzaW9u
SUQoKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAg
aWYgKHByb21pc2UpCisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFs
aWRTdGF0ZUVycm9yKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fc3dD
b25uZWN0aW9uKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7CisgICAgICAgIGlmIChw
cm9taXNlKQorICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3Rh
dGVFcnJvcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTMsMTIgKzM1NSwyMCBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oU2Vy
dmljZVdvcmtlckpvYiYgam9iLCBjb25zdAogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAorICAgIEFTU0VSVF9XSVRIX01F
U1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpv
YlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOworCisg
ICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0geworICAgICAg
ICBqb2JEaWRGaW5pc2goam9iKTsKKyAgICB9KTsKKworICAgIGlmICgham9iLnByb21pc2UoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpIHsKICAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW2pvYiA9IG1ha2VSZWYo
am9iKSwgZXhjZXB0aW9uXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICAgICAg
am9iLT5wcm9taXNlKCkucmVqZWN0KGV4Y2VwdGlvbik7CisgICAgICAgICAgICBqb2ItPnByb21p
c2UoKS0+cmVqZWN0KGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICBqb2JEaWRG
aW5pc2goam9iKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRh
c2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpCkBAIC0zNzYsNiArMzg2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9i
LAogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShqb2Iu
cHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBk
YXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9taXNlIik7CiAKICAgICBhdXRvIGd1
YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CiAgICAgICAgIGpvYkRpZEZp
bmlzaChqb2IpOwpAQCAtMzk1LDYgKzQwNiwxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIWpvYi5wcm9taXNlKCkpIHsKKyAgICAg
ICAgbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgam9iID0gbWFrZVJlZihqb2IpLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQgPSBXVEZNb3ZlKG5vdGlmeVdoZW5S
ZXNvbHZlZElmTmVlZGVkKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkgewogICAgICAgICAgICAgbm90aWZ5V2hlblJl
c29sdmVkSWZOZWVkZWQoKTsKQEAgLTQwNSw3ICs0MjEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBq
b2IsCiAKICAgICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJDb250YWluZXIgJXAgcmVzb2x2ZWQg
am9iIHdpdGggcmVnaXN0cmF0aW9uICVwIiwgdGhpcywgcmVnaXN0cmF0aW9uLnB0cigpKTsKIAot
ICAgICAgICBqb2ItPnByb21pc2UoKS5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uPj4oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICAgICAgam9iLT5wcm9t
aXNlKCktPnJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihX
VEZNb3ZlKHJlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVl
ZGVkKCk7CiAgICAgfSk7CkBAIC00MTcsNiArNDMzLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2Vy
Sm8KICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogI2VuZGlmCiAKKyAgICBBU1NFUlQoam9iLnByb21pc2UoKSk7CisKICAgICBhdXRvIGd1
YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CiAgICAgICAgIGpvYkRpZEZp
bmlzaChqb2IpOwogICAgIH0pOwpAQCAtNDI4LDcgKzQ0Niw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdv
cmtlckpvCiAgICAgfQogCiAgICAgY29udGV4dC0+cG9zdFRhc2soW2pvYiA9IG1ha2VSZWYoam9i
KSwgdW5yZWdpc3RyYXRpb25SZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKLSAgICAgICAgam9iLT5wcm9taXNlKCkucmVzb2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7CisgICAgICAgIGpvYi0+cHJvbWlzZSgpLT5yZXNvbHZlPElETEJvb2xlYW4+
KHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICB9KTsKIH0KIApAQCAtNDQ0LDcgKzQ2Miw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2
aWNlV29ya2VySm9iJiBqb2IsIEZldGNoCiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIExP
R19FUlJPUigiU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0
aW9uIGNhbGxlZCBidXQgdGhlIGNvbnRhaW5lcidzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMg
Z29uZSIpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb25uZWN0aW9uID0gbV9zd0Nvbm5l
Y3Rpb24sIGpvYiA9IG1ha2VSZWYoam9iKV0gewotICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmFp
bGVkRmV0Y2hpbmdTY3JpcHQoam9iLCB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGpv
Yi0+ZGF0YSgpLnNjcmlwdFVSTCwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGZldGNoIHNlcnZp
Y2Ugd29ya2VyIHNjcmlwdCB3aXRoIG5vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB9KTsKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYi0+ZGF0YSgpLmlk
ZW50aWZpZXIoKSwgam9iLT5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIHsgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgam9iLT5kYXRhKCkuc2NyaXB0VVJMLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHQgdG8gZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IHdpdGggbm8gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCIpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgam9iRGlkRmluaXNoKGpvYik7
CiAgICAgICAgIHJldHVybjsKQEAgLTQ3MSwxNCArNDg5LDE1IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2Is
IGNvbnN0CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBl
OjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKIAogICAgIExP
RyhTZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIGZhaWxlZCBmZXRjaGlu
ZyBzY3JpcHQgZm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgam9iLnBy
b21pc2UoKS5yZWplY3QoKmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbiAmJiBqb2IucHJv
bWlzZSgpKQorICAgICAgICBqb2IucHJvbWlzZSgpLT5yZWplY3QoKmV4Y2VwdGlvbik7CiAKICAg
ICBjYWxsT25NYWluVGhyZWFkKFtjb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb24sIGpvYiA9IG1h
a2VSZWYoam9iKSwgZXJyb3IgPSBlcnJvci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBjb25u
ZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1NjcmlwdChqb2IsIGVycm9yKTsKKyAgICAgICAgY29ubmVj
dGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLT5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2It
PmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgZXJyb3IpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaAppbmRleCBkYzY4NDM5Njk5Yzk3OTUwZjc3MWJjMDRkZjQ2NmY3YjQ2ZTgyZDkzLi4xOWQy
NWY1YTc0MTc4ZDJhODM5YjQ1NDIyOTg1MTUwZWEwZTM3ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAg
LTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9uczsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlv
bihjb25zdCBTdHJpbmcmIHNjcmlwdFVSTCwgY29uc3QgUmVnaXN0cmF0aW9uT3B0aW9ucyYsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgcmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0
IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwotICAgIHZvaWQgdXBkYXRl
UmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBX
b3JrZXJUeXBlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2Vy
VHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICB2b2lkIGdldFJlZ2lzdHJh
dGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggYzEw
ODJjODA5MWQ1ZTdiZjcxNDEyZTM2OWQ3MTM2MjEyYzExZDdlNi4uMjAyNDQ3OTZlNWQ0MGE5OWRh
MGU5NzdiMjhiZGIwYjY5ODA4YjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJKb2I6OlNlcnZpY2VXb3JrZXJKb2IoU2Vy
dmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKK1NlcnZpY2VXb3JrZXJKb2I6OlNl
cnZpY2VXb3JrZXJKb2IoU2VydmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50LCBSZWZQdHI8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkK
ICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fam9iRGF0YShXVEZNb3ZlKGpvYkRhdGEp
KQogICAgICwgbV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAppbmRleCBlYTdhN2EzMjBmYzE0
MGI1NTc3NjE5ZmUyY2NlOWU1YzQxMjQwOTdiLi42MjU2OGRhYjUzMDI2MGU4YjlhNDdmNzk5YmVi
OTYyNGNmMDc5MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VySm9iIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJKb2I+LCBwdWJsaWMgV29ya2VyU2NyaXB0TG9h
ZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJKb2I+IGNy
ZWF0ZShTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiBjbGllbnQsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSwgU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQorICAgIHN0YXRpYyBS
ZWY8U2VydmljZVdvcmtlckpvYj4gY3JlYXRlKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVu
dCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYmIGpvYkRhdGEpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNl
V29ya2VySm9iKGNsaWVudCwgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwog
ICAgIH0KQEAgLTYzLDE1ICs2MywxNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSWRlbnRpZmllciA9
IFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyOwogICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllcjsgfQog
Ci0gICAgU2VydmljZVdvcmtlckpvYkRhdGEgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0
YTsgfQotICAgIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZS5n
ZXQoKTsgfQorICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9qb2JEYXRhOyB9CisgICAgRGVmZXJyZWRQcm9taXNlKiBwcm9taXNlKCkgeyByZXR1
cm4gbV9wcm9taXNlLmdldCgpOyB9CiAKICAgICB2b2lkIGZldGNoU2NyaXB0V2l0aENvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOwogCiAgICAgY29u
c3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleHRJZGVudGlmaWVyKCkgeyByZXR1
cm4gbV9jb250ZXh0SWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJK
b2IoU2VydmljZVdvcmtlckpvYkNsaWVudCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiYpOworICAgIFNlcnZpY2VXb3JrZXJKb2IoU2VydmljZVdvcmtlckpv
YkNsaWVudCYsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYsIFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiYpOwogCiAgICAgLy8gV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U2Vydmlj
ZVdvcmtlckpvYkNsaWVudD4gbV9jbGllbnQ7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgbV9q
b2JEYXRhOwotICAgIFJlZjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBSZWZQdHI8
RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2U7CiAKICAgICBib29sIG1fY29tcGxldGVkIHsgZmFs
c2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDg2NjZlODZjNDgwMDdkZDllMGUz
NGJhODcyNjMzYzIxYzJmNDRkMzYuLjA5M2VhNzVlOWJkNjE1OGRjOGNlMjQ0Mjc5MjI3MjU0NDM5
MTA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTE0NCw2ICsxNDQsMTkgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1cGRhdGUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogICAgIG1fY29udGFpbmVyLT51cGRhdGVSZWdpc3RyYXRpb24obV9yZWdpc3Ry
YXRpb25EYXRhLnNjb3BlVVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBXb3JrZXJUeXBl
OjpDbGFzc2ljLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2VzdFdvcmtlcigpOwor
ICAgIGlmICghbmV3ZXN0V29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTog
U3VwcG9ydCB3b3JrZXIgdHlwZXMuCisgICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlv
bihtX3JlZ2lzdHJhdGlvbkRhdGEuc2NvcGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCks
IFdvcmtlclR5cGU6OkNsYXNzaWMsIG51bGxwdHIpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
ewogICAgIGlmIChtX2lzU3RvcHBlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggNWYyODQx
ZjJhMTk4YTdiZWUwY2EwMTY0M2QyNzE4OGFkNzdlNzJkZi4uZGM0NWI3MGFkMjBjNTMxOTdlYmVk
ODhkYzE0MmFjNmEwOWM1ZTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC02NCw2ICs2NCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAg
ICB2b2lkIHVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKKyAgICB2b2lkIHNv
ZnRVcGRhdGUoKTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkOjpkZXJlZjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNWI3MDU5NTRi
MjNjZjdlODExOGYwNzYyNTBjOGIyOGE3MWYzNWZiZi4uNDEwMzJkYmM4ZDMzY2RlYWFlY2JkNzE5
MjE2OWM2MzVjN2VhMzQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTk3LDI1ICs5Nywy
MiBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWlu
YXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0g
bV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGF1dG8gc2VydmljZVdvcmtlciA9IG1f
d29ya2VyTWFwLnRha2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBzZXJ2aWNlV29ya2VyLT5zZXRUZXJtaW5hdGluZ09yVGVybWlu
YXRlZCh0cnVlKTsKIAotICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnN0b3AoW3RoaXMsIGlk
ZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IHsKKyAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29ya2VyKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1
dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT53b3JrZXJUZXJtaW5hdGVkKGlkZW50aWZpZXIp
OwogCiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgIAotICAgICAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFw
LnRha2UoaWRlbnRpZmllcik7Ci0gICAgICAgIEFTU0VSVCh3b3JrZXIpOwotICAgICAgICAKICAg
ICAgICAgLy8gU3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRoZSB3b3JrZXIgdGhy
ZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKICAgICAgICAgLy8gYSByYWNl
IHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3Jr
ZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nl
cnZpY2VXb3JrZXIgPSBXVEZNb3ZlKHNlcnZpY2VXb3JrZXIpXSB7IH0pOwogICAgIH0pOwogfQog
CkBAIC0xMjUsMTMgKzEyMiwxNiBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZvckVhY2hTZXJ2
aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aQogICAgICAgICBh
cHBseSgqd29ya2VyVGhyZWFkKTsKIH0KIAotdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFz
a1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYgdGFzaykKK2Jvb2wg
U1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSYpPiYmIHRhc2spCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dv
cmtlck1hcC5nZXQoaWRlbnRpZmllcikpIHsKLSAgICAgICAgc2VydmljZVdvcmtlci0+dGhyZWFk
KCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgIHRhc2soZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBhdXRvKiBzZXJ2aWNlV29ya2Vy
ID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVu
TG9vcCgpLnBvc3RUYXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mIGNvbnRleHQpIHsK
KyAgICAgICAgdGFzayhkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGIyNTI5MDk2M2U1MmJkZjNjYjA4NDRhNjdjYWJkZmJj
M2FjNjJhMTcuLmY0MDNkNGQ4NTJmOGU2NjJjZjU1YmFmNjQzNjBjZTYxMWY0MGQ4MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JF
YWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdv
cmtlclRocmVhZFByb3h5Jik+Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RUYXNr
VG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdURjo6
RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmKT4mJik7CiAKIHByaXZhdGU6
CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCmluZGV4IGVjMzk3YjU4ZWFlZTRmNGU3MmFiM2JlZmY2N2JiNTUxMjNhMGVjODQuLjFlMzM1
ZTRiNWI5NWRjMTc3YTRkZGExYzliZWZmZGQ1YzA5MWM1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcApAQCAtOTEsMTYgKzkxLDE4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShS
ZWY8Q2xpZW50PiYmIGNsaWVudCwgRmV0Y2hSZXNwb25zZSogcmVzcG9uc2UpCiAgICAgfSk7CiB9
CiAKLVJlZjxGZXRjaEV2ZW50PiBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGll
bnQsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQorUmVmPEZldGNo
RXZlbnQ+IGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0
cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQogewotICAgIEFTU0VSVChn
bG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKLQogICAgIGF1dG8gcmVx
dWVzdEhlYWRlcnMgPSBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJ
bW11dGFibGUsIEhUVFBIZWFkZXJNYXAgeyByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSB9KTsK
KworICAgIGJvb2wgaXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6
TW9kZTo6TmF2aWdhdGU7CisgICAgYm9vbCBpc05vblN1YnJlc291cmNlUmVxdWVzdCA9IFdlYkNv
cmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pOworCiAgICAg
YXV0byBmZXRjaFJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShnbG9iYWxTY29wZSwgRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEocmVxdWVzdC5odHRwQm9keSgpKSwgV1RGTW92ZShyZXF1ZXN0
SGVhZGVycyksICBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJl
ZmVycmVyKSk7CiAKICAgICBGZXRjaEV2ZW50OjpJbml0IGluaXQ7CiAgICAgaW5pdC5yZXF1ZXN0
ID0gV1RGTW92ZShmZXRjaFJlcXVlc3QpOwotICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0Y2hP
cHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkgeworICAgIGlmIChpc05hdmlnYXRpb24pIHsKICAgICAg
ICAgLy8gRklYTUU6IFNldCByZXNlcnZlZENsaWVudElkLgogICAgICAgICBpZiAoY2xpZW50SWQp
CiAgICAgICAgICAgICBpbml0LnRhcmdldENsaWVudElkID0gY2xpZW50SWQtPnRvU3RyaW5nKCk7
CkBAIC0xMjEsOCArMTIzLDEyIEBAIFJlZjxGZXRjaEV2ZW50PiBkaXNwYXRjaEZldGNoRXZlbnQo
UmVmPENsaWVudD4mJiBjbGllbnQsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iCiAgICAgICAgICAg
ICByZXR1cm4gZXZlbnQ7CiAgICAgICAgIH0KICAgICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUo
KTsKLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBzb2Z0IHVwZGF0ZS4KICAgICB9CisKKyAgICBh
dXRvJiByZWdpc3RyYXRpb24gPSBnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKTsKKyAgICBpZiAo
aXNOb25TdWJyZXNvdXJjZVJlcXVlc3QgfHwgKHJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSgp
ICYmIChXYWxsVGltZTo6bm93KCkgLSByZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUoKSkgPiA4
NjQwMF9zKSkKKyAgICAgICAgcmVnaXN0cmF0aW9uLnNvZnRVcGRhdGUoKTsKKwogICAgIHJldHVy
biBldmVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCA3Yzk0YmU3ZDFmYTg4ZmQ4
ZjhmYmEwYmExZTdmZmI2YzE3OTNiZTc5Li40NDMzMDg2MGYxOTIxMzc4ZDFiMzk4Zjc3MzE1YTQ5
YjYwNWUwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogc3RydWN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7CitjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiAKIG5hbWVz
cGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPENsaWVudD4gewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZE5vdEhhbmRsZSgpID0gMDsKIH07CiAKLVJlZjxGZXRjaEV2ZW50PiBkaXNw
YXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwgV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJik7CitSZWY8RmV0Y2hFdmVudD4gZGlz
cGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYs
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBSZXNvdXJjZVJl
cXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggM2UyY2M1YmRhNzdjOWNiOTcyNjI4ZDg2MWE1YTFi
NWViYjUwOThmMy4uNjhhZGRlZWNlZjQ3YmY3ZWE3YzZiN2ExYzQzN2Q0YWI3OWZhYjJiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBGZXRjaE9wdGlvbgogICAgIGlmICgh
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29ubmVjdGlvbi0+c3RhcnRTY3Jp
cHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpLCBjYWNoZVBvbGljeSk7CisgICAg
Y29ubmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigp
LCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBjYWNoZVBvbGljeSk7CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
U2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggZjc2Y2I5NDM1MGM1YTBlMDNj
NTJlYTVhNGU3ZjZhYTk1Y2NiYTk2Yy4uNjZkNmU1ZWUxYjA4ZWNmMmU3Mzk1YzE5N2JkMjlmNzcz
ZmMzZjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlamVjdEpvYkluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNv
bHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVVbnJlZ2lz
dHJhdGlvbkpvYkluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHJlZ2lzdHJhdGlvblJl
c3VsdCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIEZldGNoT3B0aW9uczo6Q2Fj
aGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiwgRmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOwogCiAgICAgICAgIHN0
cnVjdCBSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3QgewogICAgICAgICAgICAgU2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggZjNhMjIyNDhmN2IzMWZhNzUxMGVlM2Y3YzM5NTE0MDhlYzYwOWEwMi4uZDRkOTEzNzM5
MDg3YmNiMTRkODIyMzE1YTg4Y2Q4NDhjNGY2Y2YzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKQEAgLTkxLDkgKzkxLDkgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3Jr
ZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVucmVnaXN0cmF0
aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwgdW5yZWdpc3RyYXRpb25S
ZXN1bHQpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0
Y2hJbkNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIEZldGNoT3B0aW9uczo6Q2FjaGUg
Y2FjaGVQb2xpY3kpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9u
OjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCBjYWNoZVBvbGlj
eSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6U3RhcnRTY3Jp
cHRGZXRjaEZvclNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBjYWNo
ZVBvbGljeSkpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCAyMDkyYTc3MGUzMmM0MDc2NDJhMTBh
OTQxNTNmMjliODhkMDA1ZTY2Li4zYjkzZTM4MDY4NTg5MWJiNDk4NjQ2ODYxZjI4MGQzNDc3NDVk
NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC03NCw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBXZWJDb3JlOjpTaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpIGZpbmFsOwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5D
bGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3Ry
YXRpb25SZXN1bHQpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOworICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xp
ZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnM6OkNhY2hlKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlSW5D
bGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YT4mKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVdvcmtl
clN0YXRlSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOGE2MDA2YmY4ZGMxMGEzYTAz
ZTE3ZWE4OTA2NjEyOTJjYzIxYTA1OC4uZGJhNjQ3ZWI3ZGY3MjY1MTYwNGJhNWVlZTI2MGU2Zjk4
ZDMyNTRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjcsNyAr
MjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NsaWVudENvbm5lY3Rpb24gewogICAgIEpvYlJlamVj
dGVkSW5TZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0
aW9uKQogICAgIFJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoc3RydWN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwgZW51
bSBXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkKQogICAgIFVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBib29s
IHVucmVnaXN0cmF0aW9uUmVzdWx0KQotICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRp
ZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKKyAgICBTdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkNhY2hl
IGNhY2hlUG9saWN5KQogICAgIFVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGVudW0gV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJEYXRhPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICBVcGRh
dGVXb3JrZXJTdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgZW51bSBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpCiAg
ICAgRmlyZVVwZGF0ZUZvdW5kRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMTViNmUzNzExZjAxMmY5MWJjNmE1NjY1
NzAwM2U5ZGQ5ZTg1Y2ZjLi40YTM2OTUxNDg1OWUzMmQ2YTI4ZGE2OThmMDM0MDdkOWM3YmUzYjI1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTItMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbU2VydmljZSBXb3JrZXJzXSBJbXBsZW1lbnQgIlNvZnQg
VXBkYXRlIiBhbGdvcml0aG0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDcwMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYxNjM0NjE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHNvZnQg
dXBkYXRlIFdQVCB0ZXN0IHRoYXQgbm8gbG9uZ2VyIHRpbWVzIG91dC4KKworICAgICAgICAqIFRl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMTItMjAgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJlbW92ZSBzb21lIG9ic29sZXRlIHRlc3QgZXhwZWN0YXRpb25zIGZvciBH
VEsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyOGUyNDY0YTczZjBkNTZiZDZm
YzA1YWMyM2M2OGE1NzdjMjNmOWQ2Li5jN2ZhMzk3ZDc4YWVhNjE5OWQ4OWYyNzRlZmIxNWIyYzc5
NjY1Yzg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNy0xMi0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtT
ZXJ2aWNlIFdvcmtlcnNdIEltcGxlbWVudCAiU29mdCBVcGRhdGUiIGFsZ29yaXRobQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNzAyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNjE2MzQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIFNvZnQgVXBkYXRlIFdQVCB0ZXN0IG5vdyB0
aGF0IGl0IGlzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VwZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2
ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0xMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtGZXRjaF0gRXh0cmFjdGluZyBhIGJvZHkgb2YgdHlw
ZSBCbG9iIHNob3VsZCBub3Qgc2V0IENvbnRlbnQtVHlwZSB0byB0aGUgZW1wdHkgc3RyaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAwNmMzOWY4NjBkZTNkYWQ3NGE3ODMwNjMzNjRmMTY4M2UyY2Mx
ZjQxLi4xZjI4ZjQ0M2Q3NjQ2NjZlYzc0NThlODYyNzM5MDJjMGMxOWE3YWViIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTE1Nyw3ICsxNTcsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9wb3N0bWVzc2FnZS5odHRwcwogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcG9zdG1lc3NhZ2UtbXNncG9ydC10by1jbGllbnQuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzcG9uZC13aXRoLWJvZHktYWNjZXNzZWQtcmVzcG9uc2UuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvc2FuZGJveGVkLWlmcmFtZS1mZXRjaC1ldmVudC5odHRwcy5odG1sIFsgU2tpcCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci91cGRhdGUtYWZ0ZXItbmF2aWdhdGlvbi1mZXRjaC1ldmVudC5odHRwcy5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItb25lZGF5Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3VwZGF0ZS1ieXRlY2hlY2suaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdXBkYXRlLXJl
Y292ZXJ5Lmh0dHBzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3VwZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3VwZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dAppbmRleCAyZTI5MmRmMjk0ZGY3ZDhhZTc4NWU1MDNkYzBhZGVkMzc3
YzdlNjA3Li5jMzQzOGEwOGE4YzA4YTJmYTU3YTNmMzhkMDc1YWYxMmZkYjI2MDZlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItbmF2aWdhdGlvbi1mZXRjaC1ldmVu
dC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdXBkYXRlLWFmdGVy
LW5hdmlnYXRpb24tZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBA
QAogCi0KLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VU
IFVwZGF0ZSBzaG91bGQgYmUgdHJpZ2dlcmVkIGFmdGVyIGEgbmF2aWdhdGlvbiBmZXRjaCBldmVu
dC4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgVXBkYXRlIHNob3VsZCBiZSB0cmlnZ2VyZWQgYWZ0ZXIg
YSBuYXZpZ2F0aW9uIGZldGNoIGV2ZW50LiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330040</attachid>
            <date>2017-12-21 10:44:57 -0800</date>
            <delta_ts>2017-12-22 12:44:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180702-20171221104456.patch</filename>
            <type>text/plain</type>
            <size>39761</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUyMzc3NzM5ZmU2ZDE0
NGU3ZTY5NDE2Y2Q5NTg5MGJmMjY5NGMzZS4uMmI4MDA5MmNjOGEyZGY3YzIzZjg3ODQ0YTExYWZl
ZWUzNjk3OWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTEyLTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10g
SW1wbGVtZW50ICJTb2Z0IFVwZGF0ZSIgYWxnb3JpdGhtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2MTYzNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCAiU29mdCBVcGRhdGUiIGFsZ29yaXRobToKKyAgICAgICAgLSBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jc29mdC11cGRhdGUtYWxnb3JpdGhtCisKKyAg
ICAgICAgQ2FsbCBzb2Z0VXBkYXRlIGF0IHRoZSBlbmQgb2YgIkhhbmRsZSBGZXRjaCIsIGFzIHBl
cjoKKyAgICAgICAgLSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jb24tZmV0
Y2gtcmVxdWVzdC1hbGdvcml0aG0KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlYmFzZWxpbmVk
IGV4aXN0aW5nIHRlc3QuCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1Rv
KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNo
Rm9yU2VydmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZh
aWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0
RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNl
V29ya2VySm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYjo6cHJvbWlzZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29u
dGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oOgorCiAyMDE3LTEyLTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBpbml0aWFsIERPTSBzdXBwb3J0IGZvciBNZWRpYSBDYXBhYmlsaXRp
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMTQ3MWY3MjdhMDEwN2E5OWEyMjViZWNiZDg0ZjIzNzQwOTBjMGVmMi4u
MjU4ZDlhNTk5ZTA4MTM4ZTg0YTcxZGVlZTc2ZGQ0ZDg1N2IxMWU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0xMi0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFtTZXJ2aWNlIFdvcmtlcnNdIEltcGxlbWVudCAiU29mdCBVcGRhdGUiIGFsZ29y
aXRobQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
NzAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjE2MzQ2MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoSW5DbGllbnQpOgorICAgICAgICAqIFN0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bjoKKwogMjAxNy0xMi0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgaW5pdGlhbCBET00gc3VwcG9ydCBmb3IgTWVkaWEgQ2FwYWJpbGl0aWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNzI2ZjUw
MjU3M2U3YjNmNjU5ODI5YzExNDc3YWU1NzNmMzQ1MTQxMy4uYmQ2MjhkYzIwYjJkZWNhNzNhMGY3
ZGE3NmU0ZjUxZjc5NTQwODEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcApAQCAtNTY1LDEwICs1NjUsMTEgQEAgU2VydmljZVdvcmtlckNvbnRh
aW5lciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2VydmljZVdvcmtlckNvbnRhaW5lcigpCiAg
ICAgcmV0dXJuIG5hdmlnYXRvciA/ICZuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxw
dHI7CiB9CiAKLXZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb25zdCBE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rp
b248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKK2Jvb2wgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmll
ciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik+JiYgdGFzaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCisgICAg
Ym9vbCB3YXNQb3N0ZWQgPSBmYWxzZTsKICAgICBzd2l0Y2hPbihjb250ZXh0SWRlbnRpZmllciwg
WyZdIChEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikgewogICAgICAgICBhdXRvKiBkb2N1
bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQpCkBAIC01NzYsMTEgKzU3NywxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIm
IGNvbnRleAogICAgICAgICBkb2N1bWVudC0+cG9zdFRhc2soW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShhdXRvJiBzY29wZSkgewogICAgICAgICAgICAgdGFzayhzY29wZSk7CiAgICAgICAgIH0pOwor
ICAgICAgICB3YXNQb3N0ZWQ9IHRydWU7CiAgICAgfSwgWyZdKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpIHsKLSAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoaWRlbnRpZmllciwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShhdXRvJiBzY29wZSkgeworICAgICAgICB3YXNQb3N0ZWQgPSBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihpZGVudGlmaWVyLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldKGF1dG8mIHNjb3BlKSB7CiAgICAgICAgICAgICB0YXNrKHNjb3BlKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CisgICAgcmV0dXJuIHdhc1Bvc3RlZDsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZjg0Y2Ew
M2I3MjIwOWE1YmFlM2I3MGQ0ZDIyZDU3ZTg3YjQxN2Y1Li40OGQ2MDQyMjBkN2E4OTNhZTVlMzJm
YWM2MDg2Y2IzYjc4ZTg4M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwdWJsaWM6CiAKICAgICBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyKiBzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgcG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9y
V29ya2VySWRlbnRpZmllciYsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik+JiYpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNmZlMDYxMTkw
NzUxYzRkNjJjNDA0MmZiMTdhNzg2ZTQzMDU3ODNmNi4uMjI5NjJjZTg0NzQyNWQ2NzM4M2UyMDg4
YWRlNjhkOTYxOWVhZjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MywxMiArNjQsMTEgQEAg
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdCBTdHIKICAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVy
KHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCks
IHNjcmlwdCwgeyB9IH0pOwogfQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmFpbGVkRmV0
Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdChjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
QVNTRVJUKG1fc2NoZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7CiAK
LSAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVy
KCksIGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIHsgfSwgZXJyb3IgfSk7CisgICAgZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRp
b25LZXksIHsgfSwgZXJyb3IgfSk7CiB9CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpqb2JS
ZWplY3RlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9i
RGF0YUlkZW50aWZpZXIsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCkBAIC05
MCwxNSArOTAsMjMgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpvYlJl
c29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkQKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCisgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhp
cywgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkLCByZWdpc3RyYXRpb25LZXkgPSByZWdpc3RyYXRp
b25EYXRhLmtleV0geworICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNo
b3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6WWVzKQorICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UocmVnaXN0cmF0aW9uS2V5KTsKKyAgICB9KTsKKwogICAgIGF1dG8gam9i
ID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7
CiAgICAgaWYgKCFqb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgcmVzb2x2ZWQgaW4g
c2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBb
am9iLCByZWdpc3RyYXRpb25EYXRhID0gcmVnaXN0cmF0aW9uRGF0YS5pc29sYXRlZENvcHkoKSwg
c2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CisgICAgYm9vbCB3YXNQb3N0ZWQgPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFz
a1RvKGpvYi0+Y29udGV4dElkZW50aWZpZXIoKSwgW2pvYiwgcmVnaXN0cmF0aW9uRGF0YSA9IHJl
Z2lzdHJhdGlvbkRhdGEuaXNvbGF0ZWRDb3B5KCksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZF0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBqb2ItPnJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpOwogICAgIH0pOworCisgICAgaWYgKHdhc1Bvc3RlZCkKKyAgICAgICAgZ3Vh
cmQucmVsZWFzZSgpOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RyYXRp
b25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYgam9iRGF0YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCkBAIC0xMTYs
MTAgKzEyNCwxNCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RyYXRpb25Kb2JS
ZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKbwogICAgIH0pOwogfQogCi12b2lk
IFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBGZXRjaE9wdGlv
bnM6OkNhY2hlIGNhY2hlUG9saWN5KQordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBq
b2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVF
eGl0KFt0aGlzLCAmam9iRGF0YUlkZW50aWZpZXIsICZyZWdpc3RyYXRpb25LZXldIHsKKyAgICAg
ICAgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktl
eSwgUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIFVSTCgpLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmZXRjaCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQiKSB9KTsK
KyAgICB9KTsKKwogICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdldChqb2JEYXRhSWRl
bnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikgewogICAgICAgICBMT0dfRVJS
T1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2VydmVyLCBidXQgam9i
IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CkBAIC0xMzEsOSArMTQzLDExIEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpz
dGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0
VGFza1RvKGpvYi0+Y29udGV4dElkZW50aWZpZXIoKSwgW2pvYiwgY2FjaGVQb2xpY3ldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgYm9vbCB3YXNQb3N0ZWQgPSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGpvYi0+Y29udGV4dElkZW50aWZpZXIoKSwgW2pvYiwgY2Fj
aGVQb2xpY3ldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGpvYi0+c3RhcnRT
Y3JpcHRGZXRjaChjYWNoZVBvbGljeSk7CiAgICAgfSk7CisgICAgaWYgKHdhc1Bvc3RlZCkKKyAg
ICAgICAgZ3VhcmQucmVsZWFzZSgpOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENv
bm5lY3Rpb24uaAppbmRleCA3ODc1ZjY0OTdlYmNjZmI3OGEyOWJhYjgxOWMxNzU0ODFhNThjMWM0
Li40YWU3OGEzODg3ZGZhYzgxMzA1YTMxMjlhZjUzOGEwODE2OTM0ZmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVKb2IoU2VydmljZVdvcmtl
ckpvYiYpOwogICAgIHZvaWQgZmluaXNoZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNl
V29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZmFpbGVkRmV0Y2hp
bmdTY3JpcHQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JikgPSAwOwogCkBAIC04OSw3ICs4OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9u
Q29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwg
U2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3Rh
dGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2VydmljZVdvcmtlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA3YjljNTRhODc3NDE0
NGU0MWMwNjVjYzBmMjY2YTA2M2U5OTM4ZmI2Li44MTgwNmZiMzM5NzI1NGJmYTMzMjExOTJlNDFh
MmIyMGJmMTEyNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xODksMTggKzE4OSwyMCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwm
IHNjb3BlVVJMLCBSZWY8RGVmZXJyZQogICAgIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2I6
OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQog
Ci12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRh
dGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkws
IFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBh
dXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4
dCB8fCAhY29udGV4dC0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRT
dGF0ZUVycm9yKSk7CisgICAgICAgIGlmIChwcm9taXNlKQorICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKCFtX3N3Q29ubmVjdGlvbikgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVF
cnJvcikpOworICAgICAgICBpZiAocHJvbWlzZSkKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzUzLDEyICszNTUsMjAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JG
YWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKICAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
CiAKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBo
YXZlIG5vIHByb21pc2UiKTsKKworICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQo
W3RoaXMsICZqb2JdIHsKKyAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CisgICAgfSk7CisKKyAg
ICBpZiAoIWpvYi5wcm9taXNlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIGNvbnRleHQtPnBv
c3RUYXNrKFtqb2IgPSBtYWtlUmVmKGpvYiksIGV4Y2VwdGlvbl0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKLSAgICAgICAgICAgIGpvYi0+cHJvbWlzZSgpLnJlamVjdChleGNlcHRpb24pOwor
ICAgICAgICAgICAgam9iLT5wcm9taXNlKCktPnJlamVjdChleGNlcHRpb24pOwogICAgICAgICB9
KTsKICAgICB9Ci0gICAgam9iRGlkRmluaXNoKGpvYik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtMzc2LDYgKzM4Niw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9u
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fY3Jl
YXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2Vy
dmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJv
bWlzZSIpOwogCiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpv
Yl0gewogICAgICAgICBqb2JEaWRGaW5pc2goam9iKTsKQEAgLTM5NSw2ICs0MDYsMTEgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2Vy
dmljZVdvcmtlckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFq
b2IucHJvbWlzZSgpKSB7CisgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBv
c3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGpvYiA9IG1ha2VS
ZWYoam9iKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVk
ID0gV1RGTW92ZShub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAg
ICAgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7CkBAIC00MDUsNyArNDIxLDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRp
b24oU2VydmljZVdvcmtlckpvYiYgam9iLAogCiAgICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
Q29udGFpbmVyICVwIHJlc29sdmVkIGpvYiB3aXRoIHJlZ2lzdHJhdGlvbiAlcCIsIHRoaXMsIHJl
Z2lzdHJhdGlvbi5wdHIoKSk7CiAKLSAgICAgICAgam9iLT5wcm9taXNlKCkucmVzb2x2ZTxJRExJ
bnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+KFdURk1vdmUocmVnaXN0cmF0aW9u
KSk7CisgICAgICAgIGpvYi0+cHJvbWlzZSgpLT5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uPj4oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKIAogICAgICAgICBu
b3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtNDE3LDYgKzQzMyw4IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRp
b25SZXN1bHQoU2VydmljZVdvcmtlckpvCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRy
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCisgICAgQVNTRVJUKGpvYi5wcm9t
aXNlKCkpOworCiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpv
Yl0gewogICAgICAgICBqb2JEaWRGaW5pc2goam9iKTsKICAgICB9KTsKQEAgLTQyOCw3ICs0NDYs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKbwogICAgIH0KIAogICAgIGNvbnRleHQtPnBvc3RU
YXNrKFtqb2IgPSBtYWtlUmVmKGpvYiksIHVucmVnaXN0cmF0aW9uUmVzdWx0XShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgbXV0YWJsZSB7Ci0gICAgICAgIGpvYi0+cHJvbWlzZSgpLnJlc29sdmU8
SURMQm9vbGVhbj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgICAgICBqb2ItPnByb21pc2Uo
KS0+cmVzb2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgfSk7CiB9
CiAKQEAgLTQ0NCw3ICs0NjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0
U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iLCBGZXRjaAogICAgIGlmICgh
Y29udGV4dCkgewogICAgICAgICBMT0dfRVJST1IoIlNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbiBjYWxsZWQgYnV0IHRoZSBjb250YWluZXIncyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IGlzIGdvbmUiKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBqb2IgPSBtYWtlUmVmKGpvYildIHsKLSAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYiwgeyBlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCBqb2ItPmRhdGEoKS5zY3JpcHRVUkwsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdCB0byBmZXRjaCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgd2l0aCBubyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IikgfSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5mYWlsZWRGZXRjaGlu
Z1NjcmlwdChqb2ItPmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi0+ZGF0YSgpLnJlZ2lzdHJhdGlv
bktleSgpLCB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGpvYi0+ZGF0YSgpLnNjcmlw
dFVSTCwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGZldGNoIHNlcnZpY2Ugd29ya2VyIHNjcmlw
dCB3aXRoIG5vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIGpvYkRpZEZpbmlzaChqb2IpOwogICAgICAgICByZXR1cm47CkBAIC00NzEsMTQgKzQ4OSwx
NSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQo
U2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdAogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShqb2IucHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9
PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBu
byBwcm9taXNlIik7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRh
aW5lciAlcCBmYWlsZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRl
bnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgIGpvYi5wcm9taXNlKCkucmVqZWN0KCpleGNlcHRpb24pOworICAgIGlm
IChleGNlcHRpb24gJiYgam9iLnByb21pc2UoKSkKKyAgICAgICAgam9iLnByb21pc2UoKS0+cmVq
ZWN0KCpleGNlcHRpb24pOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1f
c3dDb25uZWN0aW9uLCBqb2IgPSBtYWtlUmVmKGpvYiksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRD
b3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBl
cnJvcik7CisgICAgICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYi0+ZGF0
YSgpLmlkZW50aWZpZXIoKSwgam9iLT5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIGVycm9yKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggZGM2ODQzOTY5OWM5Nzk1MGY3NzFiYzA0
ZGY0NjZmN2I0NmU4MmQ5My4uMTlkMjVmNWE3NDE3OGQyYTgzOWI0NTQyMjk4NTE1MGVhMGUzN2Rh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBS
ZWdpc3RyYXRpb25PcHRpb25zID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAg
ICAgdm9pZCBhZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHRVUkwsIGNvbnN0IFJl
Z2lzdHJhdGlvbk9wdGlvbnMmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHJl
bW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKLSAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CisgICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYpOwog
CiAgICAgdm9pZCBnZXRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVUYXNrVG9VcGRhdGVSZWdpc3Ry
YXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJE
YXRhPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCmluZGV4IGMxMDgyYzgwOTFkNWU3YmY3MTQxMmUzNjlkNzEzNjIxMmMxMWQ3
ZTYuLjIwMjQ0Nzk2ZTVkNDBhOTlkYTBlOTc3YjI4YmRiMGI2OTgwOGIyNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VySm9i
OjpTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEp
CitTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGll
bnQmIGNsaWVudCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2pv
YkRhdGEoV1RGTW92ZShqb2JEYXRhKSkKICAgICAsIG1fcHJvbWlzZShXVEZNb3ZlKHByb21pc2Up
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2IuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmgKaW5kZXggZWE3YTdhMzIwZmMxNDBiNTU3NzYxOWZlMmNjZTllNWM0MTI0MDk3Yi4uNjI1Njhk
YWI1MzAyNjBlOGI5YTQ3Zjc5OWJlYjk2MjRjZjA3OTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC00OCw3ICs0OCw3IEBA
IHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKIAogY2xhc3MgU2VydmljZVdv
cmtlckpvYiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VySm9iPiwg
cHVibGljIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VySm9iPiBjcmVhdGUoU2VydmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYg
am9iRGF0YSkKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJKb2I+IGNyZWF0ZShTZXJ2aWNl
V29ya2VySm9iQ2xpZW50JiBjbGllbnQsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckpvYihjbGllbnQsIFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUoam9iRGF0YSkpKTsKICAgICB9CkBAIC02MywxNSArNjMsMTUgQEAgcHVibGljOgog
ICAgIHVzaW5nIElkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcjsKICAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGEuaWRlbnRpZmll
cigpLmpvYklkZW50aWZpZXI7IH0KIAotICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2pvYkRhdGE7IH0KLSAgICBEZWZlcnJlZFByb21pc2UmIHByb21pc2Uo
KSB7IHJldHVybiBtX3Byb21pc2UuZ2V0KCk7IH0KKyAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YTsgfQorICAgIERlZmVycmVkUHJv
bWlzZSogcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsgfQogCiAgICAgdm9pZCBm
ZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaE9wdGlv
bnM6OkNhY2hlKTsKIAogICAgIGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250
ZXh0SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fY29udGV4dElkZW50aWZpZXI7IH0KIAogcHJpdmF0
ZToKLSAgICBTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKKyAgICBTZXJ2aWNlV29y
a2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYm
LCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKIAogICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNs
aWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpAQCAtODEsNyArODEsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmPFNlcnZpY2VXb3JrZXJKb2JDbGllbnQ+IG1fY2xpZW50OwogICAgIFNl
cnZpY2VXb3JrZXJKb2JEYXRhIG1fam9iRGF0YTsKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBt
X3Byb21pc2U7CisgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9wcm9taXNlOwogCiAgICAg
Ym9vbCBtX2NvbXBsZXRlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRl
eCA4NjY2ZTg2YzQ4MDA3ZGQ5ZTBlMzRiYTg3MjYzM2MyMWMyZjQ0ZDM2Li4wOTNlYTc1ZTliZDYx
NThkYzhjZTI0NDI3OTIyNzI1NDQzOTEwN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBA
IC0xNDQsNiArMTQ0LDE5IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dXBkYXRl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2NvbnRhaW5lci0+dXBkYXRl
UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0V29ya2VyLT5z
Y3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAK
K3ZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSgpCit7CisgICAgaWYg
KG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBuZXdlc3RXb3JrZXIg
PSBnZXROZXdlc3RXb3JrZXIoKTsKKyAgICBpZiAoIW5ld2VzdFdvcmtlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgd29ya2VyIHR5cGVzLgorICAgIG1fY29udGFp
bmVyLT51cGRhdGVSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25EYXRhLnNjb3BlVVJMLCBuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFzc2ljLCBudWxscHRyKTsKK30K
Kwogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5oCmluZGV4IDVmMjg0MWYyYTE5OGE3YmVlMGNhMDE2NDNkMjcxODhhZDc3ZTcyZGYu
LmRjNDViNzBhZDIwYzUzMTk3ZWJlZDg4ZGMxNDJhYzZhMDljNWUwZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOwogCisgICAgdm9pZCBzb2Z0VXBkYXRlKCk7CisKICAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCmluZGV4IDViNzA1OTU0YjIzY2Y3ZTgxMThmMDc2MjUwYzhiMjhhNzFmMzVmYmYuLjQx
MDMyZGJjOGQzM2NkZWFhZWNiZDcxOTIxNjljNjM1YzdlYTM0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCkBAIC05NywyNSArOTcsMjIgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlQWN0
aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogCiB2b2lkIFNX
Q29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
YXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBh
dXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKGlkZW50aWZpZXIpOwogICAgIGlm
ICghc2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2VydmljZVdvcmtlci0+
c2V0VGVybWluYXRpbmdPclRlcm1pbmF0ZWQodHJ1ZSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyLT50
aHJlYWQoKS5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkuc3Rv
cChbdGhpcywgaWRlbnRpZmllciwgc2VydmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdvcmtl
ciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQogICAgICAgICAgICAgY29ubmVjdGlvbi0+d29ya2Vy
VGVybWluYXRlZChpZGVudGlmaWVyKTsKIAogICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAKLSAgICAgICAgYXV0
byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKGlkZW50aWZpZXIpOwotICAgICAgICBBU1NFUlQo
d29ya2VyKTsKLSAgICAgICAgCiAgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJl
bGVhc2luZyB0aGUgd29ya2VyIHRocmVhZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNl
IGJlCiAgICAgICAgIC8vIGEgcmFjZSB0b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29ya2Vy
KV0geyB9KTsKICAgICB9KTsKIH0KIApAQCAtMTI1LDEzICsxMjIsMTYgQEAgdm9pZCBTV0NvbnRl
eHRNYW5hZ2VyOjpmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoU2VydmkKICAgICAgICAgYXBwbHkoKndvcmtlclRocmVhZCk7CiB9CiAKLXZvaWQgU1dD
b250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYpPiYmIHRhc2spCitib29sIFNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248
dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmKT4mJiB0YXNrKQogewotICAgIGlmIChhdXRv
KiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpKSB7Ci0gICAgICAg
IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGFzayA9IFdURk1v
dmUodGFzayldIChhdXRvJiBjb250ZXh0KSB7Ci0gICAgICAgICAgICB0YXNrKGRvd25jYXN0PFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpOwotICAgICAgICB9KTsKLSAgICB9Cisg
ICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoIXNlcnZpY2VXb3JrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNlcnZp
Y2VXb3JrZXItPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGFzayA9IFdURk1vdmUodGFz
ayldIChhdXRvJiBjb250ZXh0KSB7CisgICAgICAgIHRhc2soZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBiMjUyOTA5NjNl
NTJiZGYzY2IwODQ0YTY3Y2FiZGZiYzNhYzYyYTE3Li5mNDAzZDRkODUyZjhlNjYyY2Y1NWJhZjY0
MzYwY2U2MTFmNDBkODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwb3N0VGFza1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlJik+JiYpOwogCiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA5MzdlZDRkNDMzNTZkNDc0MDlmNTJkY2I4
YTgxZDk4OTNlZWZkOThhLi5jYTg5MjZhMDU4YmM5ODY0NTU1M2FlZWY2MzFkOTM0OWRlOTcwNDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTkzLDEwICs5MywxMSBAQCBzdGF0aWMg
dm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEZldGNoUmVzcG9uc2Uq
IHJlc3BvbnNlKQogCiB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVu
dCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQogewot
ICAgIEFTU0VSVChnbG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKLQog
ICAgIGF1dG8gcmVxdWVzdEhlYWRlcnMgPSBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRl
cnM6Okd1YXJkOjpJbW11dGFibGUsIEhUVFBIZWFkZXJNYXAgeyByZXF1ZXN0Lmh0dHBIZWFkZXJG
aWVsZHMoKSB9KTsKIAorICAgIGJvb2wgaXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGU7CisgICAgYm9vbCBpc05vblN1YnJlc291cmNlUmVx
dWVzdCA9IFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRp
b24pOworCiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxGZXRjaEJvZHk+IGJvZHk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0
YS0+aXNFbXB0eSgpKSB7CkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZl
bnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFs
U2MKIAogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5pdDsKICAgICBpbml0LnJlcXVlc3QgPSBXVEZN
b3ZlKGZldGNoUmVxdWVzdCk7Ci0gICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6
Ok1vZGU6Ok5hdmlnYXRlKSB7CisgICAgaWYgKGlzTmF2aWdhdGlvbikgewogICAgICAgICAvLyBG
SVhNRTogU2V0IHJlc2VydmVkQ2xpZW50SWQuCiAgICAgICAgIGlmIChjbGllbnRJZCkKICAgICAg
ICAgICAgIGluaXQudGFyZ2V0Q2xpZW50SWQgPSBjbGllbnRJZC0+dG9TdHJpbmcoKTsKQEAgLTEz
MiwxMCArMTMzLDEzIEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xp
ZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUoKTsKLSAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBzb2Z0IHVwZGF0ZS4KICAgICB9CiAKICAgICBnbG9iYWxTY29wZS51
cGRhdGVFeHRlbmRlZEV2ZW50c1NldChldmVudC5wdHIoKSk7CisKKyAgICBhdXRvJiByZWdpc3Ry
YXRpb24gPSBnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKTsKKyAgICBpZiAoaXNOb25TdWJyZXNv
dXJjZVJlcXVlc3QgfHwgKHJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSgpICYmIChXYWxsVGlt
ZTo6bm93KCkgLSByZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUoKSkgPiA4NjQwMF9zKSkKKyAg
ICAgICAgcmVnaXN0cmF0aW9uLnNvZnRVcGRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgU2Vy
dmljZVdvcmtlckZldGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGVhOThmZjhiYWZlZGVi
N2M2ZDVhNWQzMjdhOGZhMTE5MWM2NzI0M2QuLjdjMDZjODM2N2ZlMDYyMTQ1OWVjNzZjMDRmOTgz
YTAxYjNmOTViZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC0zOSw2ICszOSw3IEBAIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU7CitjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAzZTJjYzViZGE3N2M5
Y2I5NzI2MjhkODYxYTVhMWI1ZWJiNTA5OGYzLi42OGFkZGVlY2VmNDdiZjdlYTdjNmI3YTFjNDM3
ZDRhYjc5ZmFiMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0
YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIEZldGNo
T3B0aW9uCiAgICAgaWYgKCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25u
ZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCksIGNh
Y2hlUG9saWN5KTsKKyAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9i
RGF0YS5pZGVudGlmaWVyKCksIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIGNhY2hlUG9saWN5
KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBm
NzZjYjk0MzUwYzVhMGUwM2M1MmVhNWE0ZTdmNmFhOTVjY2JhOTZjLi42NmQ2ZTVlZTFiMDhlY2Yy
ZTczOTVjMTk3YmQyOWY3NzNmYzNmNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJv
b2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNj
cmlwdEZldGNoSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
RmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3Jp
cHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSA9
IDA7CiAKICAgICAgICAgc3RydWN0IFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdCB7CiAgICAgICAg
ICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBmM2EyMjI0OGY3YjMxZmE3NTEwZWUzZjdjMzk1MTQwOGVj
NjA5YTAyLi5kNGQ5MTM3MzkwODdiY2IxNGQ4MjIzMTVhODhjZDg0OGM0ZjZjZjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtOTEsOSArOTEsOSBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQo
Y29uc3QgU2VydmljZVdvcmtlcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6VW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGpvYkRhdGFJZGVudGlmaWVy
LCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xp
Y3kpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgRmV0
Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OlN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoam9iRGF0YUlkZW50
aWZpZXIsIGNhY2hlUG9saWN5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCByZWdp
c3RyYXRpb25LZXksIGNhY2hlUG9saWN5KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VX
b3JrZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDIwOTJh
NzcwZTMyYzQwNzY0MmExMGE5NDE1M2YyOWI4OGQwMDVlNjYuLjNiOTNlMzgwNjg1ODkxYmI0OTg2
NDY4NjFmMjgwZDM0Nzc0NWQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRp
b25Kb2JJbkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXImLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNv
cmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlVW5y
ZWdpc3RyYXRpb25Kb2JJbkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFNjcmlw
dEZldGNoSW5DbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSkgZmluYWw7CisgICAgdm9pZCBzdGFy
dFNjcmlwdEZldGNoSW5DbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlUmVn
aXN0cmF0aW9uU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZpbmFsOwogICAg
IHZvaWQgdXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGZp
cmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4
YTYwMDZiZjhkYzEwYTNhMDNlMTdlYTg5MDY2MTI5MmNjMjFhMDU4Li5kYmE2NDdlYjdkZjcyNjUx
NjA0YmE1ZWVlMjYwZTZmOThkMzI1NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlv
biB7CiAgICAgSm9iUmVqZWN0ZWRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZl
cihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEg
cmVnaXN0cmF0aW9uLCBlbnVtIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAgICAgVW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2Vy
dmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0
YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCi0gICAgU3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyIGpvYkRhdGFJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hl
UG9saWN5KQorICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiAgICAgVXBkYXRlUmVnaXN0cmF0aW9uU3Rh
dGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgZW51bSBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogICAgIFVwZGF0ZVdvcmtlclN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJTdGF0ZSBzdGF0ZSkKICAgICBGaXJlVXBkYXRlRm91bmRFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3OGVkNjdm
MzE1OTMxOTVlNTA5NGFhZWFlM2VhOTY3MWZhMWVmOTUuLjFkNDQ3OTliYzc2YTJlNmNhNjRmYjdh
M2M1NzI5YWYzMGFmZTdiZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMi0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtTZXJ2aWNlIFdvcmtlcnNd
IEltcGxlbWVudCAiU29mdCBVcGRhdGUiIGFsZ29yaXRobQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNzAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNjE2MzQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVbnNraXAgc29mdCB1cGRhdGUgV1BUIHRlc3QgdGhhdCBubyBsb25nZXIgdGltZXMgb3V0
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0xMi0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgaW5pdGlhbCBET00gc3VwcG9y
dCBmb3IgTWVkaWEgQ2FwYWJpbGl0aWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCAxNzY4NTFmZmMzMzY3NjgyMzg5MTE3OTI4Y2Q1YjFlYWMyMjZlZTliLi43NDVhZGZmODVlODk0
OTY4ZTU2ZTdkY2FmNDA1OGIyYmZkYzZmOWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMi0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFtTZXJ2aWNlIFdvcmtlcnNdIEltcGxlbWVudCAiU29mdCBVcGRh
dGUiIGFsZ29yaXRobQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgwNzAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjE2MzQ2MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIFNvZnQg
VXBkYXRlIFdQVCB0ZXN0IG5vdyB0aGF0IGl0IGlzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VwZGF0ZS1hZnRl
ci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0xMi0y
MSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMuaHRtbCBpcyBmYWlsaW5nIG9uZSB0ZXN0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAzNmY0NTBkYzI3NjAxMDMyYTdhNWU3ODllNTU3NzkwOGNi
NzUzZmFkLi5mMjA2YTA0MzJkNDRkYmYyYmM5MmE2ZTJmNjAwODMyZjNmNTNmY2YyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTE1NCw3ICsxNTQsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9wb3N0bWVzc2FnZS5odHRwcwog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvcG9zdG1lc3NhZ2UtbXNncG9ydC10by1jbGllbnQuaHR0cHMuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvcmVzcG9uZC13aXRoLWJvZHktYWNjZXNzZWQtcmVzcG9uc2UuaHR0cHMuaHRtbCBbIFNr
aXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvc2FuZGJveGVkLWlmcmFtZS1mZXRjaC1ldmVudC5odHRwcy5odG1sIFsgU2tp
cCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItbmF2aWdhdGlvbi1mZXRjaC1ldmVudC5odHRwcy5odG1s
IFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItb25lZGF5Lmh0dHBzLmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL3VwZGF0ZS1ieXRlY2hlY2suaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdXBkYXRl
LXJlY292ZXJ5Lmh0dHBzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3VwZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VwZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50
Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAyZTI5MmRmMjk0ZGY3ZDhhZTc4NWU1MDNkYzBhZGVk
Mzc3YzdlNjA3Li5jMzQzOGEwOGE4YzA4YTJmYTU3YTNmMzhkMDc1YWYxMmZkYjI2MDZlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItbmF2aWdhdGlvbi1mZXRjaC1l
dmVudC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdXBkYXRlLWFm
dGVyLW5hdmlnYXRpb24tZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEs
MyBAQAogCi0KLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1F
T1VUIFVwZGF0ZSBzaG91bGQgYmUgdHJpZ2dlcmVkIGFmdGVyIGEgbmF2aWdhdGlvbiBmZXRjaCBl
dmVudC4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgVXBkYXRlIHNob3VsZCBiZSB0cmlnZ2VyZWQgYWZ0
ZXIgYSBuYXZpZ2F0aW9uIGZldGNoIGV2ZW50LiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330138</attachid>
            <date>2017-12-22 12:44:59 -0800</date>
            <delta_ts>2017-12-22 13:17:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180702-20171222124458.patch</filename>
            <type>text/plain</type>
            <size>41971</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFjN2QyODE5ZWVjZDYy
MGQ4ODUxNDIyNDM5Y2ZkYzk1YWY0ODNlMS4uZjM3NDU2M2ZkYzk4MmU3NjA1ZjM1OTRiMjhkZTU0
ZDIyNTAxNGRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTEyLTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10g
SW1wbGVtZW50ICJTb2Z0IFVwZGF0ZSIgYWxnb3JpdGhtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2MTYzNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgSW1wbGVtZW50ICJTb2Z0IFVwZGF0ZSIgYWxnb3JpdGhtOgorICAgICAgICAtIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNzb2Z0LXVwZGF0ZS1hbGdvcml0aG0KKworICAg
ICAgICBDYWxsIHNvZnRVcGRhdGUgYXQgdGhlIGVuZCBvZiAiSGFuZGxlIEZldGNoIiwgYXMgcGVy
OgorICAgICAgICAtIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNvbi1mZXRj
aC1yZXF1ZXN0LWFsZ29yaXRobQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQg
ZXhpc3RpbmcgdGVzdC4KKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8p
OgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hG
b3JTZXJ2ZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFp
bGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRG
ZXRjaEZvckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JGYWlsZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OlNlcnZpY2VX
b3JrZXJKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iOjpwcm9taXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250
ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4
dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmg6CisKIDIwMTctMTItMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIER1cGxpY2F0ZWQgc3ltYm9scyBpbiBsaWJqYXZh
c2NyaXB0Y29yZWd0ayBhbmQgbGlid2Via2l0Mmd0ayBjYW4gY2F1c2UgY3Jhc2hlcyBpbiBwcm9k
dWN0aW9uIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NTY4M2NiNDFkN2JlOWQ2MDU2NmVlODg1ODk5YmYz
ZmRkNWZjNjJmLi43Y2Q5NjQ3MTc1MDZhMDJhYzhiNGQwNDk5ZjVhOTI2YjUyMmIzNTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEyLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10gSW1wbGVtZW50ICJTb2Z0IFVw
ZGF0ZSIgYWxnb3JpdGhtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA3MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTYzNDYxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KToKKyAg
ICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
bWVzc2FnZXMuaW46CisKIDIwMTctMTItMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFy
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIER1cGxpY2F0ZWQgc3ltYm9scyBpbiBsaWJq
YXZhc2NyaXB0Y29yZWd0ayBhbmQgbGlid2Via2l0Mmd0ayBjYW4gY2F1c2UgY3Jhc2hlcyBpbiBw
cm9kdWN0aW9uIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCmluZGV4IGQzZjQ0OGY2OGVmYjY5Y2IyMDUwYWM3OGM1NDU4ZjExYWM4NjJhYTEu
LmZjM2YwOTZhYzg4MmQxNTAwMzE5N2EyMTAwNWYyNmU3MDkzNzRjNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU3MCwxMCArNTcwLDEx
IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNlcnZp
Y2VXb3JrZXJDb250YWluZXIoKQogICAgIHJldHVybiBuYXZpZ2F0b3IgPyAmbmF2aWdhdG9yLT5z
ZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOwogfQogCi12b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnBvc3RUYXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleHRJ
ZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYm
IHRhc2spCitib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29uc3QgRG9j
dW1lbnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleHRJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAorICAgIGJvb2wgd2FzUG9zdGVkID0gZmFsc2U7CiAgICAgc3dpdGNo
T24oY29udGV4dElkZW50aWZpZXIsIFsmXSAoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIp
IHsKICAgICAgICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCku
Z2V0KGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRvY3VtZW50KQpAQCAtNTgxLDExICs1ODIs
MTMgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnN0IERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXgKICAgICAgICAgZG9jdW1lbnQtPnBvc3RUYXNr
KFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oYXV0byYgc2NvcGUpIHsKICAgICAgICAgICAgIHRhc2so
c2NvcGUpOwogICAgICAgICB9KTsKKyAgICAgICAgd2FzUG9zdGVkPSB0cnVlOwogICAgIH0sIFsm
XShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSB7Ci0gICAgICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIs
IFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oYXV0byYgc2NvcGUpIHsKKyAgICAgICAgd2FzUG9zdGVk
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIo
aWRlbnRpZmllciwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvJiBzY29wZSkgewogICAgICAg
ICAgICAgdGFzayhzY29wZSk7CiAgICAgICAgIH0pOwogICAgIH0pOworICAgIHJldHVybiB3YXNQ
b3N0ZWQ7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKaW5kZXggZjNlY2ZhZWFhYWMwMmYwZDMyZGQ5MzU3OTZhNjU5MWMyYjgxMTkzNC4u
YWUxNGExNTNiMTA0NGQ0MmI2ODRjODQyMjFkMmZhZDczNjQyN2M1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yNTEsNyArMjUxLDcgQEAgcHVi
bGljOgogCiAgICAgU2VydmljZVdvcmtlckNvbnRhaW5lciogc2VydmljZVdvcmtlckNvbnRhaW5l
cigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcG9zdFRhc2tUbyhjb25zdCBE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllciYsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHBvc3RU
YXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDhhNjY2
NDdkMjUwMGMwMGNmZTQxYzNhODEzYWE4MjIzNDU0MzE0OGEuLjJmOTQ4MTRkZTE2Y2FlNjIxZmQ2
ZGYxNGVjOGNiM2ViMDNjMDM2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC0yNjksMTAgKzI2OSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdv
cmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxz
KQogICAgICAgICAvLyBGSVhNRTogRnVsbHkgaW1wbGVtZW50IGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9TZXJ2aWNlV29ya2VyLyNpbXBvcnRzY3JpcHRzLgogICAgICAgICBhdXRvJiBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCp0aGlz
KTsKICAgICAgICAgYXV0byYgcmVnaXN0cmF0aW9uID0gc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LnJlZ2lzdHJhdGlvbigpOwotICAgICAgICBpZiAocmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hl
KCkgPT0gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpOb25lCi0gICAgICAgICAgICB8fCAo
cmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKCkgJiYgKFdhbGxUaW1lOjpub3coKSAtIHJlZ2lz
dHJhdGlvbi5sYXN0VXBkYXRlVGltZSgpKSA+IDg2NDAwX3MpKSB7CisgICAgICAgIGlmIChyZWdp
c3RyYXRpb24udXBkYXRlVmlhQ2FjaGUoKSA9PSBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6
Ok5vbmUgfHwgcmVnaXN0cmF0aW9uLm5lZWRzVXBkYXRlKCkpCiAgICAgICAgICAgICBjYWNoZVBv
bGljeSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2FjaGU7Ci0gICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmNwcAppbmRleCA2ZmUwNjExOTA3NTFjNGQ2MmM0MDQyZmIxN2E3ODZlNDMw
NTc4M2Y2Li4xZjMyMjFmZjRmOTliOThlYWRkMWY4MGQ4NTU3Mjc0YTBiYjFkNWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTYzLDEyICs2NCwxMSBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6
ZmluaXNoZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cgog
ICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIo
KSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgc2NyaXB0LCB7IH0gfSk7CiB9CiAKLXZv
aWQgU1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBTV0NsaWVudENvbm5l
Y3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdl
dChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKIAotICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0
SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRp
b25LZXkoKSwgeyB9LCBlcnJvciB9KTsKKyAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVy
KHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgeyB9LCBlcnJvciB9KTsKIH0K
IAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgRXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKQEAgLTkwLDE1ICs5MCwyMyBAQCB2b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyAgICBhdXRv
IGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQsIHJlZ2lzdHJhdGlvbktleSA9IHJlZ2lzdHJhdGlvbkRhdGEua2V5XSB7CisgICAgICAgIGlm
IChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgPT0gU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOjpZ
ZXMpCisgICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShyZWdpc3RyYXRp
b25LZXkpOworICAgIH0pOworCiAgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShq
b2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikgewogICAgICAg
ICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5k
Iiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRh
c2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHJlZ2lzdHJhdGlvbkRhdGEgPSBy
ZWdpc3RyYXRpb25EYXRhLmlzb2xhdGVkQ29weSgpLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBib29sIHdhc1Bvc3RlZCA9
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmll
cigpLCBbam9iLCByZWdpc3RyYXRpb25EYXRhID0gcmVnaXN0cmF0aW9uRGF0YS5pc29sYXRlZENv
cHkoKSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
bXV0YWJsZSB7CiAgICAgICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFdURk1vdmUo
cmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CiAgICAgfSk7CisK
KyAgICBpZiAod2FzUG9zdGVkKQorICAgICAgICBndWFyZC5yZWxlYXNlKCk7CiB9CiAKIHZvaWQg
U1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKQEAgLTExNiw3ICsxMjQsNyBAQCB2b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6dW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKbwogICAgIH0pOwogfQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
IGpvYkRhdGFJZGVudGlmaWVyLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQordm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBGZXRjaE9wdGlvbnM6
OkNhY2hlIGNhY2hlUG9saWN5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAg
LTEyNCwxNiArMTMyLDE1IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZl
dGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlCiAgICAgaWYgKCFqb2Ip
IHsKICAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgaW5zdHJ1Y3RlZCB0byBzdGFydCBmZXRjaCBm
cm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIC8vIEZJWE1FOiBTaG91bGQg
bWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIgaGVyZSB0byBzaWduYWwgZmFpbHVyZSB0byBmZXRj
aCwKLSAgICAgICAgLy8gYnV0IHdlIGN1cnJlbnRseSBuZWVkIHRoZSByZWdpc3RyYXRpb24ga2V5
IHRvIGRvIHNvLCBhbmQgZG9uJ3QgaGF2ZSBpdCBoZXJlLgotICAgICAgICAvLyBJbiB0aGUgZnV0
dXJlIHdlJ2xsIHJlZmFjdG9yIHRvIGhhdmUgYSBnbG9iYWwsIGNyb3NzLXByb2Nlc3Mgam9iIGlk
ZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBvdmVyY29tZSB0aGlzLgotCisgICAgICAgIGZh
aWxlZEZldGNoaW5nU2NyaXB0KGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIFJl
c291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBVUkwoKSwgQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IikgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFz
a1RvKGpvYi0+Y29udGV4dElkZW50aWZpZXIoKSwgW2pvYiwgY2FjaGVQb2xpY3ldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgYm9vbCB3YXNQb3N0ZWQgPSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojpwb3N0VGFza1RvKGpvYi0+Y29udGV4dElkZW50aWZpZXIoKSwgW2pvYiwgY2FjaGVQ
b2xpY3ldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGpvYi0+c3RhcnRTY3Jp
cHRGZXRjaChjYWNoZVBvbGljeSk7CiAgICAgfSk7CisgICAgaWYgKCF3YXNQb3N0ZWQpCisgICAg
ICAgIGZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25L
ZXksIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBqb2ItPmRh
dGEoKS5zY3JpcHRVUkwsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGZldGNoIHNlcnZpY2Ugd29y
a2VyIHNjcmlwdCIpIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29u
dGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgU2Vy
dmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rp
b24uaAppbmRleCA3ODc1ZjY0OTdlYmNjZmI3OGEyOWJhYjgxOWMxNzU0ODFhNThjMWM0Li40YWU3
OGEzODg3ZGZhYzgxMzA1YTMxMjlhZjUzOGEwODE2OTM0ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYp
OwogICAgIHZvaWQgZmluaXNoZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3Jp
cHQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JikgPSAwOwogCkBAIC04OSw3ICs4OSw3IEBAIHByb3RlY3RlZDoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIEZl
dGNoT3B0aW9uczo6Q2FjaGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4
dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA3YjljNTRhODc3NDE0NGU0MWMw
NjVjYzBmMjY2YTA2M2U5OTM4ZmI2Li44NWMxYzQ4Y2VmNWQyNjMyYzMwZjExYTEzYmUyZjM4OGY4
NWIyYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xODksMjQgKzE4OSwyMyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBSZWY8RGVmZXJyZQogICAgIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2I6OmNyZWF0
ZSgqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNj
b3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdp
c3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtl
clR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCB8fCAh
Y29udGV4dC0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVy
cm9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQVNTRVJUKCFtX2lzU3RvcHBlZCk7
CisKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBB
U1NFUlQoY29udGV4dC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpOwogCiAgICAgaWYgKCFtX3N3Q29u
bmVjdGlvbikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOworICAgICAgICBpZiAocHJv
bWlzZSkKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRl
RXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFNlcnZpY2VXb3JrZXJKb2JE
YXRhIGpvYkRhdGEobV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OwotICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwoKTsKLSAgICBq
b2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLmNsaWVudENyZWF0aW9uVVJMID0g
Y29udGV4dC51cmwoKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkpOwogICAgIGpvYkRhdGEu
dHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7CiAgICAgam9iRGF0YS5zY29wZVVS
TCA9IHNjb3BlVVJMOwogICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwpAQCAtMzUz
LDEyICszNTIsMjAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRo
RXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKICAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHBy
b21pc2UiKTsKKworICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZq
b2JdIHsKKyAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CisgICAgfSk7CisKKyAgICBpZiAoIWpv
Yi5wcm9taXNlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChhdXRvKiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKFtq
b2IgPSBtYWtlUmVmKGpvYiksIGV4Y2VwdGlvbl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
LSAgICAgICAgICAgIGpvYi0+cHJvbWlzZSgpLnJlamVjdChleGNlcHRpb24pOworICAgICAgICAg
ICAgam9iLT5wcm9taXNlKCktPnJlamVjdChleGNlcHRpb24pOwogICAgICAgICB9KTsKICAgICB9
Ci0gICAgam9iRGlkRmluaXNoKGpvYik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtMzc2LDYgKzM4Myw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgorICAgIEFTU0VSVF9XSVRI
X01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwog
CiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewogICAg
ICAgICBqb2JEaWRGaW5pc2goam9iKTsKQEAgLTM5NSw2ICs0MDMsMTEgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtl
ckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFqb2IucHJvbWlz
ZSgpKSB7CisgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGpvYiA9IG1ha2VSZWYoam9iKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkID0gV1RGTW92
ZShub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAgICAgICAgICAg
IG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7CkBAIC00MDUsNyArNDE4LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2Vydmlj
ZVdvcmtlckpvYiYgam9iLAogCiAgICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQ29udGFpbmVy
ICVwIHJlc29sdmVkIGpvYiB3aXRoIHJlZ2lzdHJhdGlvbiAlcCIsIHRoaXMsIHJlZ2lzdHJhdGlv
bi5wdHIoKSk7CiAKLSAgICAgICAgam9iLT5wcm9taXNlKCkucmVzb2x2ZTxJRExJbnRlcmZhY2U8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAg
ICAgIGpvYi0+cHJvbWlzZSgpLT5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uPj4oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKIAogICAgICAgICBub3RpZnlXaGVu
UmVzb2x2ZWRJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtNDE3LDYgKzQzMCw4IEBAIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQo
U2VydmljZVdvcmtlckpvCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCisgICAgQVNTRVJUKGpvYi5wcm9taXNlKCkpOwor
CiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewogICAg
ICAgICBqb2JEaWRGaW5pc2goam9iKTsKICAgICB9KTsKQEAgLTQyOCw3ICs0NDMsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0KFNlcnZpY2VXb3JrZXJKbwogICAgIH0KIAogICAgIGNvbnRleHQtPnBvc3RUYXNrKFtqb2Ig
PSBtYWtlUmVmKGpvYiksIHVucmVnaXN0cmF0aW9uUmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7Ci0gICAgICAgIGpvYi0+cHJvbWlzZSgpLnJlc29sdmU8SURMQm9vbGVh
bj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgICAgICBqb2ItPnByb21pc2UoKS0+cmVzb2x2
ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgfSk7CiB9CiAKQEAgLTQ0
NCw3ICs0NTksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0
Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iLCBGZXRjaAogICAgIGlmICghY29udGV4dCkg
ewogICAgICAgICBMT0dfRVJST1IoIlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbiBjYWxsZWQgYnV0IHRoZSBjb250YWluZXIncyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IGlzIGdvbmUiKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9uLCBqb2IgPSBtYWtlUmVmKGpvYildIHsKLSAgICAgICAgICAgIGNv
bm5lY3Rpb24tPmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYiwgeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCBqb2ItPmRhdGEoKS5zY3JpcHRVUkwsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0
byBmZXRjaCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgd2l0aCBubyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0IikgfSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1NjcmlwdChq
b2ItPmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi0+ZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCB7
IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGpvYi0+ZGF0YSgpLnNjcmlwdFVSTCwgQVND
SUlMaXRlcmFsKCJBdHRlbXB0IHRvIGZldGNoIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB3aXRoIG5v
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIGpvYkRp
ZEZpbmlzaChqb2IpOwogICAgICAgICByZXR1cm47CkBAIC00NzEsMTQgKzQ4NiwxNSBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdAogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShqb2IucHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNl
V29ya2VySm9iVHlwZTo6VXBkYXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9taXNl
Iik7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBm
YWlsZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigp
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgIGpvYi5wcm9taXNlKCkucmVqZWN0KCpleGNlcHRpb24pOworICAgIGlmIChleGNlcHRp
b24gJiYgam9iLnByb21pc2UoKSkKKyAgICAgICAgam9iLnByb21pc2UoKS0+cmVqZWN0KCpleGNl
cHRpb24pOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0
aW9uLCBqb2IgPSBtYWtlUmVmKGpvYiksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBlcnJvcik7Cisg
ICAgICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYi0+ZGF0YSgpLmlkZW50
aWZpZXIoKSwgam9iLT5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIGVycm9yKTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmgKaW5kZXggZGM2ODQzOTY5OWM5Nzk1MGY3NzFiYzA0ZGY0NjZmN2I0
NmU4MmQ5My4uMTlkMjVmNWE3NDE3OGQyYTgzOWI0NTQyMjk4NTE1MGVhMGUzN2RhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWdpc3RyYXRp
b25PcHRpb25zID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAgICAgdm9pZCBh
ZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBzY3JpcHRVUkwsIGNvbnN0IFJlZ2lzdHJhdGlv
bk9wdGlvbnMmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLSAg
ICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9p
ZCB1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9p
ZCBnZXRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVUYXNrVG9VcGRhdGVSZWdpc3RyYXRpb25TdGF0
ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2Iu
Y3BwCmluZGV4IGMxMDgyYzgwOTFkNWU3YmY3MTQxMmUzNjlkNzEzNjIxMmMxMWQ3ZTYuLjIwMjQ0
Nzk2ZTVkNDBhOTlkYTBlOTc3YjI4YmRiMGI2OTgwOGIyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNl
V29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCitTZXJ2aWNl
V29ya2VySm9iOjpTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVu
dCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYmIGpvYkRhdGEpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2pvYkRhdGEoV1RG
TW92ZShqb2JEYXRhKSkKICAgICAsIG1fcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXgg
ZWE3YTdhMzIwZmMxNDBiNTU3NzYxOWZlMmNjZTllNWM0MTI0MDk3Yi4uNjI1NjhkYWI1MzAyNjBl
OGI5YTQ3Zjc5OWJlYjk2MjRjZjA3OTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKIAogY2xhc3MgU2VydmljZVdvcmtlckpvYiA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VySm9iPiwgcHVibGljIFdv
cmtlclNjcmlwdExvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNl
V29ya2VySm9iPiBjcmVhdGUoU2VydmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50LCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkK
KyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJKb2I+IGNyZWF0ZShTZXJ2aWNlV29ya2VySm9i
Q2xpZW50JiBjbGllbnQsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlckpvYihjbGllbnQsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUo
am9iRGF0YSkpKTsKICAgICB9CkBAIC02MywxNSArNjMsMTUgQEAgcHVibGljOgogICAgIHVzaW5n
IElkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcjsKICAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGEuaWRlbnRpZmllcigpLmpvYklk
ZW50aWZpZXI7IH0KIAotICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2pvYkRhdGE7IH0KLSAgICBEZWZlcnJlZFByb21pc2UmIHByb21pc2UoKSB7IHJldHVy
biBtX3Byb21pc2UuZ2V0KCk7IH0KKyAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YTsgfQorICAgIERlZmVycmVkUHJvbWlzZSogcHJv
bWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsgfQogCiAgICAgdm9pZCBmZXRjaFNjcmlw
dFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaE9wdGlvbnM6OkNhY2hl
KTsKIAogICAgIGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRlbnRp
ZmllcigpIHsgcmV0dXJuIG1fY29udGV4dElkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBT
ZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKKyAgICBTZXJ2aWNlV29ya2VySm9iKFNl
cnZpY2VXb3JrZXJKb2JDbGllbnQmLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmLCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYmKTsKIAogICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudAogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVmPFNlcnZpY2VXb3JrZXJKb2JDbGllbnQ+IG1fY2xpZW50OwogICAgIFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhIG1fam9iRGF0YTsKLSAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2U7
CisgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9wcm9taXNlOwogCiAgICAgYm9vbCBtX2Nv
bXBsZXRlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA4NjY2ZTg2
YzQ4MDA3ZGQ5ZTBlMzRiYTg3MjYzM2MyMWMyZjQ0ZDM2Li4wOTNlYTc1ZTliZDYxNThkYzhjZTI0
NDI3OTIyNzI1NDQzOTEwN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0xNDQsNiAr
MTQ0LDE5IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dXBkYXRlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2NvbnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0
aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwo
KSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKK3ZvaWQgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSgpCit7CisgICAgaWYgKG1faXNTdG9w
cGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBuZXdlc3RXb3JrZXIgPSBnZXROZXdl
c3RXb3JrZXIoKTsKKyAgICBpZiAoIW5ld2VzdFdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRklYTUU6IFN1cHBvcnQgd29ya2VyIHR5cGVzLgorICAgIG1fY29udGFpbmVyLT51cGRh
dGVSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25EYXRhLnNjb3BlVVJMLCBuZXdlc3RXb3JrZXIt
PnNjcmlwdFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFzc2ljLCBudWxscHRyKTsKK30KKwogdm9pZCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5o
CmluZGV4IDVmMjg0MWYyYTE5OGE3YmVlMGNhMDE2NDNkMjcxODhhZDc3ZTcyZGYuLjQzNzI4ODcz
NDlkNTQxOWVhOGJmMWY4OTFkNjczNDQ1OTczN2U2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaApA
QCAtNjEsOSArNjEsMTMgQEAgcHVibGljOgogICAgIFdhbGxUaW1lIGxhc3RVcGRhdGVUaW1lKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRMYXN0VXBkYXRlVGltZShXYWxsVGltZSk7CiAKKyAgICBib29s
IG5lZWRzVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbGFzdFVwZGF0ZVRpbWUoKSAmJiAoV2FsbFRp
bWU6Om5vdygpIC0gbGFzdFVwZGF0ZVRpbWUoKSkgPiA4NjQwMF9zOyB9CisKICAgICB2b2lkIHVw
ZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXIoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKKyAgICB2b2lkIHNvZnRVcGRhdGUoKTsKKwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKaW5kZXggNWI3MDU5NTRiMjNjZjdlODExOGYwNzYyNTBjOGIyOGE3
MWYzNWZiZi4uNDEwMzJkYmM4ZDMzY2RlYWFlY2JkNzE5MjE2OWM2MzVjN2VhMzQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKQEAgLTk3LDI1ICs5NywyMiBAQCB2b2lkIFNXQ29udGV4dE1hbmFn
ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZp
ZXIpOworICAgIGF1dG8gc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLnRha2UoaWRlbnRpZmll
cik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXJ2
aWNlV29ya2VyLT5zZXRUZXJtaW5hdGluZ09yVGVybWluYXRlZCh0cnVlKTsKIAotICAgIHNlcnZp
Y2VXb3JrZXItPnRocmVhZCgpLnN0b3AoW3RoaXMsIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICBzZXJ2aWNlV29ya2VyLT50
aHJlYWQoKS5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShz
ZXJ2aWNlV29ya2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCiAgICAgICAgICAgICBjb25uZWN0
aW9uLT53b3JrZXJUZXJtaW5hdGVkKGlkZW50aWZpZXIpOwogCiAgICAgICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIAot
ICAgICAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2UoaWRlbnRpZmllcik7Ci0gICAg
ICAgIEFTU0VSVCh3b3JrZXIpOwotICAgICAgICAKICAgICAgICAgLy8gU3BpbiB0aGUgcnVubG9v
cCBiZWZvcmUgcmVsZWFzaW5nIHRoZSB3b3JrZXIgdGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3b3Vs
ZCBvdGhlcndpc2UgYmUKICAgICAgICAgLy8gYSByYWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0aW9u
LgotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsg
fSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXIgPSBXVEZNb3ZlKHNl
cnZpY2VXb3JrZXIpXSB7IH0pOwogICAgIH0pOwogfQogCkBAIC0xMjUsMTMgKzEyMiwxNiBAQCB2
b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChTZXJ2aQogICAgICAgICBhcHBseSgqd29ya2VyVGhyZWFkKTsKIH0K
IAotdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlJik+JiYgdGFzaykKK2Jvb2wgU1dDb250ZXh0TWFuYWdlcjo6cG9zdFRh
c2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV1RG
OjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpPiYmIHRhc2spCiB7Ci0g
ICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcikp
IHsKLSAgICAgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mIGNvbnRleHQpIHsKLSAgICAgICAgICAgIHRhc2so
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7Ci0gICAgICAgIH0p
OwotICAgIH0KKyAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50
aWZpZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0gKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgdGFzayhkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4
IGIyNTI5MDk2M2U1MmJkZjNjYjA4NDRhNjdjYWJkZmJjM2FjNjJhMTcuLmY0MDNkNGQ4NTJmOGU2
NjJjZjU1YmFmNjQzNjBjZTYxMWY0MGQ4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTc0LDcg
Kzc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcG9zdFRhc2tUb1NlcnZpY2VXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDkzN2VkNGQ0MzM1NmQ0
NzQwOWY1MmRjYjhhODFkOTg5M2VlZmQ5OGEuLjE2NDY4MDVlOTU5Y2U0MzI4NmVhNjE1ZTllZmNm
NDczNmM4NTcwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtOTMsMTAgKzkzLDEx
IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRmV0
Y2hSZXNwb25zZSogcmVzcG9uc2UpCiAKIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGll
bnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMpCiB7Ci0gICAgQVNTRVJUKGdsb2JhbFNjb3BlLmlzU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKCkpOwotCiAgICAgYXV0byByZXF1ZXN0SGVhZGVycyA9IEZldGNoSGVhZGVyczo6Y3JlYXRl
KEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgSFRUUEhlYWRlck1hcCB7IHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpIH0pOwogCisgICAgYm9vbCBpc05hdmlnYXRpb24gPSBvcHRpb25z
Lm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsKKyAgICBib29sIGlzTm9uU3Vi
cmVzb3VyY2VSZXF1ZXN0ID0gV2ViQ29yZTo6aXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9u
cy5kZXN0aW5hdGlvbik7CisKICAgICBhdXRvKiBmb3JtRGF0YSA9IHJlcXVlc3QuaHR0cEJvZHko
KTsKICAgICBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gYm9keTsKICAgICBpZiAoZm9ybURhdGEg
JiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpIHsKQEAgLTExMSw3ICsxMTIsNyBAQCB2b2lkIGRpc3Bh
dGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlJiBnbG9iYWxTYwogCiAgICAgRmV0Y2hFdmVudDo6SW5pdCBpbml0OwogICAgIGluaXQucmVx
dWVzdCA9IFdURk1vdmUoZmV0Y2hSZXF1ZXN0KTsKLSAgICBpZiAob3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKKyAgICBpZiAoaXNOYXZpZ2F0aW9uKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTZXQgcmVzZXJ2ZWRDbGllbnRJZC4KICAgICAgICAgaWYgKGNsaWVu
dElkKQogICAgICAgICAgICAgaW5pdC50YXJnZXRDbGllbnRJZCA9IGNsaWVudElkLT50b1N0cmlu
ZygpOwpAQCAtMTMyLDEwICsxMzMsMTMgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENs
aWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjbGllbnQtPmRpZE5vdEhhbmRsZSgp
OwotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHNvZnQgdXBkYXRlLgogICAgIH0KIAogICAgIGds
b2JhbFNjb3BlLnVwZGF0ZUV4dGVuZGVkRXZlbnRzU2V0KGV2ZW50LnB0cigpKTsKKworICAgIGF1
dG8mIHJlZ2lzdHJhdGlvbiA9IGdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpOworICAgIGlmIChp
c05vblN1YnJlc291cmNlUmVxdWVzdCB8fCByZWdpc3RyYXRpb24ubmVlZHNVcGRhdGUoKSkKKyAg
ICAgICAgcmVnaXN0cmF0aW9uLnNvZnRVcGRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgU2Vy
dmljZVdvcmtlckZldGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGVhOThmZjhiYWZlZGVi
N2M2ZDVhNWQzMjdhOGZhMTE5MWM2NzI0M2QuLjdjMDZjODM2N2ZlMDYyMTQ1OWVjNzZjMDRmOTgz
YTAxYjNmOTViZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC0zOSw2ICszOSw3IEBAIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU7CitjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAzZTJjYzViZGE3N2M5
Y2I5NzI2MjhkODYxYTVhMWI1ZWJiNTA5OGYzLi42OGFkZGVlY2VmNDdiZjdlYTdjNmI3YTFjNDM3
ZDRhYjc5ZmFiMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0
YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIEZldGNo
T3B0aW9uCiAgICAgaWYgKCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25u
ZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCksIGNh
Y2hlUG9saWN5KTsKKyAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9i
RGF0YS5pZGVudGlmaWVyKCksIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIGNhY2hlUG9saWN5
KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBm
NzZjYjk0MzUwYzVhMGUwM2M1MmVhNWE0ZTdmNmFhOTVjY2JhOTZjLi42NmQ2ZTVlZTFiMDhlY2Yy
ZTczOTVjMTk3YmQyOWY3NzNmYzNmNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJv
b2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNj
cmlwdEZldGNoSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
RmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3Jp
cHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSA9
IDA7CiAKICAgICAgICAgc3RydWN0IFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdCB7CiAgICAgICAg
ICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBmM2EyMjI0OGY3YjMxZmE3NTEwZWUzZjdjMzk1MTQwOGVj
NjA5YTAyLi5kNGQ5MTM3MzkwODdiY2IxNGQ4MjIzMTVhODhjZDg0OGM0ZjZjZjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtOTEsOSArOTEsOSBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQo
Y29uc3QgU2VydmljZVdvcmtlcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6VW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGpvYkRhdGFJZGVudGlmaWVy
LCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xp
Y3kpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgRmV0
Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OlN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoam9iRGF0YUlkZW50
aWZpZXIsIGNhY2hlUG9saWN5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCByZWdp
c3RyYXRpb25LZXksIGNhY2hlUG9saWN5KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VX
b3JrZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDIwOTJh
NzcwZTMyYzQwNzY0MmExMGE5NDE1M2YyOWI4OGQwMDVlNjYuLjNiOTNlMzgwNjg1ODkxYmI0OTg2
NDY4NjFmMjgwZDM0Nzc0NWQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRp
b25Kb2JJbkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXImLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNv
cmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlVW5y
ZWdpc3RyYXRpb25Kb2JJbkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFNjcmlw
dEZldGNoSW5DbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSkgZmluYWw7CisgICAgdm9pZCBzdGFy
dFNjcmlwdEZldGNoSW5DbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlUmVn
aXN0cmF0aW9uU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZpbmFsOwogICAg
IHZvaWQgdXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGZp
cmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4
YTYwMDZiZjhkYzEwYTNhMDNlMTdlYTg5MDY2MTI5MmNjMjFhMDU4Li5kYmE2NDdlYjdkZjcyNjUx
NjA0YmE1ZWVlMjYwZTZmOThkMzI1NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlv
biB7CiAgICAgSm9iUmVqZWN0ZWRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZl
cihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEg
cmVnaXN0cmF0aW9uLCBlbnVtIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAgICAgVW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2Vy
dmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0
YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCi0gICAgU3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyIGpvYkRhdGFJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hl
UG9saWN5KQorICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiAgICAgVXBkYXRlUmVnaXN0cmF0aW9uU3Rh
dGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgZW51bSBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogICAgIFVwZGF0ZVdvcmtlclN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJTdGF0ZSBzdGF0ZSkKICAgICBGaXJlVXBkYXRlRm91bmRFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDEwZmU5ZDMz
MTI1NDFiZmNhZjdiZGFhMjQ5ZWZlODY1NjM2MzcwMmMuLjEyZTAzNjk4MTQ0ZTcyYjU5M2YzY2I1
ZWJmMWI5NDM3Mzc3MjQxZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMi0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtTZXJ2aWNlIFdvcmtlcnNd
IEltcGxlbWVudCAiU29mdCBVcGRhdGUiIGFsZ29yaXRobQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNzAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNjE2MzQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAg
ICAgIFVuc2tpcCBzb2Z0IHVwZGF0ZSBXUFQgdGVzdCB0aGF0IG5vIGxvbmdlciB0aW1lcyBvdXQu
CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTEyLTIxICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLW5vbi1yZWNlbnQtdXNl
ci1pbnRlcmFjdGlvbi1hbmQtdHJ5LWFjY2Vzcy1mcm9tLXJpZ2h0LWZyYW1lLmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDg1NDExYmQ3YTc5ZmNiMDQxZDA2MWY5MmYyYThk
YzM5OTY2N2Q4MzAuLjhiOWMyZGU2YzBjZTUyZTUxM2RlNjY4MDk3ZWNlNmNmMDA2NzE2NzQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTIx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29y
a2Vyc10gSW1wbGVtZW50ICJTb2Z0IFVwZGF0ZSIgYWxnb3JpdGhtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MDIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM2MTYzNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisK
KyAgICAgICAgUmViYXNlbGluZSBTb2Z0IFVwZGF0ZSBXUFQgdGVzdCBub3cgdGhhdCBpdCBpcyBw
YXNzaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItbmF2aWdhdGlvbi1mZXRjaC1ldmVudC5odHRwcy1l
eHBlY3RlZC50eHQ6CisKIDIwMTctMTItMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSBzaG91bGQgc2V0IHRoZSBj
b3JyZWN0IGNvb2tpZSBhbmQgY2FjaGUgcGFydGl0aW9uaW5nIG9wdGlvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDM2ZjQ1MGRjMjc2MDEwMzJhN2E1ZTc4OWU1NTc3OTA4Y2I3NTNmYWQuLmYyMDZh
MDQzMmQ0NGRiZjJiYzkyYTZlMmY2MDA4MzJmM2Y1M2ZjZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTU0LDcgKzE1NCw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Bvc3RtZXNzYWdlLmh0dHBzCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9wb3N0bWVz
c2FnZS1tc2dwb3J0LXRvLWNsaWVudC5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNwb25k
LXdpdGgtYm9keS1hY2Nlc3NlZC1yZXNwb25zZS5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9z
YW5kYm94ZWQtaWZyYW1lLWZldGNoLWV2ZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Vw
ZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3VwZGF0ZS1hZnRlci1vbmVkYXkuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdXBkYXRl
LWJ5dGVjaGVjay5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtcmVjb3ZlcnkuaHR0
cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdXBkYXRlLWFm
dGVyLW5hdmlnYXRpb24tZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvdXBkYXRlLWFmdGVyLW5hdmlnYXRpb24tZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0
ZWQudHh0CmluZGV4IDJlMjkyZGYyOTRkZjdkOGFlNzg1ZTUwM2RjMGFkZWQzNzdjN2U2MDcuLmMz
NDM4YTA4YThjMDhhMmZhNTdhM2YzOGQwNzVhZjEyZmRiMjYwNmUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL3VwZGF0ZS1hZnRlci1uYXZpZ2F0aW9uLWZldGNoLWV2ZW50Lmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXItbmF2aWdhdGlv
bi1mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSwzIEBACiAKLQotSGFy
bmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgVXBkYXRlIHNo
b3VsZCBiZSB0cmlnZ2VyZWQgYWZ0ZXIgYSBuYXZpZ2F0aW9uIGZldGNoIGV2ZW50LiBUZXN0IHRp
bWVkIG91dAorUEFTUyBVcGRhdGUgc2hvdWxkIGJlIHRyaWdnZXJlZCBhZnRlciBhIG5hdmlnYXRp
b24gZmV0Y2ggZXZlbnQuIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>