<?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>201643</bug_id>
          
          <creation_ts>2019-09-10 07:16:22 -0700</creation_ts>
          <short_desc>Partition processes running service workers by session ID</short_desc>
          <delta_ts>2019-09-13 13:37:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=201730</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1569525</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-10 07:16:22 -0700</bug_when>
    <thetext>Partition processes running service workers by session ID</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569527</commentid>
    <comment_count>1</comment_count>
      <attachid>378461</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-10 07:40:38 -0700</bug_when>
    <thetext>Created attachment 378461
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569916</commentid>
    <comment_count>2</comment_count>
      <attachid>378557</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-11 05:41:30 -0700</bug_when>
    <thetext>Created attachment 378557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570215</commentid>
    <comment_count>3</comment_count>
      <attachid>378636</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-12 02:37:55 -0700</bug_when>
    <thetext>Created attachment 378636
Fix GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570234</commentid>
    <comment_count>4</comment_count>
      <attachid>378636</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-12 04:34:20 -0700</bug_when>
    <thetext>Comment on attachment 378636
Fix GTK

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2391
&gt; +                return;

I&apos;ll remove this weakThis, given the server is owned by the network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570258</commentid>
    <comment_count>5</comment_count>
      <attachid>378636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-12 08:26:25 -0700</bug_when>
    <thetext>Comment on attachment 378636
Fix GTK

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

&gt; Source/WebCore/platform/RegistrableDomainWithSessionID.h:33
&gt; +class RegistrableDomainWithSessionID {

Not a single time are we accessing the data members of this struct, this is over-engineered IMO and should be a simple std::pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570262</commentid>
    <comment_count>6</comment_count>
      <attachid>378636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-12 08:40:12 -0700</bug_when>
    <thetext>Comment on attachment 378636
Fix GTK

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2389
&gt; +        auto value = makeUnique&lt;SWServer&gt;(makeUniqueRef&lt;WebSWOriginStore&gt;(), WTFMove(path), sessionID, [weakThis = makeWeakPtr(this), this](auto&amp; domain, auto sessionID) {

Feels weird for the parameter to take in a sessionID given that it is called by the SWServer and the SWServer is associated to a single sessionID. I&apos;d rather we capture the sessionID in the lambda here and not pass the sessionID as parameter to the lambda.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:300
&gt; +    void createWorkerContextConnection(const WebCore::RegistrableDomain&amp;, PAL::SessionID);

I know this is existing code but could we rename to establishWorkerContextConnection() since it is not returning anything?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:302
&gt; +    WebCore::SWServer* existingSWServerForSession(PAL::SessionID sessionID) { return m_swServers.get(sessionID); }

swServerForSessionIfExists(), see https://trac.webkit.org/changeset/242273/webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570553</commentid>
    <comment_count>7</comment_count>
      <attachid>378724</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-13 05:06:45 -0700</bug_when>
    <thetext>Created attachment 378724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570554</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-13 05:09:39 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; Created attachment 378724 [details]
&gt; Patch

Updated according suggestions.
Some further refactoring can be done to stop passing sessionIDs where no longer strictly needed. I left that for follow-ups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570582</commentid>
    <comment_count>9</comment_count>
      <attachid>378724</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-13 08:23:37 -0700</bug_when>
    <thetext>Comment on attachment 378724
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570687</commentid>
    <comment_count>10</comment_count>
      <attachid>378724</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 13:36:14 -0700</bug_when>
    <thetext>Comment on attachment 378724
Patch

Clearing flags on attachment: 378724

Committed r249853: &lt;https://trac.webkit.org/changeset/249853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570688</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 13:36:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570689</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 13:37:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/55350650&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378461</attachid>
            <date>2019-09-10 07:40:38 -0700</date>
            <delta_ts>2019-09-11 05:41:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-201643-20190910164037.patch</filename>
            <type>text/plain</type>
            <size>51448</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2NDA5NTE3OTA5ZmZl
YTQ4ZTk2YjFlZDBiNWVhNTY2YWMwNWUxZS4uNWUzZTA1NzI2MjNhZDIzZDE1NTUyZjU4NmUzNDYx
NThkMjBkZDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0aXRpb24gcHJvY2Vz
c2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGJ5IHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Np
b25JRDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpIYXNoOjpoYXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRDo6SGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpSZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ+OjplbXB0eVZhbHVlKToKKyAg
ICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNz
aW9uSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRD46OmlzRGVsZXRlZFZhbHVl
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKToKKwogMjAxOS0w
OS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdl
YlByb2Nlc3MgcHJvY2Vzc0lkZW50aWZpZXIgdG8gaWRlbnRpZnkgU2VydmljZSBXb3JrZXIgY29u
bmVjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWU5NGQ3ZGJiMjllY2E4OTVlMjE3NDUwMTg0ODBkZmY5NzFi
M2M3YS4uOGMwNzBiNGQ1ZDMyMWY5YTVlYWE3ODczZWNiNTg5NjAwNTA3ZTFlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NyBAQAorMjAxOS0wOS0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUGFydGl0aW9uIHByb2Nlc3NlcyBydW5uaW5nIHNlcnZpY2Ugd29y
a2VycyBieSBzZXNzaW9uIElECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDE2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBmaXgtc2VydmljZS13b3JrZXItcHJpdmF0ZS1zZXNzaW9uCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hT
V0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmV4aXN0
aW5nU1dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNlc3Npb25JRCBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgor
ICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF93ZWJQYWdlQ29udGVudFByb2Nlc3NDb3VudF0pOgor
ICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV91c2VyQWdlbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyk6CisKIDIwMTktMDktMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBXZWJQcm9jZXNzIHByb2Nlc3NJZGVudGlmaWVyIHRvIGlkZW50aWZ5IFNl
cnZpY2UgV29ya2VyIGNvbm5lY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjhkMjdmYzQxZjQ3OGZiNDM2NTM1ZjA3YzYz
YWFlOWI2ZGI5M2U1YS4uMGU0ZDhmYzg5MDZkMzQyZmVmMGI1NjhiMjc4MjliYjEwMjg1MzMyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTEyNyw2ICsxMTI3LDcgQEAKIAkJNDFFOURDRTkyMzE5Q0E3NjAwRjM1OTQ5IC8qIE5l
dHdvcmtTZW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRTlEQ0U4MjMxOUNBNzUwMEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGMDYyMTQw
RjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEw
N0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggKi87IH07CiAJCTQxRjFEMjFGMEVG
MzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0MUY5NUY2NDIzMjdBQzlFMDA3MTYwMkQgLyogUmVnaXN0cmFi
bGVEb21haW5XaXRoU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUY5NUY2MjIzMjdBOUVCMDA3MTYwMkQgLyogUmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyQjFG
NERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MjdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyog
SlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwICovOyB9OwogCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyog
SlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggKi87IH07CkBAIC03NDEyLDYgKzc0MTMsNyBAQAogCQk0MUY1NEY4NzFD
NTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZldGNoUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRjU0Rjg4MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxRjU0Rjg5MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZldGNoUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxRjk1RjYyMjMyN0E5RUIwMDcxNjAyRCAvKiBSZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmFibGVEb21haW5X
aXRoU2Vzc2lvbklELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFCRDJCMUY0
REZFNDIwMDZBNkM5NyAvKiBET01DYWNoZUVuZ2luZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01DYWNoZUVuZ2luZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUZBQkQyRTFGNEUwMjUxMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NQ2FjaGVFbmdpbmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZCMjc4QzFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2lu
ZG93Q2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd0NhY2hlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjU1MDEsNiArMjU1MDMsNyBAQAogCQkJCUNBMTYzNURDMjA3
MkU3NjkwMEU3RDJDRSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8sCiAJCQkJOTgzMUFFNDkxNTQy
MjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8sCiAJCQkJNkI0RTg2MTIyMjFCNzEz
RjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggKi8sCisJCQkJNDFGOTVGNjIyMzI3QTlF
QjAwNzE2MDJEIC8qIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRC5oICovLAogCQkJCUNE
RkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwICovLAog
CQkJCUNERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAq
LywKIAkJCQlBMThGN0EzNTFFQ0E3MzY0MDA1OUUxRTEgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmNwcCAqLywKQEAgLTMxMjAzLDYgKzMxMjA2LDcgQEAKIAkJCQkyNkI5OTk4RjE4MDNBRTcy
MDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMx
QjRDMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWlu
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUY5NUY2NDIzMjdBQzlFMDA3MTYwMkQgLyogUmVnaXN0
cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUI5MTQxMDFG
RDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlz
ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWU4
YzYxOGQzOTQzYjI4ZWQ4OTFlMDdhMGY5ZDcxYWZlODM1NWRjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmgK
QEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
UmVnaXN0cmFibGVEb21haW4uaCIKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZWdpc3RyYWJsZURv
bWFpbldpdGhTZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICBS
ZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlw
ZSk7CisgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKFJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBBTDo6U2Vzc2lvbklEKTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbldpdGhTZXNzaW9uSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluID09IG90aGVyLm1fcmVnaXN0cmFibGVEb21haW4gJiYgbV9zZXNzaW9uSUQgPT0g
b3RoZXIubV9zZXNzaW9uSUQ7IH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKKyAgICBzdHJ1Y3QgSGFzaCB7
CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluV2l0
aFNlc3Npb25JRCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCYgYSwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBm
YWxzZTsKKyAgICB9OworCitwcml2YXRlOgorICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0
cmFibGVEb21haW47CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Cit9OworCitpbmxp
bmUgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpSZWdpc3RyYWJsZURvbWFpbldpdGhT
ZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgIDogbV9yZWdpc3Ry
YWJsZURvbWFpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAsIG1fc2Vzc2lvbklE
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQorCitpbmxpbmUgUmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklEOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQoV1RGOjpI
YXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICA6IG1fc2Vzc2lvbklEKFdURjo6SGFzaFRhYmxl
RW1wdHlWYWx1ZSkKK3sKK30KKworaW5saW5lIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25J
RDo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICA6IG1fcmVnaXN0
cmFibGVEb21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3Nlc3Npb25J
RChzZXNzaW9uSUQpCit7Cit9CisKK2lubGluZSB1bnNpZ25lZCBSZWdpc3RyYWJsZURvbWFpbldp
dGhTZXNzaW9uSUQ6Omhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJlZ2lzdHJhYmxlRG9t
YWluSGFzaCA9IG1fcmVnaXN0cmFibGVEb21haW4uaGFzaCgpOworICAgIHVuc2lnbmVkIHNlc3Np
b25IYXNoID0gV1RGOjpTZXNzaW9uSURIYXNoOjpoYXNoKG1fc2Vzc2lvbklEKTsKKworICAgIHVu
c2lnbmVkIGhhc2hDb2Rlc1syXSA9IHsgcmVnaXN0cmFibGVEb21haW5IYXNoLCBzZXNzaW9uSGFz
aCB9OworICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rl
cyk+KGhhc2hDb2Rlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNl
IFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQ+IHsKKyAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpIYXNoOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEPiB7
CisgICAgc3RhdGljIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCBlbXB0
eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklE
KEhhc2hUYWJsZUVtcHR5VmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCYgc2xvdCkgeyBz
bG90ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQmIHNsb3QpIHsgcmV0dXJuIHNsb3Qu
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IGQ2NjQ0Njg3NDAyN2UzZDdmN2I3N2VlZTZhM2M1MzliZjUyNmI1N2YuLmRiMmUyMTIy
YjNmYmVjNzk0YWNhOTAyYjVjYmQ1ZWFkNDE1NDQxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0yOTksOSArMjk5LDEw
IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllCiAgICAgICAgIG1fc2VydmVyLnN5bmNUZXJtaW5h
dGVXb3JrZXIoKndvcmtlcik7CiB9CiAKLVNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dP
cmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VE
aXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NXU2VydmVyOjpTV1NlcnZlcihV
bmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0
aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ3JlYXRlQ29u
dGV4dENvbm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShX
VEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAs
IG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsK
ICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBt
X3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkpCkBAIC01MzUsNyArNTM2LDcgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENv
bm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIHZvaWQg
U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBkYXRhKQogewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKGRhdGEu
c2NyaXB0VVJMKTsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4p
OworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKICAgICAg
ICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgW10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE+IHsgfTsKQEAgLTgyOCw4ICs4MjksMTAgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAg
ICAgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7CiAKICAgICAgICAgICAgIGlm
ICghbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhjbGllbnRSZWdpc3RyYWJs
ZURvbWFpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY2xp
ZW50UmVnaXN0cmFibGVEb21haW4pKSB7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbnRl
eHRDb25uZWN0aW9uKCpjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi0+Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4ucmVt
b3ZlKGNsaWVudE9yaWdpbik7CkBAIC04NTksNyArODYyLDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVt
b3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbksKICAgICBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAucmVtb3ZlKGtleSk7CiB9CiAKLWJv
b2wgU1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
K2Jvb2wgU1dTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMocmVnaXN0cmFi
bGVEb21haW4pOwogfQpAQCAtOTI4LDYgKzkzMSwzNiBAQCB2b2lkIFNXU2VydmVyOjpwZXJmb3Jt
R2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzKCkKICAgICAgICAgY2FsbGJhY2so
b3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKTsKIH0KIAordm9pZCBTV1NlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorewor
ICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5yZWdp
c3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5yZW1v
dmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBtX2NvbnRleHRDb25uZWN0
aW9ucy5hZGQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29ubmVjdGlvbik7Cit9
CisKK3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFp
biA9IGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRl
eHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb25uZWN0aW9uKTsKKwor
ICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9u
KHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENv
bm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQorewor
ICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21h
aW4pKTsKKyAgICBpZiAobV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0
cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9u
RG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIG1fY3JlYXRlQ29udGV4dENvbm5l
Y3Rpb25DYWxsYmFjayhyZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uSUQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5k
ZXggNWNjZjJmNDM5OTI5MDFmZjQ2OTY2ZTRiODk3MTdhODMzMWU3YjM0My4uMjM4ODFmNjBjMDBm
NzA1ZDJiMTAzMGY4MTAxYzAyZDA1NjE2ZTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTIzLDcgKzEyMyw5IEBAIHB1Ymxp
YzoKICAgICAgICAgVmVjdG9yPFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdD4gbV9yZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3RzOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihV
bmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VE
aXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVj
dGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIFBBTDo6U2Vzc2lvbklEKT47CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5p
cXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGly
ZWN0b3J5LCBQQUw6OlNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYm
KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhckFsbChXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0x
OTEsMTIgKzE5MywxOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmln
aW5zV2l0aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5
T3JpZ2luRGF0YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzQ29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
IGNvbnN0OwogCiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5KCkgeyBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkgPSB0cnVlOyB9CiAKICAgICB2b2lkIHJlbW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9u
TWFwKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQo
ZG9tYWluKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjcmlw
dEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYpOwogCkBAIC0yNTAsNiArMjU4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAg
IFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2NsZWFyQ29tcGxldGlvbkNhbGxi
YWNrczsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3Jp
Z2luRGF0YT4mKT4+IG1fZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzOworICAg
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+
IG1fY29udGV4dENvbm5lY3Rpb25zOworCisgICAgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2s7CisgICAgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggY2EyYjk2NGI3YTk2MTY1NTZlMGM3N2U3NDE0ZGE0YjY2YzVmZjJjZi4u
MTMwODcwMjExZWMyNmU0Mjg5YTA1NGNmNTM0MjU5OTIzZDlkY2Y1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDAsMjkgKzQwLDE4IEBAIHN0YXRpYyBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkCiAgICAgcmV0dXJuIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeVJlZ2lz
dHJhYmxlRG9tYWluKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25z
QnlPcmlnaW47Ci0gICAgcmV0dXJuIGNvbm5lY3Rpb25zQnlPcmlnaW47Ci19Ci0KLVNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCiAgICAgOiBtX2lkZW50aWZpZXIo
Z2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9y
ZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKKyAgICAsIG1fcmVnaXN0cmFibGVE
b21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3NlcnZlcihtYWtlV2Vh
a1B0cihzZXJ2ZXIpKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeVJlZ2lz
dHJhYmxlRG9tYWluKCkuYWRkKG1fcmVnaXN0cmFibGVEb21haW4sIHRoaXMpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgbV9zZXJ2ZXItPmFkZENv
bnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFs
bENvbm5lY3Rpb25zQnlSZWdpc3RyYWJsZURvbWFpbigpLnJlbW92ZShtX3JlZ2lzdHJhYmxlRG9t
YWluKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLX0KLQotU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCi17Ci0gICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zQnlSZWdpc3RyYWJsZURvbWFp
bigpLmdldChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVy
LT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigq
dGhpcyk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDNjMTIwZTg5ZmJhMTA1ZmEwOWFlZTA5ZTI0Mjcx
Y2UyOGYwNzY0YWQuLmRhYzZhZTM1MTJlMDVmMzI4ZTU1NDg1MjU1NDNiNGMyNGMwYjMwNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgUEFMIHsKIGNsYXNzIFNlc3Npb25JRDsKQEAgLTQ2LDcgKzQ2LDggQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7CiAKLWNsYXNzIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbj4geworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIApAQCAtNzcsMTggKzc4
LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJM
JiYgc2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcm
JiBtaW1lVHlwZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKTsKLQogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSA9IDA7CiAKIHByb3RlY3RlZDoK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiwgU1dTZXJ2ZXImKTsKIAogcHJp
dmF0ZToKICAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFdl
YWtQdHI8U1dTZXJ2ZXI+IG1fc2VydmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAppbmRleCA4MjBiMzBmN2E1ZWUyNjhiYTcyNGNlMzg0N2E3MjEzOTdlYTU3
YjBmLi5lYWI2ZjQyY2I1ZTFiNTY4YzdlYzNjMDhiMzg2OTc4NGVjOTRmY2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29y
a2VyOjpvcmlnaW4oKSBjb25zdAogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2Vy
dmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKCkpOworICAgIHJldHVybiBtX3NlcnZlciA/IG1fc2VydmVyLT5jb250ZXh0Q29u
bmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpIDogbnVsbHB0
cjsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
Y29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggYzdlYWI0NDMxZGRjZGEzYTE3ZGYxOTFmMmQ0MDg4MDdlZDVlMjQ1MC4uMDhhZmI1
MDQwMDJkZWM3OTM1NDZkMjNmZTQxZTNiMTQ0NjRmOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTI4NywxOCArMjg3LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7Ci0g
ICAgICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9zd0NvbnRleHRDb25uZWN0aW9uLT5y
ZWdpc3RyYWJsZURvbWFpbigpOwotCiAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+Y29u
bmVjdGlvbkNsb3NlZCgpOwotCi0gICAgICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNz
aW9uSUQ7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0
byYgc2VydmVyKSB7Ci0gICAgICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3Ry
YWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgICAgICAgICBp
ZiAoc2VydmVyLm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uSUQgPSBzZXJ2
ZXIuc2Vzc2lvbklEKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoc2Vzc2lvbklEKQotICAg
ICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbiwgKnNlc3Npb25JRCk7CisgICAgICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbiA9IG51bGxwdHI7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CkBAIC04ODgsMTMgKzg3OCwxMSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgcwogICAg
IHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
KFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCByZWdpc3RyYWJsZURvbWFpbiwgbV9jb25u
ZWN0aW9uLmdldCgpKTsKKyAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2VzcywgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksIG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihz
ZXNzaW9uSUQpLCBtX2Nvbm5lY3Rpb24uZ2V0KCkpOwogCi0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+
Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKLSAgICAgICAgc2VydmVyLnNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCptX3N3Q29udGV4dENvbm5lY3Rpb24pOwotICAg
IH0pOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQp
LnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCptX3N3Q29udGV4dENvbm5lY3Rpb24p
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA2NmE2MmYzMjAwNWUy
ODk4YzU3ZDA5MmQ3NjllYmY1YzRiN2JjNzQyLi5lNzBjYmU1NjU2ZDA1Mjc1NDljYzA0OWNjYzlj
NWI1NTYyMDE4ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yMTAsNyArMjEwLDcg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBlc3RhYmxp
c2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAg
IHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9u
cygpOwogI2VuZGlmCiAKQEAgLTMyMiw3ICszMjIsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOwotICAgIFJlZlB0cjxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENv
bm5lY3Rpb247CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTc4ZjAwMGQ1ODZh
YTMzZTQ3Y2MwNmQyNzk5ZjYyNGM2OTA1MzA0Yi4uYjk1NmJmZjIyMjNjOTY1YzBhNWFjYjQwMjcw
YjI1ZjVkNWJlZDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQot
ICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluKQorICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYK
IAogICAgIENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIHBvcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBlYzFhYTJkODZkNjAyOWI1NGJlNmU4MThkOWZkMTI2Yjg3ZDljOWM2Li41
MGRmYjlkYWU1MTg0YWI5ZDk2YTE4ZDFmYjZmOTE5MTAwZjQ5MjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjM4Niw3ICsyMzg2
LDExIEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hl
cmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGguaXNFbXB0eSgpKTsKICAgICAgICAgCi0gICAg
ICAgIGF1dG8gdmFsdWUgPSBtYWtlVW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNX
T3JpZ2luU3RvcmU+KCksIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCk7CisgICAgICAgIGF1dG8g
dmFsdWUgPSBtYWtlVW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3Rv
cmU+KCksIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIHRoaXNdKGF1dG8mIGRvbWFpbiwgYXV0byBzZXNzaW9uSUQpIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY3Jl
YXRlV29ya2VyQ29udGV4dENvbm5lY3Rpb24oZG9tYWluLCBzZXNzaW9uSUQpOworICAgICAgICB9
KTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI0MDMsMjQg
KzI0MDcsOCBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV09y
aWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRAogICAgIHJldHVybiAmc3RhdGljX2Nh
c3Q8V2ViU1dPcmlnaW5TdG9yZSY+KHN3U2VydmVyLT5vcmlnaW5TdG9yZSgpKTsKIH0KIAotYm9v
bCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBj
b25zdAotewotICAgIHJldHVybiBXVEY6OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0o
YXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7
Ci0gICAgfSk7Ci19Ci0KLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogTmV0d29ya1By
b2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCi17Ci0gICAgcmV0dXJuIG1f
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKTsKLX0KLQot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGVu
ZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0
cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCAwKTsKIH0KIApAQCAtMjQ0NSwxOSArMjQzMyw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAgICAgICAgIHN0b3JlLT51bnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQotewotICAgIEFTU0VSVCghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKLSAgICBtX3BlbmRpbmdD
b25uZWN0aW9uRG9tYWlucy5yZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsK
LSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLnJlZ2lzdHJh
YmxlRG9tYWluKCksICZjb25uZWN0aW9uKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6dW5y
ZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25z
LmdldChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpID09ICZjb25uZWN0aW9uKTsKLSAg
ICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJh
YmxlRG9tYWluKCkpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKIHsKICAgICBpZiAobV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGI4ZGRjOGY0NTg5MTU2MDUwMzJl
MjJjZmU5MDgyNjZiNTYwMmQyMjEuLjI0OWRhYzkwM2YwNmM5Njk5MWFiMjAxMmZiMzc3NmNjM2Rk
MTBiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTI5NywxNyArMjk3LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgdm9pZCBjcmVhdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICAKKyAgICBX
ZWJDb3JlOjpTV1NlcnZlciogZXhpc3RpbmdTV1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3U2VydmVycy5nZXQoc2Vzc2lvbklEKTsgfQogICAg
IFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgcmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgdW5yZWdpc3RlclNXQ29u
dGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7Ci0KLSAgICBi
b29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNo
U1dTZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTV1NlcnZlciYpPiYpOwogI2Vu
ZGlmCiAKQEAgLTUzOSwxMSArNTM1LDkgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fc3RvcmFnZVRh
c2tNdXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Kj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fc2hvdWxkRGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgSGFz
aE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKICAgICBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBt
X3N3U2VydmVyczsKLSAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3Bl
bmRpbmdDb25uZWN0aW9uRG9tYWluczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGRlYWUyYjM5Y2I0Yjlk
N2E1ZTA1ZDFkN2RiMTIyYjVjN2Q0YTY2YWYuLjljZWY5ZGEyYzZmMGVlNDhiMjdlOTdlYjgxYTM2
YzJmZmJhZGRmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBA
IC0xODEsNyArMTgxLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmkKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQotICAgICAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJl
Z2lzdHJhYmxlRG9tYWluKCksIHNlcnZlcigpLnNlc3Npb25JRCgpKTsKKyAgICAgICAgICAgIHNl
cnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4o
KSk7CiAKICAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywg
ZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmb3JtRGF0YSA9IFdURk1v
dmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBzaG91bGRTa2lwRmV0
Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKV0oYXV0byogY29udGV4dENv
bm5lY3Rpb24pIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFk
ZXN0aW5hdGlvbldvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihkZXN0aW5hdGlvbldvcmtl
ci0+cmVnaXN0cmFibGVEb21haW4oKSwgc2VydmVyKCkuc2Vzc2lvbklEKCkpOworICAgICAgICBz
ZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbihkZXN0aW5hdGlvbldvcmtlci0+cmVnaXN0
cmFibGVEb21haW4oKSk7CiAKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoaXMgc3BlY2lmaWMgd29y
a2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiByZW1v
dmVkKQogICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFtkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZSgqc291cmNlRGF0YSldKGF1dG8qIGNvbnRleHRD
b25uZWN0aW9uKSBtdXRhYmxlIHsKQEAgLTI0NCw4ICsyNDQsOCBAQCB2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgZAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIo
U2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewogICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IHJlZ2lzdHJhYmxlRG9tYWluKGpvYkRhdGEuc2NyaXB0VVJMKTsKLSAgICBpZiAoIW1fbmV0d29y
a1Byb2Nlc3MtPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4sIHNlcnZlcigpLnNlc3Npb25J
RCgpKTsKKyAgICBpZiAoIXNlcnZlcigpLmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBTV1NFUlZFUkNPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiU2NoZWR1bGluZyBTZXJ2aWNlV29ya2VyIGpvYiAlcyBp
biBzZXJ2ZXIiLCBqb2JEYXRhLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIoKSA9PSBqb2JEYXRhLmNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmNsaWVu
dE9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAg
aWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4geyBvcmln
aW4gfSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gc2VydmVyKCku
Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiB7
IG9yaWdpbiB9KSkgewogICAgICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0
PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbik7CiAK
ICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLmlzVGhyb3R0bGVhYmxlKCkgPT0gbV9pc1Rocm90
dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggN2IxZTkyMDcxMDljZDE0NTA3NmI5YWE3MjAwOTk1MTE5ZjM4YmVlNS4u
OTIxMDQzYzJiOGZkZjQxYThhY2NjOWNjZDJhNzk2YjhlNGZjNjZlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQxLDE3ICs0
MSwxNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
bikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbikK
K1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlciwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQorICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1v
dmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2ZXIpCiAgICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3Mp
CisgICAgLCBtX3Nlc3Npb25JRChzZXJ2ZXIuc2Vzc2lvbklEKCkpCiB7Ci0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAogV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT51bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlv
bigqdGhpcyk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CkBAIC0xMjcsMTggKzEyNiwx
MCBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdh
aXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6RGlkRmluaXNoU2tpcFdhaXRpbmcgeyBjYWxsYmFja0lEIH0p
OwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1h
eU5vTG9uZ2VyQmVOZWVkZWQoKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBpZiAobV9uZXR3b3JrUHJvY2Vz
cy0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4oKSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQs
IHRlcm1pbmF0aW5nIGl0Iik7CiAgICAgdGVybWluYXRlKCk7Ci0KLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgewotICAgICAgICBzZXJ2ZXIu
bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJs
ZURvbWFpbigpKTsKLSAgICB9KTsKLQogICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDIw
ZWMxNWU2YmY5OWY4ZWQ2OTJkMGJjMmI5ZDJkYTVkMGU3ZjhjMmUuLjcwMWVkYjAzMzBkZjEyODEx
NjcyMDJhZTgxNjI2OTc3NWY5NTkxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDEwICs1Miw4IEBAIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMg
V2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikpOwotICAgIH0KKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3Jl
OjpTV1NlcnZlciYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIH5XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCkBA
IC03NSwxMCArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wg
aXNUaHJvdHRsZWFibGUpOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVGhyb3R0bGVhYmxlOyB9CiAKLXByaXZhdGU6Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKLSAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCk7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAorcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbDsKQEAgLTk3LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFNr
aXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFsOwogCi0gICAgdm9pZCBjb25uZWN0
aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgY29ubmVjdGlvbklzTm9M
b25nZXJOZWVkZWQoKSBmaW5hbDsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBjQ29u
bmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CkBAIC0x
MDUsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0Y2hJ
ZGVudGlmaWVyczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wgbV9pc1Ro
cm90dGxlYWJsZSB7IHRydWUgfTsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07
IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KaW5kZXggYTJiOTVlNDQyZGY5ZGZhM2YwOTY3ZWQ2OGQ3ZThlOTg0MGQzZWUy
MC4uZjVjYTQ2NzU4OTVlMTJlNmI2ZDkzOGVkN2JjOGQ3ZjVlNThiMDhjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTUx
NiwxMSArNTE2LDcgQEAgLSAoc2l6ZV90KV93ZWJQYWdlQ29udGVudFByb2Nlc3NDb3VudAogewog
ICAgIGF1dG8gYWxsV2ViUHJvY2Vzc2VzID0gX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKTsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3Nl
cyA9IF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXMoKTsKLSAgICBpZiAoc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBhbGxXZWJQcm9jZXNz
ZXMuc2l6ZSgpOwotCi0gICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5zaXplKCkgLSBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzLnNpemUoKTsKKyAgICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUo
KSAtIF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpOwogI2Vsc2UKICAg
ICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUoKTsKICNlbmRpZgpAQCAtNTU3LDcgKzU1Myw3
IEBAIC0gKE5TVUludGVnZXIpX3Byb2Nlc3NDYWNoZVNpemUKIC0gKHNpemVfdClfc2VydmljZVdv
cmtlclByb2Nlc3NDb3VudAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICByZXR1
cm4gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGllcygpLnNpemUoKTsKKyAgICByZXR1
cm4gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCk7CiAjZWxzZQogICAg
IHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggNmVjODNlOGY2ODFiZmM5NjMzMzFhOGJmNTk5NzhlNWY2MjE0NzdjZi4uZGI3
NjRkZWU1MGMyMDFjNjBmMmZlMGU5NTc3MWE5MjY3OGYwNGJkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzAxLDE0ICs3MDEsMTUgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm8KICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICB9CiAKLSAgICBpZiAobV9zZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICBSZWdpc3Ry
YWJsZURvbWFpbldpdGhTZXNzaW9uSUQgcmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsg
UmVnaXN0cmFibGVEb21haW4geyByZWdpc3RyYWJsZURvbWFpbiB9LCBzZXNzaW9uSUQgfTsKKyAg
ICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
V2l0aFNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAogICAg
IGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqd2Vi
c2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5yZWdpc3RyYWJsZURvbWFpbigpLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LnB0cigpKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1v
dmUocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSwgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5wdHIoKSk7CiAKICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGluaXRp
YWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRh
U3RvcmUpOwpAQCAtMTEzMyw3ICsxMTM0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29u
bmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7
Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LnRha2UocHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgIGF1dG8qIHJlbW92
ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoUmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlbW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBwcm9jZXNzKTsKICAgICAgICAgdXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCA4YTE4N2NlYTU4ZDcwN2RlYmY4ZGM0YTgxZjI0MzIxYjgxOWU4
NTkyLi5hZDhmMWQzMGExYTJmOTQwZjA5NGM3NTRjZWU5ZDdiZmE2YTViZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmln
YXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hh
c2guaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0zODIsNyArMzgyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwotICAg
IGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYlByb2Nlc3NQcm94
eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtl
clByb2Nlc3NlczsgfQorICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsgfQogICAgIHZvaWQg
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7
IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAg
ICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQogICAg
IHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCk7CkBAIC02MjAsNyArNjIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlByb2Nlc3NQcm94eSog
bV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViUHJvY2Vz
c1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkqPiBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA1NjYyMGY2NzJiZDcyN2ZjYTE5MzQ4MjNk
MDhlYTkzNzcyZmYxN2Q4Li5lODlkMGIzN2RlODkxMjBlNjQzYjQ3MzE3NDFkMjhhMTE2Mzg2YTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IFJlZjxEb2N1bWVudExvYWRlcj4gU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBSCiAgICAgcmV0dXJuIFdlYkRvY3VtZW50TG9hZGVyOjpj
cmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQogCi1XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdU
Rk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKQEAgLTEw
MCw3ICsxMDAsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7CiAgICAgdXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFi
bGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdp
c3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggYjVhMmM2OGFlMjAxZTVhYjcyM2M2
MzAzMzMzMTk5ZjFlNTJiZTMwNC4uN2FiOGVlMmQwMGQzMzdlYTk3ZjMxNGUwMTYwYTU3NGFmMmQy
ODA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBA
IHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQwYTYwMGFlNTFiMjg2NGFjNmFiYzY3ZDIzMGE1Yjll
YjBjMmJhYS4uMjY2MjFmMzgzYzc5MTMwOTgwNjdlYWI0YzFkMTQyNmRkMjk3NWI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxMSwxMyArMTgxMSwxMyBA
QCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQor
dm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29y
a2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNv
bm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0
aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRv
JiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24o
bWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwg
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwg
cGFnZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENv
bm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29u
bmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgcGFnZUdyb3Vw
SUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
czo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378557</attachid>
            <date>2019-09-11 05:41:30 -0700</date>
            <delta_ts>2019-09-12 02:37:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201643-20190911144128.patch</filename>
            <type>text/plain</type>
            <size>58862</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2NDA5NTE3OTA5ZmZl
YTQ4ZTk2YjFlZDBiNWVhNTY2YWMwNWUxZS4uYjQxYjljMTM2MDU1ZTdlNGJlYmIzMmYwYzdhMGIx
Yzg4YTE3YmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0aXRpb24gcHJvY2Vz
c2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGJ5IHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBSZWdpc3RyYWJsZURv
bWFpbldpdGhTZXNzaW9uSUQgYXMgYSBzdHJ1Y3R1cmUgc3RvcmluZyBhIHJlZ2lzdHJhYmxlIGRv
bWFpbiBhbmQgYSBzZXNzaW9uSUQuCisgICAgICAgIFRoaXMgaXMgdXNlZCBhcyBhIGtleSB0byBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMgbWFwIGJ5IFdlYlByb2Nlc3NQb29sLgorCisgICAgICAg
IE1vdmUgdGhlIGNyZWF0aW9uIG9mIHNlcnZpY2Ugd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBt
YW5hZ2VtZW50IHRvIFNXU2VydmVyLgorICAgICAgICBUaGlzIGFsbG93cyB0byBwYXJ0aXRpb24g
c2VydmljZSB3b3JrZXIgY29udGV4dCBjb25uZWN0aW9ucyBieSByZWdpc3RyYWJsZSBkb21haW4g
YW5kIHNlc3Npb25JRC4KKyAgICAgICAgV2ViS2l0MiBpcyBzdGlsbCByZXNwb25zaWJsZSB0byBj
cmVhdGUgdGhlIElQQyBjcmVhdGlvbiB0aHJvdWdoIGEgRnVuY3Rpb24gZ2l2ZW4gdG8gU1dTZXJ2
ZXIgYXQgY29uc3RydWN0aW9uCisgICAgICAgIHRpbWUuCisgICAgICAgIFNXU2VydmVyIG5vdyBr
ZWVwcyBhIG1hcCBvZiByZWdpc3RyYWJsZSBkb21haW4gLT4gY29udGV4dCBjb25uZWN0aW9uIHRv
IHVzZSBmb3IgcnVubmluZyB3b3JrZXJzLgorICAgICAgICBJdCBhbHNvIGtlZXBzIGEgbWFwIG9m
IGJlaW5nLWNyZWF0ZWQgY29ubmVjdGlvbnMuCisgICAgICAgIEluIGNhc2UgYSBjb250ZXh0IGNv
bm5lY3Rpb24gaXMgcmVtb3ZlZCBmcm9tIHRoZSBTV1NlcnZlciwgdGhlIFNXU2VydmVyIHdpbGwg
bm90aWZ5IGFsbCByZWxhdGVkIHdvcmtlciBpbnN0YW5jZXMKKyAgICAgICAgdGhhdCB0aGV5IGFy
ZSBub3QgcnVubmluZy4gVGhlIFNXU2VydmVyIHdpbGwgYWxzbyByZWNyZWF0ZSBhIGNvbnRleHQg
Y29ubmVjdGlvbiBpZiBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgcmVtb3ZpbmcgdGhl
IGdsb2JhbCBzZXJ2ZXIgY29udGV4dCBjb25uZWN0aW9uIG1hcC4KKyAgICAgICAgTWFrZSBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gbm8gbG9uZ2VyIHJlZmNvdW50ZWQgdG8gc2ltcGxpZnkg
dGhlIGxpZmV0aW1lIG1hbmFnZW1lbnQuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdC4K
KworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklE
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ6Okhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpIYXNoOjplcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ6OlJlZ2lzdHJhYmxlRG9t
YWluV2l0aFNlc3Npb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldp
dGhTZXNzaW9uSUQ6Omhhc2ggY29uc3QpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRD46OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25J
RD46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEPjo6aXNEZWxldGVkVmFsdWUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
Ojp0cnlJbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjpuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyOjpjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24pOgorCiAyMDE5LTA5LTA5
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgV2ViUHJv
Y2VzcyBwcm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlZTk0ZDdkYmIyOWVjYTg5NWUyMTc0NTAxODQ4MGRmZjk3MWIzYzdh
Li5lYWUyNjg1NmQ1M2QzYTM5OGFjMTIzMzAyODYxYzEzMjhkYzdlMjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE5LTA5LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBQYXJ0aXRpb24gcHJvY2Vzc2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJz
IGJ5IHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMTY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSB0aGUgbWFuYWdlbWVudCBvZiBzZXJ2ZXIgY29udGV4dCBjb25uZWN0aW9u
cyBmcm9tIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICBUaGUgV2ViUHJvY2Vzc1Bvb2wgc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBtYXAgaXMgbm93IGtleWVkIGJ5IGJvdGggcmVnaXN0cmFibGUgZG9t
YWluIGFuZCBzZXNzaW9uSUQuCisgICAgICAgIFVwZGF0ZSBXZWJQcm9jZXNzUG9vbCB0byBvbmx5
IGV4cG9zZSB0aGUgbnVtYmVyIG9mIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyBpbnN0ZWFkIG9m
IHRoZSBmdWxsIG1hcC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV1NlcnZlckZvclNlc3Npb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2No
ZWR1bGVKb2JJblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVk
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlBh
Z2VDb250ZW50UHJvY2Vzc0NvdW50XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzQ291bnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjptX3VzZXJBZ2VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKwogMjAxOS0wOS0wOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdlYlByb2Nlc3MgcHJvY2Vz
c0lkZW50aWZpZXIgdG8gaWRlbnRpZnkgU2VydmljZSBXb3JrZXIgY29ubmVjdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
OGQyN2ZjNDFmNDc4ZmI0MzY1MzVmMDdjNjNhYWU5YjZkYjkzZTVhLi4wZTRkOGZjODkwNmQzNDJm
ZWYwYjU2OGIyNzgyOWJiMTAyODUzMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTI3LDYgKzExMjcsNyBAQAogCQk0MUU5
RENFOTIzMTlDQTc2MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFOURDRTgyMzE5Q0E3NTAwRjM1OTQ5
IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UuaCAqLzsgfTsKIAkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZy
YW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRjk1RjY0MjMy
N0FDOUUwMDcxNjAyRCAvKiBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjk1RjYyMjMyN0E5RUIw
MDcxNjAyRCAvKiBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUZBQkQyRDFGNERGRTRBMDA2
QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRkFCRDJCMUY0REZFNDIwMDZBNkM5NyAvKiBET01DYWNoZUVuZ2lu
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQy
N0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI3REE3MUIxMzcz
NURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgKi87IH07CiAJCTQy
N0RBNzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFDMTM3MzVE
RkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLzsgfTsKQEAgLTc0MTIs
NiArNzQxMyw3IEBACiAJCTQxRjU0Rjg3MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hSZXF1ZXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGNTRGODgxQzUwQzRGNjAwMzM4NDg4
IC8qIEZldGNoUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRj
aFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGNTRGODkxQzUwQzRG
NjAwMzM4NDg4IC8qIEZldGNoUmVxdWVzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmV0
Y2hSZXF1ZXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGOTVGNjIyMzI3
QTlFQjAwNzE2MDJEIC8qIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFGQUJEMkIxRjRERkU0MjAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNhY2hlRW5naW5lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFCRDJFMUY0RTAyNTEwMDZBNkM5NyAvKiBE
T01DYWNoZUVuZ2luZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01DYWNoZUVuZ2luZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkIyNzhD
MUYzNEMyODIwMDc5NTQ4NyAvKiBET01XaW5kb3dDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
V2luZG93Q2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTUwMSw2ICsy
NTUwMyw3IEBACiAJCQkJQ0ExNjM1REMyMDcyRTc2OTAwRTdEMkNFIC8qIFJlZmVycmVyUG9saWN5
LmNwcCAqLywKIAkJCQk5ODMxQUU0OTE1NDIyNUEyMDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3ku
aCAqLywKIAkJCQk2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4u
aCAqLywKKwkJCQk0MUY5NUY2MjIzMjdBOUVCMDA3MTYwMkQgLyogUmVnaXN0cmFibGVEb21haW5X
aXRoU2Vzc2lvbklELmggKi8sCiAJCQkJQ0RGQzM2MDMxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQ0RGQzM2MDQxOENBNjFDMjAwMjZFNTZGIC8q
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJCUExOEY3QTM1MUVDQTczNjQwMDU5RTFF
MSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovLApAQCAtMzEyMDMsNiArMzEyMDYs
NyBAQAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEMwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjRFODYxMzIyMUI3MTNGMDAy
MkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRjk1RjY0
MjMyN0FDOUUwMDcxNjAyRCAvKiBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQjkxNDEwMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25E
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCOTE0MTExRkQyNzgyRDAwRUUyODU5IC8q
IFJlZ2lzdHJhdGlvblN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTc4RjQzRjFERTBCNjMw
MDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbldpdGhTZXNz
aW9uSUQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5ZThjNjE4ZDM5NDNiMjhlZDg5MWUwN2EwZjlkNzFhZmU4
MzU1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3Ry
YWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgorI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWdpc3Ry
YWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRChXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpOworICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRChX
VEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbldpdGhT
ZXNzaW9uSUQoUmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOworCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4gPT0gb3RoZXIubV9yZWdpc3RyYWJs
ZURvbWFpbiAmJiBtX3Nlc3Npb25JRCA9PSBvdGhlci5tX3Nlc3Npb25JRDsgfQorCisgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVE
b21haW4uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdDsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEJiBrZXkpIHsgcmV0dXJuIGtleS5o
YXNoKCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEJiBhLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKK3ByaXZhdGU6CisgICAg
UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQQUw6OlNlc3Npb25J
RCBtX3Nlc3Npb25JRDsKK307CisKK2lubGluZSBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9u
SUQ6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRChXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgOiBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKQorICAgICwgbV9zZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCit7
Cit9CisKK2lubGluZSBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ6OlJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRChXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKQorICAgIDog
bV9zZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlKQoreworfQorCitpbmxpbmUgUmVn
aXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9u
SUQoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQorICAgIDogbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKK3sKK30KKworaW5saW5lIHVu
c2lnbmVkIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRDo6aGFzaCgpIGNvbnN0Cit7Cisg
ICAgdW5zaWduZWQgcmVnaXN0cmFibGVEb21haW5IYXNoID0gbV9yZWdpc3RyYWJsZURvbWFpbi5o
YXNoKCk7CisgICAgdW5zaWduZWQgc2Vzc2lvbkhhc2ggPSBXVEY6OlNlc3Npb25JREhhc2g6Omhh
c2gobV9zZXNzaW9uSUQpOworCisgICAgdW5zaWduZWQgaGFzaENvZGVzWzJdID0geyByZWdpc3Ry
YWJsZURvbWFpbkhhc2gsIHNlc3Npb25IYXNoIH07CisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6
aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRD4geworICAgIHVz
aW5nIEhhc2ggPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ6Okhhc2g7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbldpdGhTZXNzaW9uSUQ+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW5XaXRoU2Vzc2lvbklEIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQoSGFzaFRhYmxlRW1wdHlWYWx1ZSk7IH0KKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEJiBzbG90KSB7IHNsb3QgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bldpdGhTZXNzaW9uSUQoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Np
b25JRCYgc2xvdCkgeyByZXR1cm4gc2xvdC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZDY2NDQ2ODc0MDI3ZTNkN2Y3Yjc3ZWVl
NmEzYzUzOWJmNTI2YjU3Zi4uY2UwMzE1ZjJjYTVhYjJlYTliMzA2ZWE5YjU0MjE1Y2RiMWVmMWJh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTI5OSw5ICsyOTksMTAgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6
c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWUKICAg
ICAgICAgbV9zZXJ2ZXIuc3luY1Rlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKIH0KIAotU1dTZXJ2
ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJp
bmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQorU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdp
blN0b3JlLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiAgICAgOiBtX29yaWdpblN0b3JlKFdURk1vdmUob3JpZ2luU3RvcmUpKQogICAgICwgbV9z
ZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9jcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxi
YWNrKFdURk1vdmUoY2FsbGJhY2spKQogewogICAgIEFTU0VSVCghcmVnaXN0cmF0aW9uRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogICAg
IGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTUzNSw3ICs1MzYsNyBAQCB2b2lk
IFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYgagogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiB7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4oZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byogY29ubmVjdGlvbiA9IGNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAg
IGlmICghY29ubmVjdGlvbikgewogICAgICAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuZW5zdXJl
KFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gVmVj
dG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4geyB9OwpAQCAtNTQ2LDEwICs1NDcsMTAgQEAg
dm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmIGRhdGEpCiAgICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwogfQogCi12b2lkIFNX
U2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQordm9pZCBTV1NlcnZlcjo6Y29udGV4dENv
bm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5l
Y3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucy52YWx1
ZXMoKSkKLSAgICAgICAgY29ubmVjdGlvbi0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBjb25uZWN0aW9uLT5jb250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOwogCiAgICAgYXV0byBwZW5kaW5nQ29udGV4
dERhdGFzID0gbV9wZW5kaW5nQ29udGV4dERhdGFzLnRha2UoY29udGV4dENvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKSk7CiAgICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHRE
YXRhcykKQEAgLTgyOCw4ICs4MjksMTAgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAg
ICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7CiAKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhjbGllbnRSZWdpc3RyYWJsZURv
bWFpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVu
dFJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29u
bmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50
UmVnaXN0cmFibGVEb21haW4pKSB7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbnRleHRD
b25uZWN0aW9uKCpjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4ucmVtb3Zl
KGNsaWVudE9yaWdpbik7CkBAIC04NTksNyArODYyLDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3Zl
RnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bksKICAgICBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAucmVtb3ZlKGtleSk7CiB9CiAKLWJvb2wg
U1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK2Jv
b2wgU1dTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMocmVnaXN0cmFibGVE
b21haW4pOwogfQpAQCAtOTI4LDYgKzkzMSwzOCBAQCB2b2lkIFNXU2VydmVyOjpwZXJmb3JtR2V0
T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzKCkKICAgICAgICAgY2FsbGJhY2sob3Jp
Z2luc1dpdGhSZWdpc3RyYXRpb25zKTsKIH0KIAordm9pZCBTV1NlcnZlcjo6YWRkQ29udGV4dENv
bm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5yZWdpc3Ry
YWJsZURvbWFpbigpKSk7CisKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUo
Y29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBtX2NvbnRleHRDb25uZWN0aW9u
cy5hZGQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29ubmVjdGlvbik7CisKKyAg
ICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKK3sKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5n
ZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENv
bm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbWFya0FsbFdvcmtlcnNG
b3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
aWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluKTsKK30KKwordm9pZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghbV9j
b250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBpZiAo
bV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQocmVn
aXN0cmFibGVEb21haW4pOworICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhy
ZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNWNjZjJmNDM5OTI5
MDFmZjQ2OTY2ZTRiODk3MTdhODMzMWU3YjM0My4uNWJhNWI0NDJiMzU3Nzk3ZWFjMTdkM2IxNzc2
YTk5YmFmOWVkODk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVu
dElkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRDb25u
ZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKICAgICAg
ICAgU1dTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CiAgICAgICAgIGNvbnN0
IFNXU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQpAQCAtMTIzLDcg
KzEyMyw5IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVz
dD4gbV9yZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgU3RyaW5nJiYgcmVnaXN0
cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB1c2luZyBDcmVh
dGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6U2Vzc2lvbklEKT47CisgICAgV0VCQ09SRV9FWFBP
UlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIFN0cmluZyYmIHJlZ2lzdHJh
dGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5l
Y3Rpb25DYWxsYmFjayYmKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbChXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CkBAIC0xNzIsOCArMTc0LDYgQEAgcHVibGljOgogICAgIHZvaWQgbWF0Y2hBbGwo
U1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwg
U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpOwogICAgIHZvaWQgY2xhaW0o
U1dTZXJ2ZXJXb3JrZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7Ci0gICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U1dTZXJ2ZXIqPiYgYWxsU2VydmVy
cygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJB
Z2VudCk7CkBAIC0xOTEsMTIgKzE5MSwyMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCkgeyBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXkgPSB0cnVlOyB9CiAKICAgICB2b2lkIHJlbW92ZUZyb21TY29wZVRv
UmVnaXN0cmF0aW9uTWFwKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDb250ZXh0
Q29ubmVjdGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25u
ZWN0aW9ucy5nZXQoZG9tYWluKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChDb25u
ZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CiAKQEAgLTI1MCw2ICsy
NTgsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4+IG1fY2xlYXJDb21wbGV0aW9uQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxG
dW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPj4gbV9nZXRP
cmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3M7CisgICAgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVjdGlv
bnM7CisKKyAgICBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrIG1fY3JlYXRlQ29udGV4
dENvbm5lY3Rpb25DYWxsYmFjazsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWluczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBjYTJi
OTY0YjdhOTYxNjU1NmUwYzc3ZTc0MTRkYTRiNjZjNWZmMmNmLi5mYTFjNGNkN2NiY2RlMDdkZmYw
Mjg4MmQwYmQxMTEwZDg0YTRiZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCkBAIC00MCwyOSArNDAsMTQgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAg
ICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKIH0KIAotc3RhdGljIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9uc0J5UmVnaXN0cmFibGVEb21haW4oKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKLSAgICByZXR1
cm4gY29ubmVjdGlvbnNCeU9yaWdpbjsKLX0KLQotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbikK
ICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyKCkpCi0gICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKQor
ICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlSZWdpc3RyYWJsZURvbWFpbigpLmFk
ZChtX3JlZ2lzdHJhYmxlRG9tYWluLCB0aGlzKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29u
bmVjdGlvbnNCeVJlZ2lzdHJhYmxlRG9tYWluKCkucmVtb3ZlKG1fcmVnaXN0cmFibGVEb21haW4p
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotfQotCi1TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbikKLXsKLSAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNCeVJlZ2lzdHJhYmxlRG9tYWluKCku
Z2V0KHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggM2MxMjBlODlmYmEx
MDVmYTA5YWVlMDllMjQyNzFjZTI4ZjA3NjRhZC4uOGZlYzhlOGZjNjE1YTU1OTU3ODFhYmM1NDYz
YjM5ODFkNjQ2OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgUEFM
IHsKIGNsYXNzIFNlc3Npb25JRDsKQEAgLTQ2LDcgKzQ1LDggQEAgc3RydWN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0
cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7CiAKLWNsYXNzIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbj4geworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIApAQCAtNzcsMTQgKzc3LDEyIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0
VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlw
ZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKTsKLQogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJik7CiAKIHByaXZhdGU6CiAgICAg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCmluZGV4IDgyMGIzMGY3YTVlZTI2OGJhNzI0Y2UzODQ3YTcyMTM5N2VhNTdiMGYu
LmVhYjZmNDJjYjVlMWI1NjhjN2VjM2MwOGIzODY5Nzg0ZWM5NGZjYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIGNvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6
Om9yaWdpbigpIGNvbnN0CiAKIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJX
b3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4oKSk7CisgICAgcmV0dXJuIG1fc2VydmVyID8gbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgOiBudWxscHRyOwog
fQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25z
dCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBjN2VhYjQ0MzFkZGNkYTNhMTdkZjE5MWYyZDQwODgwN2VkNWUyNDUwLi42OTljNTAyNjky
ODUwYzk1ZTVlNTRlMTYxM2ZmYzhmZWQ1MjIyMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtMjg2LDIwICsyODYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobV9zd0Nv
bnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9z
d0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigpOwotCi0gICAgICAgIG1fc3dD
b250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotCi0gICAgICAgIE9wdGlvbmFs
PFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZv
ckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7Ci0gICAgICAgICAgICBzZXJ2ZXIubWFy
a0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURv
bWFpbik7Ci0gICAgICAgICAgICBpZiAoc2VydmVyLm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAg
ICAgICBzZXNzaW9uSUQgPSBzZXJ2ZXIuc2Vzc2lvbklEKCk7Ci0gICAgICAgIH0pOwotICAgICAg
ICBpZiAoc2Vzc2lvbklEKQotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgKnNlc3Npb25JRCk7Ci0g
ICAgfQorICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pCisgICAgICAgIG1fc3dDb250ZXh0
Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKICNlbmRpZgpAQCAtODg4LDEzICs4NzYsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHMK
ICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVj
dGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjcmVhdGUobV9uZXR3b3JrUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4sIG1f
Y29ubmVjdGlvbi5nZXQoKSk7Ci0KLSAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2
ZXIoWyZdKGF1dG8mIHNlcnZlcikgewotICAgICAgICBzZXJ2ZXIuc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkNyZWF0ZWQoKm1fc3dDb250ZXh0Q29ubmVjdGlvbik7Ci0gICAgfSk7CisgICAgaWYg
KGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPmV4aXN0aW5nU1dTZXJ2ZXJGb3JTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlx
dWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKnNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjZhNjJmMzIwMDVlMjg5OGM1
N2QwOTJkNzY5ZWJmNWM0YjdiYzc0Mi4uZTcwY2JlNTY1NmQwNTI3NTQ5Y2MwNDljY2M5YzViNTU2
MjAxOGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjEwLDcgKzIxMCw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hT
V1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZXN0YWJsaXNoU1dD
b250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lk
IGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKTsK
ICNlbmRpZgogCkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKLSAgICBSZWZQdHI8V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRDb25uZWN0
aW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk3OGYwMDBkNTg2YWEzM2U0
N2NjMDZkMjc5OWY2MjRjNjkwNTMwNGIuLmI5NTZiZmYyMjIzYzk2NWMwYTVhY2I0MDI3MGIyNWY1
ZDViZWQ2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtODIsNyArODIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICBF
c3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRv
bWFpbikKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAKICAg
ICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBw
b3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggZWMxYWEyZDg2ZDYwMjliNTRiZTZlODE4ZDlmZDEyNmI4N2Q5YzljNi4uNTBkZmI5
ZGFlNTE4NGFiOWQ5NmExOGQxZmI2ZjkxOTEwMGY0OTI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIzODYsNyArMjM4NiwxMSBA
QCBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRp
ZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAgIAotICAgICAgICBh
dXRvIHZhbHVlID0gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdp
blN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOworICAgICAgICBhdXRvIHZhbHVl
ID0gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigp
LCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCB0aGlzXShhdXRvJiBkb21haW4sIGF1dG8gc2Vzc2lvbklEKSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNyZWF0ZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uKGRvbWFpbiwgc2Vzc2lvbklEKTsKKyAgICAgICAgfSk7CiAg
ICAgICAgIGlmIChtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkpCiAgICAgICAgICAgICB2YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheSgpOwogICAgICAgICByZXR1cm4gdmFsdWU7CkBAIC0yNDAzLDI0ICsyNDA3
LDggQEAgV2ViU1dPcmlnaW5TdG9yZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5T
dG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdl
YlNXT3JpZ2luU3RvcmUmPihzd1NlcnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKLWJvb2wgTmV0
d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
LXsKLSAgICByZXR1cm4gV1RGOjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8m
IHN3U2VydmVyKSB7Ci0gICAgICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAg
IH0pOwotfQotCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNz
OjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQotewotICAgIHJldHVybiBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbik7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKLSAgICBpZiAobV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuY29udGFp
bnMocmVnaXN0cmFibGVEb21haW4pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BlbmRpbmdD
b25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOwogICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxl
RG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKQEAgLTI0NDUsMTkgKzI0MzMsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVy
Q29ubmVjdGlvbiYgY29ubmVjdAogICAgICAgICBzdG9yZS0+dW5yZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJT
V0NvbnRleHRDb25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29ubmVj
dGlvbikKLXsKLSAgICBBU1NFUlQoIW1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuY29udGFp
bnMoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7Ci0gICAgbV9wZW5kaW5nQ29ubmVj
dGlvbkRvbWFpbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7Ci0gICAg
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpLCAmY29ubmVjdGlvbik7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0
ZXJTV0NvbnRleHRDb25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKLXsKLSAgICBBU1NFUlQobV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQo
Y29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSA9PSAmY29ubmVjdGlvbik7Ci0gICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSgpCiB7CiAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBiOGRkYzhmNDU4OTE1NjA1MDMyZTIyY2Zl
OTA4MjY2YjU2MDJkMjIxLi4yNDlkYWM5MDNmMDZjOTY5OTFhYjIwMTJmYjM3NzZjYzNkZDEwYjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC0yOTcsMTcgKzI5NywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1By
b2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiog
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFMOjpTZXNzaW9u
SUQpOworICAgIHZvaWQgY3JlYXRlV29ya2VyQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgCisgICAgV2ViQ29y
ZTo6U1dTZXJ2ZXIqIGV4aXN0aW5nU1dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgeyByZXR1cm4gbV9zd1NlcnZlcnMuZ2V0KHNlc3Npb25JRCk7IH0KICAgICBXZWJD
b3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwog
ICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rp
b24mKTsKICAgICAKLSAgICB2b2lkIHJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0NvbnRleHRD
b25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwotCi0gICAgYm9vbCBu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFNXU2Vy
dmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXImKT4mKTsKICNlbmRpZgog
CkBAIC01MzksMTEgKzUzNSw5IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0
ZXg7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+IG1f
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4gbV9zd0RhdGFiYXNlUGF0aHM7CiAgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPj4gbV9zd1Nl
cnZlcnM7Ci0gICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5n
Q29ubmVjdGlvbkRvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkZWFlMmIzOWNiNGI5ZDdhNWUw
NWQxZDdkYjEyMmI1YzdkNGE2NmFmLi44NGRkN2YzNGFhNzE4MTdjZGY3NWI3NTk4MjkyMzk5ODg5
NmFkYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTgx
LDcgKzE4MSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIXdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpLCBzZXJ2ZXIoKS5zZXNzaW9uSUQoKSk7CisgICAgICAgICAgICBzZXJ2ZXIo
KS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOwog
CiAgICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRoaXMsIGZldGNo
SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJl
cXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZv
cm1EYXRhKSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgc2hvdWxkU2tpcEZldGNoRXZl
bnQgPSB3b3JrZXItPnNob3VsZFNraXBGZXRjaEV2ZW50KCldKGF1dG8qIGNvbnRleHRDb25uZWN0
aW9uKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBkCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZGVzdGlu
YXRpb25Xb3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCkpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oZGVzdGluYXRpb25Xb3JrZXItPnJl
Z2lzdHJhYmxlRG9tYWluKCksIHNlcnZlcigpLnNlc3Npb25JRCgpKTsKKyAgICAgICAgc2VydmVy
KCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oZGVzdGluYXRpb25Xb3JrZXItPnJlZ2lzdHJhYmxl
RG9tYWluKCkpOwogCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBj
YW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkK
ICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBbZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgc291cmNlRGF0YSA9IFdURk1vdmUoKnNvdXJjZURhdGEpXShhdXRvKiBjb250ZXh0Q29ubmVj
dGlvbikgbXV0YWJsZSB7CkBAIC0yNDQsOCArMjQ0LDggQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGQKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKIHsKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbihqb2JEYXRhLnNjcmlwdFVSTCk7Ci0gICAgaWYgKCFtX25ldHdvcmtQcm9j
ZXNzLT5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pKQotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2ZXIoKS5zZXNzaW9uSUQoKSk7
CisgICAgaWYgKCFzZXJ2ZXIoKS5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5l
Y3Rpb24ocmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIlNjaGVkdWxpbmcgU2VydmljZVdvcmtlciBqb2IgJXMgaW4gc2Vy
dmVyIiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIEFTU0VSVChpZGVudGlmaWVyKCkgPT0gam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmll
cigpKTsKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBk
YXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5jbGllbnRPcmln
aW4pOwogCiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29u
bmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluIHsgb3JpZ2luIH0p
KSB7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHNlcnZlcigpLmNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4geyBvcmln
aW4gfSkpIHsKICAgICAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pOwogCiAgICAg
ICAgICAgICBpZiAoY29ubmVjdGlvbi5pc1Rocm90dGxlYWJsZSgpID09IG1faXNUaHJvdHRsZWFi
bGUpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0
ZVRocm90dGxlU3RhdGUoKQogICAgIH0KIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29ubmVjdGlvbiA9
ICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb250ZXh0Q29u
bmVjdGlvbik7CiAgICAgY29ubmVjdGlvbi5zZXRUaHJvdHRsZVN0YXRlKGNvbXB1dGVUaHJvdHRs
ZVN0YXRlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGFkZThlN2UzYTYzMGM2MTUwYjkxYWE5YWIyMDMwNjY1
NTY5Yzc3NTAuLmYyZTljNmMyYTY2N2VmMWM4NGU2MjYzMzJlZmVjMDg5ZmZmZWM2NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKSBmaW5hbDsKIAotICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CisgICAg
dm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJikgZmluYWw7CiAKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsgfQogICAgIGJvb2wgaGFzTWF0Y2hpbmdDbGllbnQoY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggN2IxZTkyMDcxMDlj
ZDE0NTA3NmI5YWE3MjAwOTk1MTE5ZjM4YmVlNS4uMDQzMDM0MzA1NGRlNzA1NzA5MmNmNjdhNzA3
ZWZiZGRiMDhiZGNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQxLDE3ICs0MSwyMCBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2
ZXImIHNlcnZlciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAg
ICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVy
KSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24o
KnRoaXMpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbigpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+dW5yZWdpc3RlclNXQ29udGV4dENvbm5l
Y3Rpb24oKnRoaXMpOworICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBpZiAobV9zZXJ2ZXIg
JiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4oKSkgPT0gdGhpcykKKyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRD
b25uZWN0aW9uKCp0aGlzKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKQEAgLTEyNywx
OCArMTMwLDEwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5p
c2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpEaWRGaW5pc2hTa2lwV2FpdGluZyB7IGNhbGxi
YWNrSUQgfSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25u
ZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewotICAgIGlmIChtX25ldHdv
cmtQcm9jZXNzLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2Vy
IG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKICAgICB0ZXJtaW5hdGUoKTsKLQotICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7Ci0gICAgICAg
IHNlcnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJl
Z2lzdHJhYmxlRG9tYWluKCkpOwotICAgIH0pOwotCiAgICAgY29ubmVjdGlvbkNsb3NlZCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggMjBlYzE1ZTZiZjk5ZjhlZDY5MmQwYmMyYjlkMmRhNWQwZTdmOGMyZS4uNWE2N2VmMWYw
MTFmZjcxNzJiMjlmODg5OWVmOTFmOTMxMmM1ZmI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hP
cHRpb25zOwpAQCAtNTIsMTIgKzUzLDggQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNsYXNz
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+IHN0YXRpYyBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBjcmVhdGUo
QXJncyYmLi4uIGFyZ3MpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAg
ICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rp
b24qIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7
IH0KIApAQCAtNzYsOSArNzMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRsZWFibGU7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwotICAgIH5XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKLQogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
cgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwpAQCAtOTcsMTEgKzkxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGFpbUNvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hT
a2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKSBmaW5hbDsKIAotICAgIHZvaWQgY29ubmVj
dGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIGNvbm5lY3Rpb25Jc05v
TG9uZ2VyTmVlZGVkKCkgZmluYWw7CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAog
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBjQ29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29y
a1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7Ci0gICAgCisgICAgV2Vha1B0cjxXZWJDb3JlOjpT
V1NlcnZlcj4gbV9zZXJ2ZXI7CisKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0Y2hJZGVu
dGlmaWVyczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wgbV9pc1Rocm90
dGxlYWJsZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYTJiOTVlNDQyZGY5ZGZhM2YwOTY3ZWQ2OGQ3ZThl
OTg0MGQzZWUyMC4uZjVjYTQ2NzU4OTVlMTJlNmI2ZDkzOGVkN2JjOGQ3ZjVlNThiMDhjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KQEAgLTUxNiwxMSArNTE2LDcgQEAgLSAoc2l6ZV90KV93ZWJQYWdlQ29udGVudFByb2Nlc3ND
b3VudAogewogICAgIGF1dG8gYWxsV2ViUHJvY2Vzc2VzID0gX3Byb2Nlc3NQb29sLT5wcm9jZXNz
ZXMoKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byYgc2VydmljZVdvcmtl
clByb2Nlc3NlcyA9IF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXMoKTsKLSAgICBp
ZiAoc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBhbGxX
ZWJQcm9jZXNzZXMuc2l6ZSgpOwotCi0gICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5zaXplKCkg
LSBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsKKyAgICByZXR1cm4gYWxsV2ViUHJvY2Vz
c2VzLnNpemUoKSAtIF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpOwog
I2Vsc2UKICAgICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUoKTsKICNlbmRpZgpAQCAtNTU3
LDcgKzU1Myw3IEBAIC0gKE5TVUludGVnZXIpX3Byb2Nlc3NDYWNoZVNpemUKIC0gKHNpemVfdClf
c2VydmljZVdvcmtlclByb2Nlc3NDb3VudAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGllcygpLnNpemUoKTsK
KyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCk7CiAj
ZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKaW5kZXggNmVjODNlOGY2ODFiZmM5NjMzMzFhOGJmNTk5NzhlNWY2MjE0
NzdjZi4uZGI3NjRkZWU1MGMyMDFjNjBmMmZlMGU5NTc3MWE5MjY3OGYwNGJkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzAxLDE0ICs3MDEsMTUg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9ICZt
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICB9CiAKLSAgICBpZiAo
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAg
ICBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgcmVnaXN0cmFibGVEb21haW5XaXRoU2Vz
c2lvbklEIHsgUmVnaXN0cmFibGVEb21haW4geyByZWdpc3RyYWJsZURvbWFpbiB9LCBzZXNzaW9u
SUQgfTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluV2l0aFNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9
KTsKIAogICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFk
ZChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5yZWdpc3RyYWJsZURvbWFpbigpLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
YWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSwgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS5wdHIoKSk7CiAKICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwog
ICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHdl
YnNpdGVEYXRhU3RvcmUpOwpAQCAtMTEzMyw3ICsxMTM0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29y
a2VycygpKSB7Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLnRha2UocHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgIGF1
dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoUmVnaXN0
cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSwg
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBwcm9jZXNzKTsKICAg
ICAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4YTE4N2NlYTU4ZDcwN2RlYmY4ZGM0YTgxZjI0
MzIxYjgxOWU4NTkyLi5hZDhmMWQzMGExYTJmOTQwZjA5NGM3NTRjZWU5ZDdiZmE2YTViZTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3Nz
U2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZFN0cmluZ0hhc2guaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0zODIsNyArMzgy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9u
SUQpOwotICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYlBy
b2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmljZVdvcmtlclByb2Nlc3NlczsgfQorICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0Nv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsgfQog
ICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wg
YWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxs
b3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cjsgfQogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCk7CkBAIC02MjAsNyArNjIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlByb2Nl
c3NQcm94eSogbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwg
V2ViUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkq
PiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlT
U0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91
bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA1NjYyMGY2NzJiZDcyN2Zj
YTE5MzQ4MjNkMDhlYTkzNzcyZmYxN2Q4Li5lODlkMGIzN2RlODkxMjBlNjQzYjQ3MzE3NDFkMjhh
MTE2Mzg2YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIFJlZjxEb2N1bWVudExvYWRlcj4gU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSCiAgICAgcmV0dXJuIFdlYkRvY3VtZW50
TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQogCi1XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdU
Rk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJ
RCkKQEAgLTEwMCw3ICsxMDAsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7
CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0s
IDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
IHsgbV9yZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDApOwogfQogCiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggYjVhMmM2OGFlMjAx
ZTVhYjcyM2M2MzAzMzMzMTk5ZjFlNTJiZTMwNC4uN2FiOGVlMmQwMGQzMzdlYTk3ZjMxNGUwMTYw
YTU3NGFmMmQyODA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01Myw3
ICs1Myw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQwYTYwMGFlNTFiMjg2NGFjNmFiYzY3
ZDIzMGE1YjllYjBjMmJhYS4uMjY2MjFmMzgzYzc5MTMwOTgwNjdlYWI0YzFkMTQyNmRkMjk3NWI3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxMSwxMyAr
MTgxMSwxMyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3Jr
KCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBh
Z2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNl
cnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNo
ZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxp
bmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRz
IHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAv
LyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4K
ICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENv
bm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29u
bmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdl
UHJveHlJRCwgcGFnZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwg
cGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tCmluZGV4IDgwOTNkMjBiYzg1Yjg2YTQ0MDcyOWJiYmE4MjQ2YjI0ZTA1OGE1NTYuLjNm
NjZiNGQzMzUxYmJmNThmMzc4NzkxZWFkNzQ3MmFjMDg0MWJlN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tCkBAIC0yMDU1LDMgKzIwNTUsNTAgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJE
YXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKICAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKIH0KKworVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1BlclNlc3Npb24pCit7
CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxP
cmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisg
ICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlw
ZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNl
OltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gbWVzc2Fn
ZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgYXV0byBoYW5k
bGVyMSA9IGFkb3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKKyAgICBoYW5kbGVyMS0+
cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRl
eHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cx
Oi8vaG9zdC9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6Ly9ob3N0
Mi9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsK
KyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdDIvc3cuanMiLCBSZXNvdXJj
ZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVSTFNj
aGVtZTpAInN3MSJdOworCisgICAgV0tQcm9jZXNzUG9vbCAqcHJvY2Vzc1Bvb2wgPSBjb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sOworICAgIFtwcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxT
Y2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3MSJdOworCisgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAInN3MTovL2hvc3QvbWFpbi5odG1sIl1dOworCisgICAgY29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKwor
ICAgIEVYUEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQp
OworCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0
ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKworICAgIGF1dG8gd2ViVmlldzIg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3
ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9FUSgyVSwgcHJvY2Vz
c1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378636</attachid>
            <date>2019-09-12 02:37:55 -0700</date>
            <delta_ts>2019-09-13 05:06:36 -0700</delta_ts>
            <desc>Fix GTK</desc>
            <filename>bug-201643-20190912113753.patch</filename>
            <type>text/plain</type>
            <size>60575</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNmZDU4OGIzNzIxYjVi
YTMzMTI2NjA1ZGM5NjRhN2NlNjQ5OWQ5ZC4uNzY5YTg4MWY4YzEzZmQ0MGI4ODM4MGYyZjllNDUx
ZDhmNTY2Njc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA5LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0aXRpb24gcHJvY2Vz
c2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGJ5IHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBSZWdpc3RyYWJsZURv
bWFpbldpdGhTZXNzaW9uSUQgYXMgYSBzdHJ1Y3R1cmUgc3RvcmluZyBhIHJlZ2lzdHJhYmxlIGRv
bWFpbiBhbmQgYSBzZXNzaW9uSUQuCisgICAgICAgIFRoaXMgaXMgdXNlZCBhcyBhIGtleSB0byBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMgbWFwIGJ5IFdlYlByb2Nlc3NQb29sLgorCisgICAgICAg
IE1vdmUgdGhlIGNyZWF0aW9uIG9mIHNlcnZpY2Ugd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBt
YW5hZ2VtZW50IHRvIFNXU2VydmVyLgorICAgICAgICBUaGlzIGFsbG93cyB0byBwYXJ0aXRpb24g
c2VydmljZSB3b3JrZXIgY29udGV4dCBjb25uZWN0aW9ucyBieSByZWdpc3RyYWJsZSBkb21haW4g
YW5kIHNlc3Npb25JRC4KKyAgICAgICAgV2ViS2l0MiBpcyBzdGlsbCByZXNwb25zaWJsZSB0byBj
cmVhdGUgdGhlIElQQyBjcmVhdGlvbiB0aHJvdWdoIGEgRnVuY3Rpb24gZ2l2ZW4gdG8gU1dTZXJ2
ZXIgYXQgY29uc3RydWN0aW9uCisgICAgICAgIHRpbWUuCisgICAgICAgIFNXU2VydmVyIG5vdyBr
ZWVwcyBhIG1hcCBvZiByZWdpc3RyYWJsZSBkb21haW4gLT4gY29udGV4dCBjb25uZWN0aW9uIHRv
IHVzZSBmb3IgcnVubmluZyB3b3JrZXJzLgorICAgICAgICBJdCBhbHNvIGtlZXBzIGEgbWFwIG9m
IGJlaW5nLWNyZWF0ZWQgY29ubmVjdGlvbnMuCisgICAgICAgIEluIGNhc2UgYSBjb250ZXh0IGNv
bm5lY3Rpb24gaXMgcmVtb3ZlZCBmcm9tIHRoZSBTV1NlcnZlciwgdGhlIFNXU2VydmVyIHdpbGwg
bm90aWZ5IGFsbCByZWxhdGVkIHdvcmtlciBpbnN0YW5jZXMKKyAgICAgICAgdGhhdCB0aGV5IGFy
ZSBub3QgcnVubmluZy4gVGhlIFNXU2VydmVyIHdpbGwgYWxzbyByZWNyZWF0ZSBhIGNvbnRleHQg
Y29ubmVjdGlvbiBpZiBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgcmVtb3ZpbmcgdGhl
IGdsb2JhbCBzZXJ2ZXIgY29udGV4dCBjb25uZWN0aW9uIG1hcC4KKyAgICAgICAgTWFrZSBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gbm8gbG9uZ2VyIHJlZmNvdW50ZWQgdG8gc2ltcGxpZnkg
dGhlIGxpZmV0aW1lIG1hbmFnZW1lbnQuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdC4K
KworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluV2l0
aFNlc3Npb25JRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
V2l0aFNlc3Npb25JRDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRDo6SGFz
aDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9u
SUQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0
aFNlc3Npb25JRDo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRDo6aGFzaCBjb25zdCk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lv
bklEPjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNz
aW9uSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6U1dTZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRD
b25uZWN0aW9uKToKKwogMjAxOS0wOS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIHR5cGVkIGlkZW50aWZpZXJzIGZvciBJREIgY29ubmVjdGlvbiBp
ZGVudGlmaWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBlODYyODBhZjlhZTkxYTAzYThiNWY4ODEzZDVhNGMxOTgy
YTA0MzU2Li5iNTFlMTI1NGE5NGRkZWZlNjQzMDE3NGZmYWFmOTBkMzI5NmU2MmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA5LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXJ0aXRpb24gcHJvY2Vzc2VzIHJ1bm5pbmcgc2VydmljZSB3
b3JrZXJzIGJ5IHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSB0aGUgbWFuYWdlbWVudCBvZiBzZXJ2ZXIgY29udGV4dCBjb25u
ZWN0aW9ucyBmcm9tIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICBUaGUgV2ViUHJvY2Vzc1Bvb2wg
c2VydmljZSB3b3JrZXIgcHJvY2VzcyBtYXAgaXMgbm93IGtleWVkIGJ5IGJvdGggcmVnaXN0cmFi
bGUgZG9tYWluIGFuZCBzZXNzaW9uSUQuCisgICAgICAgIFVwZGF0ZSBXZWJQcm9jZXNzUG9vbCB0
byBvbmx5IGV4cG9zZSB0aGUgbnVtYmVyIG9mIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyBpbnN0
ZWFkIG9mIHRoZSBmdWxsIG1hcC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZXhpc3RpbmdTV1NlcnZlckZvclNlc3Npb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZl
dGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6c2NoZWR1bGVKb2JJblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnRdKToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfc2VydmljZVdvcmtlclByb2Nlc3NDb3VudF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorCiAyMDE5LTA5
LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdHlw
ZWQgaWRlbnRpZmllcnMgZm9yIElEQiBjb25uZWN0aW9uIGlkZW50aWZpZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCAzMGQwOTI5NjJhZjVmMzJmMjY1ODBjZjBmODZjYjFkYzA5NDAyMjU4Li4wYmIw
M2Y4YmU0OTM2MjE4NWFjNjZlZjUzNGI5NzM1ZTc4NmQzZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTk1NCw2ICs5NTQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vUmVjdEVkZ2VzLmgKICAgICBwbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5o
CiAgICAgcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAorICAgIHBsYXRmb3JtL1JlZ2lzdHJh
YmxlRG9tYWluV2l0aFNlc3Npb25JRC5oCiAgICAgcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLmgKICAgICBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAogICAgIHBsYXRm
b3JtL1NTTEtleUdlbmVyYXRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjg3NDIxNDU4ZTRlOTZiYzIzMzMwMDg3NDFmYzJk
NjY1Nzk3ZjMzZC4uZmNhNGJhZmFkMDZjMzMwMDA4OTZjYmQwZDZlMmY5MzdkMGRjMDU2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTEyNyw2ICsxMTI3LDcgQEAKIAkJNDFFOURDRTkyMzE5Q0E3NjAwRjM1OTQ5IC8qIE5ldHdv
cmtTZW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTlEQ0U4MjMxOUNBNzUwMEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGMDYyMTQwRjVG
MTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEwN0VB
QyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggKi87IH07CiAJCTQxRjFEMjFGMEVGMzVD
MkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBT
Y3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0MUY5NUY2NDIzMjdBQzlFMDA3MTYwMkQgLyogUmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUY5NUY2MjIzMjdBOUVCMDA3MTYwMkQgLyogUmVnaXN0cmFibGVEb21haW5X
aXRoU2Vzc2lvbklELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyQjFGNERG
RTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MjdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNT
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuY3BwICovOyB9OwogCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNT
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggKi87IH07CkBAIC03NDEyLDYgKzc0MTMsNyBAQAogCQk0MUY1NEY4NzFDNTBD
NEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZldGNoUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRjU0Rjg4MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRjU0Rjg5MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZldGNoUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRjk1RjYyMjMyN0E5RUIwMDcxNjAyRCAvKiBSZWdpc3RyYWJsZURv
bWFpbldpdGhTZXNzaW9uSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmFibGVEb21haW5XaXRo
U2Vzc2lvbklELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFCRDJCMUY0REZF
NDIwMDZBNkM5NyAvKiBET01DYWNoZUVuZ2luZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01DYWNoZUVuZ2luZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUZBQkQyRTFGNEUwMjUxMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NQ2FjaGVFbmdpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUZCMjc4QzFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93
Q2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd0NhY2hlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjU1MDMsNiArMjU1MDUsNyBAQAogCQkJCUNBMTYzNURDMjA3MkU3
NjkwMEU3RDJDRSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8sCiAJCQkJOTgzMUFFNDkxNTQyMjVB
MjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8sCiAJCQkJNkI0RTg2MTIyMjFCNzEzRjAw
MjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggKi8sCisJCQkJNDFGOTVGNjIyMzI3QTlFQjAw
NzE2MDJEIC8qIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRC5oICovLAogCQkJCUNERkMz
NjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwICovLAogCQkJ
CUNERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLywK
IAkJCQlBMThGN0EzNTFFQ0E3MzY0MDA1OUUxRTEgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
LmNwcCAqLywKQEAgLTMxMjA3LDYgKzMxMjEwLDcgQEAKIAkJCQkyNkI5OTk4RjE4MDNBRTcyMDBE
MDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRD
MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MUY5NUY2NDIzMjdBQzlFMDA3MTYwMkQgLyogUmVnaXN0cmFi
bGVEb21haW5XaXRoU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUI5MTQxMDFGRDI3
ODJEMDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQjkxNDExMUZEMjc4MkQwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRy
YWNrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWU4YzYx
OGQzOTQzYjI4ZWQ4OTFlMDdhMGY5ZDcxYWZlODM1NWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELmgKQEAg
LTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVn
aXN0cmFibGVEb21haW4uaCIKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZWdpc3RyYWJsZURvbWFp
bldpdGhTZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICBSZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSk7
CisgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKFJlZ2lzdHJhYmxlRG9tYWluJiYs
IFBBTDo6U2Vzc2lvbklEKTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxl
RG9tYWluID09IG90aGVyLm1fcmVnaXN0cmFibGVEb21haW4gJiYgbV9zZXNzaW9uSUQgPT0gb3Ro
ZXIubV9zZXNzaW9uSUQ7IH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKKyAgICBzdHJ1Y3QgSGFzaCB7Cisg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCYgYSwgY29uc3QgUmVn
aXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxz
ZTsKKyAgICB9OworCitwcml2YXRlOgorICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFi
bGVEb21haW47CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Cit9OworCitpbmxpbmUg
UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNz
aW9uSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgIDogbV9yZWdpc3RyYWJs
ZURvbWFpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAsIG1fc2Vzc2lvbklEKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQorCitpbmxpbmUgUmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQoV1RGOjpIYXNo
VGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICA6IG1fc2Vzc2lvbklEKFdURjo6SGFzaFRhYmxlRW1w
dHlWYWx1ZSkKK3sKK30KKworaW5saW5lIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRDo6
UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICA6IG1fcmVnaXN0cmFi
bGVEb21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCit7Cit9CisKK2lubGluZSB1bnNpZ25lZCBSZWdpc3RyYWJsZURvbWFpbldpdGhT
ZXNzaW9uSUQ6Omhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJlZ2lzdHJhYmxlRG9tYWlu
SGFzaCA9IG1fcmVnaXN0cmFibGVEb21haW4uaGFzaCgpOworICAgIHVuc2lnbmVkIHNlc3Npb25I
YXNoID0gV1RGOjpTZXNzaW9uSURIYXNoOjpoYXNoKG1fc2Vzc2lvbklEKTsKKworICAgIHVuc2ln
bmVkIGhhc2hDb2Rlc1syXSA9IHsgcmVnaXN0cmFibGVEb21haW5IYXNoLCBzZXNzaW9uSGFzaCB9
OworICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+
KGhhc2hDb2Rlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbldpdGhTZXNzaW9uSUQ+IHsKKyAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW5XaXRoU2Vzc2lvbklEOjpIYXNoOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQ+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEPiB7Cisg
ICAgc3RhdGljIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCBlbXB0eVZh
bHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKEhh
c2hUYWJsZUVtcHR5VmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCYgc2xvdCkgeyBzbG90
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmlu
ZGV4IDEyOGQ3MmZlYjhmNDQ4NmY4Y2NmOGI5NTUwN2ZiMDk0MDNhN2VkMWUuLjZlM2FmNDc2ZmU0
ZTQxMWM5ZmQ3MDgxZjg0YTZlMDBjMzkwZWI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0yOTksOSArMjk5LDEwIEBA
IHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllCiAgICAgICAgIG1fc2VydmVyLnN5bmNUZXJtaW5hdGVX
b3JrZXIoKndvcmtlcik7CiB9CiAKLVNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmln
aW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJl
Y3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NXU2VydmVyOjpTV1NlcnZlcihVbmlx
dWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0aW9u
RGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ3JlYXRlQ29udGV4
dENvbm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZN
b3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1f
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsKICAg
ICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpCkBAIC01MzUsNyArNTM2LDcgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIHZvaWQgU1dT
ZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBk
YXRhKQogewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKGRhdGEuc2Ny
aXB0VVJMKTsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKICAgICAgICAg
bV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
W10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+
IHsgfTsKQEAgLTU0NiwxMCArNTQ3LDEwIEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250
ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAgIGluc3RhbGxDb250
ZXh0RGF0YShkYXRhKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlv
bikKK3ZvaWQgU1dTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewogICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IG1fY29ubmVjdGlvbnMudmFsdWVzKCkpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAg
ICAgY29ubmVjdGlvbi0+Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9u
KTsKIAogICAgIGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRh
cy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogICAgIGZvciAo
YXV0byYgZGF0YSA6IHBlbmRpbmdDb250ZXh0RGF0YXMpCkBAIC04MzMsOCArODM0LDEwIEBAIHZv
aWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyKCp3
b3JrZXIpOwogCiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4u
Y29udGFpbnMoY2xpZW50UmVnaXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRSZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCk7
CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKSkgeworICAgICAg
ICAgICAgICAgICAgICByZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqY29ubmVjdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2NsaWVu
dElkZW50aWZpZXJzUGVyT3JpZ2luLnJlbW92ZShjbGllbnRPcmlnaW4pOwpAQCAtODY0LDcgKzg2
Nyw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9uTWFwKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LCiAgICAgbV9zY29wZVRvUmVnaXN0cmF0aW9u
TWFwLnJlbW92ZShrZXkpOwogfQogCi1ib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVkc0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudHNCeVJlZ2lzdHJhYmxl
RG9tYWluLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KQEAgLTkzMyw2ICs5MzYsMzgg
QEAgdm9pZCBTV1NlcnZlcjo6cGVyZm9ybUdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxi
YWNrcygpCiAgICAgICAgIGNhbGxiYWNrKG9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyk7CiB9CiAK
K3ZvaWQgU1dTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25z
LmNvbnRhaW5zKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9wZW5k
aW5nQ29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4o
KSk7CisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVE
b21haW4oKSwgJmNvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNv
bm5lY3Rpb24pOworfQorCit2b2lkIFNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byYgcmVn
aXN0cmFibGVEb21haW4gPSBjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBB
U1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29u
bmVjdGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVE
b21haW4pOworICAgIG1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0
ZWQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OmNy
ZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJl
Z2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNv
bnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5k
aW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX2NyZWF0
ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2socmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbklE
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCmluZGV4IDVjY2YyZjQzOTkyOTAxZmY0Njk2NmU0Yjg5NzE3YTgzMzFlN2IzNDMu
LjA0OWUxODViNDRlZjY2NjY2ZTA4MjY0NzAyYTBlMWJkZmQwMTUzNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTg5LDcgKzg5
LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWlu
dDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEmJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJikgPSAwOwogCiAgICAgICAgIFNXU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVy
biBtX3NlcnZlcjsgfQogICAgICAgICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2ZXI7IH0KQEAgLTEyMyw3ICsxMjMsOSBAQCBwdWJsaWM6CiAgICAgICAgIFZl
Y3RvcjxSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3Q+IG1fcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
czsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3Jp
Z2luU3RvcmU+JiYsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6
OlNlc3Npb25JRCk7CisgICAgdXNpbmcgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBQQUw6OlNl
c3Npb25JRCk+OworICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdp
blN0b3JlPiYmLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpT
ZXNzaW9uSUQsIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJik7CisKICAgICBXRUJD
T1JFX0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJB
bGwoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTcyLDggKzE3NCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hdGNoQWxsKFNXU2VydmVyV29ya2VyJiwgY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxD
YWxsYmFjayYmKTsKICAgICB2b2lkIGNsYWltKFNXU2VydmVyV29ya2VyJik7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYpOwotICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoU2V0PFNXU2VydmVyKj4mIGFsbFNlcnZlcnMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmLCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYmLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpOwpAQCAtMTkxLDEyICsxOTEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRp
b25zKEZ1bmN0aW9uPHZvaWQoY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYp
OwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNz
aW9uSUQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKIAogICAgIHZv
aWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91
bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQog
CiAgICAgdm9pZCByZW1vdmVGcm9tU2NvcGVUb1JlZ2lzdHJhdGlvbk1hcChjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENv
bnRleHRDb25uZWN0aW9uKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJik7CisKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKENv
bm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIApAQCAtMjI0LDYg
KzIzMCw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckludGVy
bmFsKFNXU2VydmVyV29ya2VyJiwgVGVybWluYXRpb25Nb2RlKTsKIAorICAgIHZvaWQgY29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCiAgICAg
SGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRvUmVnaXN0
cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9u
czsKQEAgLTI1MCw2ICsyNTgsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgVmVj
dG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fY2xlYXJDb21wbGV0aW9uQ2FsbGJhY2tz
OwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5E
YXRhPiYpPj4gbV9nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3M7CisgICAgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9j
b250ZXh0Q29ubmVjdGlvbnM7CisKKyAgICBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNr
IG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjazsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWluczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAppbmRleCBjYTJiOTY0YjdhOTYxNjU1NmUwYzc3ZTc0MTRkYTRiNjZjNWZmMmNmLi5mYTFj
NGNkN2NiY2RlMDdkZmYwMjg4MmQwYmQxMTEwZDg0YTRiZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC00MCwyOSArNDAsMTQgQEAgc3RhdGljIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uSWQKICAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9uc0J5UmVnaXN0cmFi
bGVEb21haW4oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJh
YmxlRG9tYWluLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9y
aWdpbjsKLSAgICByZXR1cm4gY29ubmVjdGlvbnNCeU9yaWdpbjsKLX0KLQotU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlSZWdpc3Ry
YWJsZURvbWFpbigpLmFkZChtX3JlZ2lzdHJhYmxlRG9tYWluLCB0aGlzKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8g
cmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeVJlZ2lzdHJhYmxlRG9tYWluKCkucmVtb3ZlKG1fcmVn
aXN0cmFibGVEb21haW4pOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotfQot
Ci1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbikKLXsKLSAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNCeVJlZ2lz
dHJhYmxlRG9tYWluKCkuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogdm9pZCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5k
ZXggM2MxMjBlODlmYmExMDVmYTA5YWVlMDllMjQyNzFjZTI4ZjA3NjRhZC4uOGZlYzhlOGZjNjE1
YTU1OTU3ODFhYmM1NDYzYjM5ODFkNjQ2OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgUEFMIHsKIGNsYXNzIFNlc3Npb25JRDsKQEAgLTQ2LDcgKzQ1LDggQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7CiAKLWNs
YXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4geworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIApAQCAtNzcs
MTQgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBT
dHJpbmcmJiBtaW1lVHlwZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKTsKLQogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJik7CiAK
IHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDgyMGIzMGY3YTVlZTI2OGJhNzI0Y2UzODQ3
YTcyMTM5N2VhNTdiMGYuLmVhYjZmNDJjYjVlMWI1NjhjN2VjM2MwOGIzODY5Nzg0ZWM5NGZjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGNvbnN0IENsaWVudE9yaWdpbiYg
U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiAKIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICByZXR1cm4g
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4ocmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgcmV0dXJuIG1fc2VydmVyID8gbV9zZXJ2ZXIt
PmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4o
KSkgOiBudWxscHRyOwogfQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
JiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCBjN2VhYjQ0MzFkZGNkYTNhMTdkZjE5MWYyZDQwODgwN2VkNWUy
NDUwLi45NTIxNjg3MmYyMWE0MmQ4YWM4MWIzODNhZGM1MDBjM2YxNzM4YzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjg2LDIwICsyODYsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAgIGF1dG8mIHJlZ2lzdHJh
YmxlRG9tYWluID0gbV9zd0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigpOwot
Ci0gICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotCi0g
ICAgICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7Ci0gICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7Ci0gICAgICAg
ICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRl
ZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgICAgICAgICBpZiAoc2VydmVyLm5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uSUQgPSBzZXJ2ZXIuc2Vzc2lvbklEKCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwg
KnNlc3Npb25JRCk7Ci0gICAgfQorICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgpAQCAtODg4LDEz
ICs4NzUsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHMKICAgICBzZXJ2ZXIuYWRkQ29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9zd0NvbnRl
eHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUobV9u
ZXR3b3JrUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4sIG1fY29ubmVjdGlvbi5nZXQoKSk7Ci0K
LSAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikg
ewotICAgICAgICBzZXJ2ZXIuc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKm1fc3dD
b250ZXh0Q29ubmVjdGlvbik7Ci0gICAgfSk7CisgICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0
d29ya1Byb2Nlc3MtPmV4aXN0aW5nU1dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgKnNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggNjZhNjJmMzIwMDVlMjg5OGM1N2QwOTJkNzY5ZWJmNWM0YjdiYzc0
Mi4uZTcwY2JlNTY1NmQwNTI3NTQ5Y2MwNDljY2M5YzViNTU2MjAxOGU4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMjEwLDcgKzIxMCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFM
OjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENv
bm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKTsKICNlbmRpZgogCkBAIC0zMjIsNyAr
MzIyLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dD
b25uZWN0aW9uczsKLSAgICBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBt
X3N3Q29udGV4dENvbm5lY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRDb25uZWN0aW9uOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDk3OGYwMDBkNTg2YWEzM2U0N2NjMDZkMjc5OWY2MjRjNjkwNTMw
NGIuLmI5NTZiZmYyMjIzYzk2NWMwYTVhY2I0MDI3MGIyNWY1ZDViZWQ2NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODIsNyArODIsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25u
ZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKKyAgICBFc3RhYmxpc2hT
V0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdlUG9y
dENoYW5uZWwoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3Ry
dWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZWMxYWEyZDg2ZDYw
MjliNTRiZTZlODE4ZDlmZDEyNmI4N2Q5YzljNi4uNTBkZmI5ZGFlNTE4NGFiOWQ5NmExOGQxZmI2
ZjkxOTEwMGY0OTI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTIzODYsNyArMjM4NiwxMSBAQCBTV1NlcnZlciYgTmV0d29ya1By
b2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAg
ICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklE
IGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFw
YXRoLmlzRW1wdHkoKSk7CiAgICAgICAgIAotICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVuaXF1
ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBh
dGgpLCBzZXNzaW9uSUQpOworICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVuaXF1ZTxTV1NlcnZl
cj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNz
aW9uSUQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzXShhdXRvJiBkb21haW4s
IGF1dG8gc2Vzc2lvbklEKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNyZWF0ZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
KGRvbWFpbiwgc2Vzc2lvbklEKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGlmIChtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCiAgICAgICAgICAgICB2
YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogICAg
ICAgICByZXR1cm4gdmFsdWU7CkBAIC0yNDAzLDI0ICsyNDA3LDggQEAgV2ViU1dPcmlnaW5TdG9y
ZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihzd1Nl
cnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKLWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjph
bnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7Ci0gICAgICAg
IHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIH0pOwotfQotCi1XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKQotewotICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25z
LmdldChyZWdpc3RyYWJsZURvbWFpbik7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBp
ZiAobV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQo
cmVnaXN0cmFibGVEb21haW4pOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwg
MCk7CiB9CiAKQEAgLTI0NDUsMTkgKzI0MzMsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJl
Z2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdAog
ICAgICAgICBzdG9yZS0+dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQo
IW1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5yZWdpc3Ry
YWJsZURvbWFpbigpKSk7Ci0gICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKGNv
bm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29ubmVjdGlvbik7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9u
KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NF
UlQobV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoY29ubmVjdGlvbi5yZWdpc3RyYWJs
ZURvbWFpbigpKSA9PSAmY29ubmVjdGlvbik7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKLX0KLQogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSgpCiB7CiAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCBiOGRkYzhmNDU4OTE1NjA1MDMyZTIyY2ZlOTA4MjY2YjU2MDJkMjIxLi4yNDlk
YWM5MDNmMDZjOTY5OTFhYjIwMTJmYjM3NzZjYzNkZDEwYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOTcsMTcgKzI5NywxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgY3JlYXRl
V29ya2VyQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBQQUw6OlNlc3Npb25JRCk7CiAgICAgCisgICAgV2ViQ29yZTo6U1dTZXJ2ZXIqIGV4aXN0aW5n
U1dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9z
d1NlcnZlcnMuZ2V0KHNlc3Npb25JRCk7IH0KICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2
ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNX
U2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKICAgICAKLSAgICB2b2lk
IHJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYpOwotCi0gICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1bmN0aW9uPHZv
aWQoV2ViQ29yZTo6U1dTZXJ2ZXImKT4mKTsKICNlbmRpZgogCkBAIC01MzksMTEgKzUzNSw5IEBA
IHByaXZhdGU6CiAgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0ZXg7CiAgICAgCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbnM7CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0cmlu
Zz4gbV9zd0RhdGFiYXNlUGF0aHM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPj4gbV9zd1NlcnZlcnM7Ci0gICAgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCBkZWFlMmIzOWNiNGI5ZDdhNWUwNWQxZDdkYjEyMmI1YzdkNGE2NmFm
Li44NGRkN2YzNGFhNzE4MTdjZGY3NWI3NTk4MjkyMzk5ODg5NmFkYjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXdvcmtlci0+Y29udGV4
dENvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCBzZXJ2ZXIo
KS5zZXNzaW9uSUQoKSk7CisgICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVj
dGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogCiAgICAgICAgIHNlcnZlcigpLnJ1
blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3dlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RG
TW92ZShvcHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJyZXIgPSBX
VEZNb3ZlKHJlZmVycmVyKSwgc2hvdWxkU2tpcEZldGNoRXZlbnQgPSB3b3JrZXItPnNob3VsZFNr
aXBGZXRjaEV2ZW50KCldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZGVzdGluYXRpb25Xb3JrZXItPmNvbnRleHRD
b25uZWN0aW9uKCkpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oZGVzdGluYXRpb25Xb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHNl
cnZlcigpLnNlc3Npb25JRCgpKTsKKyAgICAgICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5l
Y3Rpb24oZGVzdGluYXRpb25Xb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogCiAgICAgLy8g
SXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcu
IGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKICAgICBzZXJ2ZXIoKS5ydW5TZXJ2
aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9IFdURk1v
dmUoKnNvdXJjZURhdGEpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7CkBAIC0y
NDQsOCArMjQ0LDggQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9i
RGF0YSkKIHsKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbihqb2JEYXRh
LnNjcmlwdFVSTCk7Ci0gICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzLT5zZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQotICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lz
dHJhYmxlRG9tYWluLCBzZXJ2ZXIoKS5zZXNzaW9uSUQoKSk7CisgICAgaWYgKCFzZXJ2ZXIoKS5j
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkK
KyAgICAgICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21h
aW4pOwogCiAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIlNj
aGVkdWxpbmcgU2VydmljZVdvcmtlciBqb2IgJXMgaW4gc2VydmVyIiwgam9iRGF0YS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVChpZGVudGlm
aWVyKCkgPT0gam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKQEAgLTMzMyw3ICszMzMs
NyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAg
ICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5jbGllbnRPcmlnaW4pOwogCiAgICAgZm9yIChhdXRv
JiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlv
biA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluIHsgb3JpZ2luIH0pKSB7CisgICAgICAgIGlmIChhdXRv
KiBjb250ZXh0Q29ubmVjdGlvbiA9IHNlcnZlcigpLmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4geyBvcmlnaW4gfSkpIHsKICAgICAgICAgICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pOwogCiAgICAgICAgICAgICBpZiAoY29ubmVjdGlv
bi5pc1Rocm90dGxlYWJsZSgpID09IG1faXNUaHJvdHRsZWFibGUpCkBAIC0zNDYsNyArMzQ2LDcg
QEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAg
IH0KIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rp
b25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29ubmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb250ZXh0Q29ubmVjdGlvbik7CiAgICAgY29ubmVj
dGlvbi5zZXRUaHJvdHRsZVN0YXRlKGNvbXB1dGVUaHJvdHRsZVN0YXRlKGNvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IGFkZThlN2UzYTYzMGM2MTUwYjkxYWE5YWIyMDMwNjY1NTY5Yzc3NTAuLmYyZTljNmMyYTY2
N2VmMWM4NGU2MjYzMzJlZmVjMDg5ZmZmZWM2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKIAot
ICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CisgICAgdm9pZCBjb250ZXh0Q29ubmVjdGlv
bkNyZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CiAK
ICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJs
ZTsgfQogICAgIGJvb2wgaGFzTWF0Y2hpbmdDbGllbnQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggN2IxZTkyMDcxMDljZDE0NTA3NmI5YWE3MjAwOTk1MTE5
ZjM4YmVlNS4uMDQzMDM0MzA1NGRlNzA1NzA5MmNmNjdhNzA3ZWZiZGRiMDhiZGNkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAg
LTQxLDE3ICs0MSwyMCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVnaXN0cmFi
bGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAgICwgbV9pcGNDb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNz
KQorICAgICwgbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKIHsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworICAgIHNlcnZlci5h
ZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgbV9uZXR3
b3JrUHJvY2Vzcy0+dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworICAgIGNv
bm5lY3Rpb25DbG9zZWQoKTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhp
cykKKyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0K
IAogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKQEAgLTEyNywxOCArMTMwLDEwIEBAIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRf
dCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpEaWRGaW5pc2hTa2lwV2FpdGluZyB7IGNhbGxiYWNrSUQgfSk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5l
ZWRlZCgpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKQogewotICAgIGlmIChtX25ldHdvcmtQcm9jZXNzLT5uZWVkc1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bigpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcg
aXQiKTsKICAgICB0ZXJtaW5hdGUoKTsKLQotICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hT
V1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7Ci0gICAgICAgIHNlcnZlci5tYXJrQWxsV29ya2Vy
c0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwot
ICAgIH0pOwotCiAgICAgY29ubmVjdGlvbkNsb3NlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggMjBlYzE1ZTZiZjk5Zjhl
ZDY5MmQwYmMyYjlkMmRhNWQwZTdmOGMyZS4uNWE2N2VmMWYwMTFmZjcxNzJiMjlmODg5OWVmOTFm
OTMxMmM1ZmI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpAQCAtNTIsMTIgKzUz
LDggQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24s
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci0gICAgfQotCi0gICAgdm9pZCBj
b25uZWN0aW9uQ2xvc2VkKCk7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5l
dHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dT
ZXJ2ZXImLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7IH0KIApAQCAtNzYsOSArNzMsNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNU
aHJvdHRsZWFibGU7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwotICAgIH5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKTsKLQogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwpAQCAtOTcsMTEgKzkxLDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGFpbUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBj
YWxsYmFja0lEKSBmaW5hbDsKIAotICAgIHZvaWQgY29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVk
ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7
CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1faXBjQ29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7Ci0gICAgCisgICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CisK
ICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKICAgICBIYXNoTWFw
PFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBt
X29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
aW5kZXggYTJiOTVlNDQyZGY5ZGZhM2YwOTY3ZWQ2OGQ3ZThlOTg0MGQzZWUyMC4uZjVjYTQ2NzU4
OTVlMTJlNmI2ZDkzOGVkN2JjOGQ3ZjVlNThiMDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTUxNiwxMSArNTE2LDcg
QEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKIHsKICAgICBhdXRvIGFsbFdlYlByb2Nlc3NlcyA9
IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgPSBfcHJvY2Vzc1Bvb2wtPnNlcnZpY2VX
b3JrZXJQcm94aWVzKCk7Ci0gICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUoKTsKLQotICAgIHJldHVybiBh
bGxXZWJQcm9jZXNzZXMuc2l6ZSgpIC0gc2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXplKCk7Cisg
ICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5zaXplKCkgLSBfcHJvY2Vzc1Bvb2wtPnNlcnZpY2VX
b3JrZXJQcm94aWVzQ291bnQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5z
aXplKCk7CiAjZW5kaWYKQEAgLTU1Nyw3ICs1NTMsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpw
b2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8
UwogLSAoc2l6ZV90KV9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50CiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPnNlcnZpY2VXb3JrZXJQcm94
aWVzKCkuc2l6ZSgpOworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPnNlcnZpY2VXb3JrZXJQcm94
aWVzQ291bnQoKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA2ZWM4M2U4ZjY4MWJmYzk2MzMzMWE4
YmY1OTk3OGU1ZjYyMTQ3N2NmLi5kYjc2NGRlZTUwYzIwMWM2MGYyZmUwZTk1NzcxYTkyNjc4ZjA0
YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC03
MDEsMTQgKzcwMSwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgICAgICB3ZWJzaXRl
RGF0YVN0b3JlID0gJm1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogICAg
IH0KIAotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFi
bGVEb21haW4pKQorICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCByZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQgeyBSZWdpc3RyYWJsZURvbWFpbiB7IHJlZ2lzdHJhYmxlRG9t
YWluIH0sIHNlc3Npb25JRCB9OworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29u
dGFpbnMocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50cyB7IH0pOwogCiAgICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0g
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycygqdGhpcywgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICBtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYWRkKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnJlZ2lzdHJhYmxlRG9t
YWluKCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOworICAgIG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQp
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKIAogICAgIHVwZGF0ZVByb2Nlc3NB
c3NlcnRpb25zKCk7CiAgICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CkBAIC0xMTMzLDcgKzExMzQsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHByb2Nlc3MtPmlzUnVu
bmluZ1NlcnZpY2VXb3JrZXJzKCkpIHsKLSAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShwcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigp
KTsKKyAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMudGFrZShSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeyBwcm9jZXNzLT5yZWdpc3Ry
YWJsZURvbWFpbigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgfSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09
IHByb2Nlc3MpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDhhMTg3Y2VhNThkNzA3
ZGViZjhkYzRhODFmMjQzMjFiODE5ZTg1OTIuLmFkOGYxZDMwYTFhMmY5NDBmMDk0Yzc1NGNlZTlk
N2JmYTZhNWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApA
QCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
QEAgLTM4Miw3ICszODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgV2ViUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CisgICAgc2l6ZV90IHNlcnZpY2VX
b3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuc2l6ZSgpOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9y
U2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsgbnVsbHB0ciB9
OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQsIFdl
YlByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKICAgICBib29sIG1fd2Fp
dGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU2
NjIwZjY3MmJkNzI3ZmNhMTkzNDgyM2QwOGVhOTM3NzJmZjE3ZDguLmU4OWQwYjM3ZGU4OTEyMGU2
NDNiNDczMTc0MWQyOGExMTYzODZhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBTZXJ2aWNlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFIKICAgICByZXR1
cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9
CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlR3JvdXBJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fcmVnaXN0
cmFibGVEb21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgLCBtX3BhZ2VHcm91
cElEKHBhZ2VHcm91cElEKQpAQCAtMTAwLDcgKzEwMCw3IEBAIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0
aW9uCiAjZW5kaWYKIHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKLSAgICBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVnaXN0
cmFibGVEb21haW4gfSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9
CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRl
eCBiNWEyYzY4YWUyMDFlNWFiNzIzYzYzMDMzMzMxOTlmMWU1MmJlMzA0Li43YWI4ZWUyZDAwZDMz
N2VhOTdmMzE0ZTAxNjBhNTc0YWYyZDI4MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNs
YXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgdWludDY0X3QgcGFn
ZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDBhNjAwYWU1
MWIyODY0YWM2YWJjNjdkMjMwYTViOWViMGMyYmFhLi4yNjYyMWYzODNjNzkxMzA5ODA2N2VhYjRj
MWQxNDI2ZGQyOTc1Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0xODExLDEzICsxODExLDEzIEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6Omxp
YldlYlJUQ05ldHdvcmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBX
ZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lv
bklEIGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIC8vIFdl
IGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBi
ZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAg
ICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4
dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9u
IGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0
aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdy
b3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgc2Vzc2lvbklELCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUp
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZDdj
NzIwN2NlZjYyMzRhMzk5NzA4YTBkYzJhZmVlZDgyZjc3NDBjLi4wOWVlMTNmZmQzYmU2YmRkMDA2
MjNiNDk1ZTRkZDNhY2VkOGYzNTI5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDktMTIgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnRpdGlvbiBwcm9jZXNzZXMgcnVu
bmluZyBzZXJ2aWNlIHdvcmtlcnMgYnkgc2Vzc2lvbiBJRAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbToKKwogMjAxOS0wOS0xMSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luXVtNaW5pQnJvd3Nlcl0g
U2VsZWN0IGFsbCB0ZXh0IGluIHRoZSBVUkwgYmFyIGJ5IGNsaWNraW5nIGl0CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCmluZGV4IDgwOTNkMjBiYzg1Yjg2YTQ0MDcyOWJiYmE4MjQ2YjI0ZTA1OGE1NTYu
LjNmNjZiNGQzMzUxYmJmNThmMzc4NzkxZWFkNzQ3MmFjMDg0MWJlN2IgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCkBAIC0yMDU1LDMgKzIwNTUsNTAgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3Jr
ZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKICAgICByZWFkeVRvQ29udGlu
dWUgPSBmYWxzZTsKIH0KKworVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1BlclNlc3Npb24p
Cit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JB
bGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3Jl
CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9m
VHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNp
bmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gbWVz
c2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgYXV0byBo
YW5kbGVyMSA9IGFkb3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKKyAgICBoYW5kbGVy
MS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBA
InRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgi
c3cxOi8vaG9zdC9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIsIHNjcmlwdEJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6Ly9o
b3N0Mi9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9
KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdDIvc3cuanMiLCBSZXNv
dXJjZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVS
TFNjaGVtZTpAInN3MSJdOworCisgICAgV0tQcm9jZXNzUG9vbCAqcHJvY2Vzc1Bvb2wgPSBjb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sOworICAgIFtwcm9jZXNzUG9vbCBfcmVnaXN0ZXJV
UkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3MSJdOworCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAInN3MTovL2hvc3QvbWFpbi5odG1sIl1dOworCisgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsK
KworICAgIEVYUEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291
bnQpOworCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vi
c2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKworICAgIGF1dG8gd2ViVmll
dzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9FUSgyVSwgcHJv
Y2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378724</attachid>
            <date>2019-09-13 05:06:45 -0700</date>
            <delta_ts>2019-09-13 13:36:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201643-20190913140641.patch</filename>
            <type>text/plain</type>
            <size>50438</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE1ZTIyOGJkYmU3MzNj
MzY4OGM0OTc0NTI4ZWQ3YTI1ODZhNTJmMC4uYTEzZDhmMWMzYWJmYjc0OTIzZGY2MGM3OWM3ZGNi
ZTgyMWQ3MWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA5LTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0aXRpb24gcHJvY2Vz
c2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGJ5IHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGNyZWF0aW9uIG9mIHNl
cnZpY2Ugd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBtYW5hZ2VtZW50IHRvIFNXU2VydmVyLgor
ICAgICAgICBUaGlzIGFsbG93cyB0byBwYXJ0aXRpb24gc2VydmljZSB3b3JrZXIgY29udGV4dCBj
b25uZWN0aW9ucyBieSByZWdpc3RyYWJsZSBkb21haW4gYW5kIHNlc3Npb25JRC4KKyAgICAgICAg
V2ViS2l0MiBpcyBzdGlsbCByZXNwb25zaWJsZSB0byBjcmVhdGUgdGhlIElQQyBjcmVhdGlvbiB0
aHJvdWdoIGEgRnVuY3Rpb24gZ2l2ZW4gdG8gU1dTZXJ2ZXIgYXQgY29uc3RydWN0aW9uCisgICAg
ICAgIHRpbWUuCisgICAgICAgIFNXU2VydmVyIG5vdyBrZWVwcyBhIG1hcCBvZiByZWdpc3RyYWJs
ZSBkb21haW4gLT4gY29udGV4dCBjb25uZWN0aW9uIHRvIHVzZSBmb3IgcnVubmluZyB3b3JrZXJz
LgorICAgICAgICBJdCBhbHNvIGtlZXBzIGEgbWFwIG9mIGJlaW5nLWNyZWF0ZWQgY29ubmVjdGlv
bnMuCisgICAgICAgIEluIGNhc2UgYSBjb250ZXh0IGNvbm5lY3Rpb24gaXMgcmVtb3ZlZCBmcm9t
IHRoZSBTV1NlcnZlciwgdGhlIFNXU2VydmVyIHdpbGwgbm90aWZ5IGFsbCByZWxhdGVkIHdvcmtl
ciBpbnN0YW5jZXMKKyAgICAgICAgdGhhdCB0aGV5IGFyZSBub3QgcnVubmluZy4gVGhlIFNXU2Vy
dmVyIHdpbGwgYWxzbyByZWNyZWF0ZSBhIGNvbnRleHQgY29ubmVjdGlvbiBpZiBuZWVkZWQuCisK
KyAgICAgICAgVGhpcyBhbGxvd3MgcmVtb3ZpbmcgdGhlIGdsb2JhbCBzZXJ2ZXIgY29udGV4dCBj
b25uZWN0aW9uIG1hcC4KKyAgICAgICAgTWFrZSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24g
bm8gbG9uZ2VyIHJlZmNvdW50ZWQgdG8gc2ltcGxpZnkgdGhlIGxpZmV0aW1lIG1hbmFnZW1lbnQu
CisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdC4KKworICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNX
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6YWRkQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6flNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2Vy
Ojpjb250ZXh0Q29ubmVjdGlvbik6CisKIDIwMTktMDktMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBXZWJQcm9jZXNzIHByb2Nlc3NJZGVudGlmaWVy
IHRvIGlkZW50aWZ5IFNlcnZpY2UgV29ya2VyIGNvbm5lY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4NGY0
ZTk0OTQyMzk1NmFlMjE4NDQ0YjUzOWFkMjc0NmFiOGU5ZjIuLmZjYWFkNGQ4MmEyODVlZDM5NTc2
MTEwZTJlMzQ3ZWUxYTNkMjgwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDkt
MTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnRpdGlv
biBwcm9jZXNzZXMgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMgYnkgc2Vzc2lvbiBJRAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBtYW5h
Z2VtZW50IG9mIHNlcnZlciBjb250ZXh0IGNvbm5lY3Rpb25zIGZyb20gTmV0d29ya1Byb2Nlc3Mu
CisgICAgICAgIFRoZSBXZWJQcm9jZXNzUG9vbCBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIG1hcCBp
cyBub3cga2V5ZWQgYnkgYm90aCByZWdpc3RyYWJsZSBkb21haW4gYW5kIHNlc3Npb25JRC4KKyAg
ICAgICAgVXBkYXRlIFdlYlByb2Nlc3NQb29sIHRvIG9ubHkgZXhwb3NlIHRoZSBudW1iZXIgb2Yg
c2VydmljZSB3b3JrZXIgcHJvY2Vzc2VzIGluc3RlYWQgb2YgdGhlIGZ1bGwgbWFwLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZv
clNlc3Npb25JZkV4aXN0cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
OgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF93ZWJQYWdlQ29udGVudFByb2Nlc3NDb3VudF0p
OgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50XSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV91c2VyQWdlbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyk6CisKIDIwMTktMDktMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSBXZWJQcm9jZXNzIHByb2Nlc3NJZGVudGlmaWVyIHRvIGlkZW50aWZ5
IFNlcnZpY2UgV29ya2VyIGNvbm5lY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDEyOGQ3MmZlYjhmNDQ4NmY4Y2Nm
OGI5NTUwN2ZiMDk0MDNhN2VkMWUuLjA1MDU4MTkyMTc4Y2Q0OGI4MWM1NTQzNzJmNzhlYjEyZTEx
MzVkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCkBAIC0yOTksOSArMjk5LDEwIEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rp
b246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
CiAgICAgICAgIG1fc2VydmVyLnN5bmNUZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7CiB9CiAKLVNX
U2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwg
U3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK1NXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBv
cmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAs
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25D
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsK
ICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC01MzUsNyArNTM2LDcgQEAg
dm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImIGoKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0
RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogewogICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKGRhdGEuc2NyaXB0VVJMKTsKLSAgICBhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBj
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsK
ICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKICAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVu
c3VyZShXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgW10gewogICAgICAgICAgICAgcmV0dXJu
IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKQEAgLTU0NiwxMCArNTQ3LDEw
IEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmJiBkYXRhKQogICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKIH0KIAotdm9p
ZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3ZvaWQgU1dTZXJ2ZXI6OmNvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRD
b25uZWN0aW9uKQogewogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMu
dmFsdWVzKCkpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgY29ubmVjdGlvbi0+Y29udGV4dENv
bm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKIAogICAgIGF1dG8gcGVuZGluZ0Nv
bnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKGNvbnRleHRDb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogICAgIGZvciAoYXV0byYgZGF0YSA6IHBlbmRpbmdDb250
ZXh0RGF0YXMpCkBAIC04MzMsOCArODM0LDEwIEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAg
ICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwogCiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoY2xpZW50UmVnaXN0cmFi
bGVEb21haW4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
bGllbnRSZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24t
PmNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCk7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluKSkgeworICAgICAgICAgICAgICAgICAgICByZW1vdmVDb250
ZXh0Q29ubmVjdGlvbigqY29ubmVjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLnJl
bW92ZShjbGllbnRPcmlnaW4pOwpAQCAtODY0LDcgKzg2Nyw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
bW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9uTWFwKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LCiAgICAgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnJlbW92ZShrZXkpOwogfQogCi1i
b29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0
Citib29sIFNXU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKTsKIH0KQEAgLTkzMyw2ICs5MzYsMzggQEAgdm9pZCBTV1NlcnZlcjo6cGVyZm9y
bUdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpCiAgICAgICAgIGNhbGxiYWNr
KG9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OmFkZENvbnRl
eHRDb25uZWN0aW9uKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sK
KyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMucmVt
b3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgbV9jb250ZXh0Q29ubmVj
dGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbm5lY3Rpb24pOwor
CisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbm5lY3Rpb24pOworfQorCit2b2lkIFNX
U2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBjb25uZWN0
aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlv
bnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29ubmVjdGlvbik7CisKKyAgICBtX2NvbnRl
eHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworICAgIG1hcmtBbGxXb3Jr
ZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOwor
ICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbik7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQo
IW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAg
aWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRk
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJh
Y2socmVnaXN0cmFibGVEb21haW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNWNjZjJmNDM5OTI5MDFmZjQ2OTY2
ZTRiODk3MTdhODMzMWU3YjM0My4uOWQyZWE0ZDc5MDhjN2EzN2U2ZDhmYzgyZDE1M2QzZDc2OWZm
YTFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZp
ZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKICAgICAgICAgU1dTZXJ2
ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CiAgICAgICAgIGNvbnN0IFNXU2VydmVy
JiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQpAQCAtMTIzLDcgKzEyMyw5IEBA
IHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdD4gbV9yZWdp
c3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTV1Nl
cnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0
YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB1c2luZyBDcmVhdGVDb250ZXh0
Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dP
cmlnaW5TdG9yZT4mJiwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBB
TDo6U2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYpOworCiAgICAg
V0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyQWxsKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE3Miw4ICsxNzQs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXRjaEFsbChTV1NlcnZlcldvcmtlciYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNo
QWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBjbGFpbShTV1NlcnZlcldvcmtlciYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKLSAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgSGFzaFNldDxTV1NlcnZlcio+JiBhbGxTZXJ2ZXJzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiwgU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEmJiwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFnZW50KTsKQEAgLTE5MSwxMiArMTkxLDE4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0
cmF0aW9ucyhGdW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYp
PiYmKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vzc2lvbklEOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAg
ICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKSB7IG1f
c2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IHRydWU7
IH0KIAogICAgIHZvaWQgcmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRDb250ZXh0Q29ubmVjdGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYpOworCisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4pIHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hl
ZChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CiAKQEAgLTIy
NCw2ICsyMzAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJJ
bnRlcm5hbChTV1NlcnZlcldvcmtlciYsIFRlcm1pbmF0aW9uTW9kZSk7CiAKKyAgICB2b2lkIGNv
bnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKwog
ICAgIEhhc2hNYXA8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2NvcGVUb1Jl
Z2lzdHJhdGlvbk1hcDsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJh
dGlvbnM7CkBAIC0yNTAsNiArMjU4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAg
IFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2NsZWFyQ29tcGxldGlvbkNhbGxi
YWNrczsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3Jp
Z2luRGF0YT4mKT4+IG1fZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzOworICAg
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+
IG1fY29udGV4dENvbm5lY3Rpb25zOworCisgICAgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2s7CisgICAgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggY2EyYjk2NGI3YTk2MTY1NTZlMGM3N2U3NDE0ZGE0YjY2YzVmZjJjZi4u
ZmExYzRjZDdjYmNkZTA3ZGZmMDI4ODJkMGJkMTExMGQ4NGE0YmZlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDAsMjkgKzQwLDE0IEBAIHN0YXRpYyBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkCiAgICAgcmV0dXJuIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeVJlZ2lz
dHJhYmxlRG9tYWluKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25z
QnlPcmlnaW47Ci0gICAgcmV0dXJuIGNvbm5lY3Rpb25zQnlPcmlnaW47Ci19Ci0KLVNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4pCiAgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbikpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5UmVn
aXN0cmFibGVEb21haW4oKS5hZGQobV9yZWdpc3RyYWJsZURvbWFpbiwgdGhpcyk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlSZWdpc3RyYWJsZURvbWFpbigpLnJlbW92ZSht
X3JlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
LX0KLQotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4pCi17Ci0gICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zQnlS
ZWdpc3RyYWJsZURvbWFpbigpLmdldChyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25z
dCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDNjMTIwZTg5ZmJhMTA1ZmEwOWFlZTA5ZTI0MjcxY2UyOGYwNzY0YWQuLjhmZWM4ZThm
YzYxNWE1NTk1NzgxYWJjNTQ2M2IzOTgxZDY0NjhiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFBBTCB7CiBjbGFzcyBTZXNzaW9uSUQ7CkBAIC00Niw3ICs0NSw4IEBA
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOwog
Ci1jbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IHsKK2NsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKQEAg
LTc3LDE0ICs3NywxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFpbSh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwmJiByZXNwb25zZVVS
TCwgU3RyaW5nJiYgbWltZVR5cGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0KICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgPSAwOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYp
OwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA4MjBiMzBmN2E1ZWUyNjhiYTcyNGNl
Mzg0N2E3MjEzOTdlYTU3YjBmLi5lYWI2ZjQyY2I1ZTFiNTY4YzdlYzNjMDhiMzg2OTc4NGVjOTRm
Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBDbGllbnRPcmln
aW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAogCiBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIFNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgcmV0
dXJuIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIHJldHVybiBtX3NlcnZlciA/IG1fc2Vy
dmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9t
YWluKCkpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2RkNzVlNjNkOTQ0MWRlOGEyMThhMzg2ODk0ZjNkZjA5
ZTc2NTUyOS4uNjBjMmVmNzc4MWZmODAzMjcyMzljOThjZjVjYzRiMDliOGZmYWZkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTI4NiwyMSArMjg2LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmUKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBXVEZNb3ZlKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8mIHJl
Z2lzdHJhYmxlRG9tYWluID0gY29ubmVjdGlvbi0+cmVnaXN0cmFibGVEb21haW4oKTsKLQotICAg
ICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0KLSAgICAgICAgT3B0aW9uYWw8
UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Zm9y
RWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKLSAgICAgICAgICAgIHNlcnZlci5tYXJr
QWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9t
YWluKTsKLSAgICAgICAgICAgIGlmIChzZXJ2ZXIubmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQotICAgICAgICAgICAg
ICAgIHNlc3Npb25JRCA9IHNlcnZlci5zZXNzaW9uSUQoKTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IGlmIChzZXNzaW9uSUQpCi0gICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vzc2lvbklEKTsKLSAg
ICB9CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCkBAIC04ODQsMTMgKzg3MCwxMCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24oUEFMOjpTZXNzaW9uSUQgcwogICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29u
bmVjdGlvbikpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3Rh
Ymxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0Nv
bnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLCBy
ZWdpc3RyYWJsZURvbWFpbiwgbV9jb25uZWN0aW9uLmdldCgpKTsKLQotICAgIG1fbmV0d29ya1By
b2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7Ci0gICAgICAgIHNlcnZl
ci5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgqbV9zd0NvbnRleHRDb25uZWN0aW9u
KTsKLSAgICB9KTsKKyAgICBpZiAoYXV0byogc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dT
ZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMoc2Vzc2lvbklEKSkKKyAgICAgICAgbV9zd0NvbnRleHRD
b25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KG1f
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyLCBtX2Nv
bm5lY3Rpb24uZ2V0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCAzODBiM2U5N2MwZTE5M2RiYjYwNzliZWJlMzEwY2ZiOWY4MjNlYThlLi5hZmIwYzljZDM0MTY3
YjZkY2NiMGM5MTllYjZjZGUzNDI4N2Y1YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0yMDgsNyArMjA4LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCk7Ci0g
ICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyU1dDb25uZWN0aW9ucygpOwogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOwotICAg
IFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVj
dGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
PiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlf
UkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMzIxMjA3MDk4MWVkZjMyZDExZmRhY2E0ZjVjODIzZDRmZjNhNWEwMy4uZDEzNTRhMjVjMjA3
ODgwMzI3MzJkNGQ2N2VjYjQ1MzA4NGYxYmQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04MCw3ICs4MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQotICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQorICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rp
b24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAjZW5kaWYKIAogICAgIENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyIHBvcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBlYzFhYTJkODZkNjAyOWI1NGJlNmU4MThkOWZk
MTI2Yjg3ZDljOWM2Li5lOTFmMWIzZjgxM2JlNmYxZDQwODgyZWMyM2EyOTRmNDgxM2FiM2ZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMjM4Niw3ICsyMzg2LDkgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZv
clNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0aGVyZSdz
IG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAg
ICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwog
ICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VV
bmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsK
KyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8
V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vz
c2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbikgeworICAgICAgICAgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFi
bGVEb21haW4sIHNlc3Npb25JRCB9LCAwKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGlmIChtX3No
b3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCiAgICAgICAg
ICAgICB2YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgp
OwogICAgICAgICByZXR1cm4gdmFsdWU7CkBAIC0yNDAzLDI3ICsyNDA1LDYgQEAgV2ViU1dPcmln
aW5TdG9yZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUm
Pihzd1NlcnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKLWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKLXsKLSAgICByZXR1cm4g
V1RGOjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7Ci0g
ICAgICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIH0pOwotfQotCi1XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluKQotewotICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbik7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgaWYg
KG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRkKHJl
Z2lzdHJhYmxlRG9tYWluKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDAp
OwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBz
d1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jb25uZWN0aW9uKGRlc3RpbmF0aW9uSWRlbnRp
Zmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCkBAIC0yNDQ1LDE5ICsyNDI2LDYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1Nl
cnZlckNvbm5lY3Rpb24mIGNvbm5lY3QKICAgICAgICAgc3RvcmUtPnVucmVnaXN0ZXJTV1NlcnZl
ckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOwotICAgIG1fcGVuZGluZ0Nv
bm5lY3Rpb25Eb21haW5zLnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwot
ICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFi
bGVEb21haW4oKSwgJmNvbm5lY3Rpb24pOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJl
Z2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMu
Z2V0KGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkgPT0gJmNvbm5lY3Rpb24pOwotICAg
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFi
bGVEb21haW4oKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQogewogICAgIGlmIChtX3Nob3VsZERpc2FibGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYjhkZGM4ZjQ1ODkxNTYwNTAzMmUy
MmNmZTkwODI2NmI1NjAyZDIyMS4uMGVkZjFkNTBhYzNjOWNlNjI2NTU1ZTU3YTM4OWU4OTk4MTJj
ZDc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtMjk3LDE3ICsyOTcsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdv
cmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6U2Vz
c2lvbklEKTsKLSAgICAKKyAgICBXZWJDb3JlOjpTV1NlcnZlciogc3dTZXJ2ZXJGb3JTZXNzaW9u
SWZFeGlzdHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3U2VydmVycy5n
ZXQoc2Vzc2lvbklEKTsgfQogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24o
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25u
ZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgcmVnaXN0ZXJT
V0NvbnRleHRDb25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwotICAg
IHZvaWQgdW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJik7Ci0KLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CiAgICAgdm9pZCBmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3Jl
OjpTV1NlcnZlciYpPiYpOwogI2VuZGlmCiAKQEAgLTUzOSwxMSArNTMzLDkgQEAgcHJpdmF0ZToK
ICAgICBMb2NrIG1fc3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAg
ICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0
YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKLSAgICBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWluczsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CmluZGV4IGRlYWUyYjM5Y2I0YjlkN2E1ZTA1ZDFkN2RiMTIyYjVjN2Q0YTY2YWYuLjg0ZGQ3ZjM0
YWE3MTgxN2NkZjc1Yjc1OTgyOTIzOTk4ODk2YWRiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmkKICAgICAgICAgfQogCiAgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlv
bigpKQotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHNlcnZlcigpLnNlc3Npb25J
RCgpKTsKKyAgICAgICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtl
ci0+cmVnaXN0cmFibGVEb21haW4oKSk7CiAKICAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZl
bnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFkZXN0aW5hdGlvbldvcmtlci0+Y29udGV4dENvbm5lY3Rpb24o
KSkKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbihkZXN0aW5hdGlvbldvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSwgc2VydmVyKCkuc2Vz
c2lvbklEKCkpOworICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbihkZXN0
aW5hdGlvbldvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CiAKICAgICAvLyBJdCdzIHBvc3Np
YmxlIHRoaXMgc3BlY2lmaWMgd29ya2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lz
dHJhdGlvbiBoYXMgYmVlbiByZW1vdmVkKQogICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJ
Zk5lY2Vzc2FyeShkZXN0aW5hdGlvbklkZW50aWZpZXIsIFtkZXN0aW5hdGlvbklkZW50aWZpZXIs
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZSgqc291cmNl
RGF0YSldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKQEAgLTI0NCw4ICsyNDQs
OCBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKGpvYkRhdGEuc2NyaXB0VVJM
KTsKLSAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21h
aW4sIHNlcnZlcigpLnNlc3Npb25JRCgpKTsKKyAgICBpZiAoIXNlcnZlcigpLmNvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBz
ZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CiAKICAg
ICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiU2NoZWR1bGluZyBT
ZXJ2aWNlV29ya2VyIGpvYiAlcyBpbiBzZXJ2ZXIiLCBqb2JEYXRhLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIoKSA9PSBq
b2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICAgICAgb3Jp
Z2lucy5hZGQob3JpZ2luLmNsaWVudE9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oUmVn
aXN0cmFibGVEb21haW4geyBvcmlnaW4gfSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRD
b25uZWN0aW9uID0gc2VydmVyKCkuY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihSZWdpc3RyYWJsZURvbWFpbiB7IG9yaWdpbiB9KSkgewogICAgICAgICAgICAgYXV0byYgY29u
bmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpj
b250ZXh0Q29ubmVjdGlvbik7CiAKICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLmlzVGhyb3R0
bGVhYmxlKCkgPT0gbV9pc1Rocm90dGxlYWJsZSkKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgfQogfQogCi12
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlv
bikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQo
V2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikK
IHsKICAgICBhdXRvJiBjb25uZWN0aW9uID0gIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiY+KGNvbnRleHRDb25uZWN0aW9uKTsKICAgICBjb25uZWN0aW9uLnNldFRo
cm90dGxlU3RhdGUoY29tcHV0ZVRocm90dGxlU3RhdGUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggYWRlOGU3
ZTNhNjMwYzYxNTBiOTFhYTlhYjIwMzA2NjU1NjljNzc1MC4uZjJlOWM2YzJhNjY3ZWYxYzg0ZTYy
NjMzMmVmZWMwODlmZmZlYzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25D
b250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOwogCi0gICAgdm9pZCBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChX
ZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKSBmaW5hbDsKIAogICAgIGJvb2wg
aXNUaHJvdHRsZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzVGhyb3R0bGVhYmxlOyB9CiAgICAg
Ym9vbCBoYXNNYXRjaGluZ0NsaWVudChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAppbmRleCA3YjFlOTIwNzEwOWNkMTQ1MDc2YjlhYTcyMDA5OTUxMTlmMzhiZWU1Li4w
NDMwMzQzMDU0ZGU3MDU3MDkyY2Y2N2E3MDdlZmJkZGIwOGJkY2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDEsMTcgKzQx
LDIwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKQor
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBTV1NlcnZlciYgc2VydmVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCisgICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBt
X3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJl
Z2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CisgICAgc2VydmVyLmFkZENvbnRleHRD
b25uZWN0aW9uKCp0aGlzKTsKIH0KIAogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNz
LT51bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CisgICAgY29ubmVjdGlvbkNs
b3NlZCgpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAg
ICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwogfQogCiBJUEM6OkNv
bm5lY3Rpb24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdApAQCAtMTI3LDE4ICsxMzAsMTAgQEAgdm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkRp
ZEZpbmlzaFNraXBXYWl0aW5nIHsgY2FsbGJhY2tJRCB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkKK3Zv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpCiB7Ci0gICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MtPm5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3
b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwogICAg
IHRlcm1pbmF0ZSgpOwotCi0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsm
XShhdXRvJiBzZXJ2ZXIpIHsKLSAgICAgICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0
cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4oKSk7Ci0gICAgfSk7Ci0K
ICAgICBjb25uZWN0aW9uQ2xvc2VkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAyMGVjMTVlNmJmOTlmOGVkNjkyZDBiYzJi
OWQyZGE1ZDBlN2Y4YzJlLi41YTY3ZWYxZjAxMWZmNzE3MmIyOWY4ODk5ZWY5MWY5MzEyYzVmYjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CkBAIC01MiwxMiArNTMsOCBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbm5lY3Rpb25D
bG9zZWQoKTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZlciYsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIH5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsgfQogCkBAIC03Niw5ICs3Myw2IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJs
ZTsgfQogCiBwcml2YXRlOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3
b3JrUHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJik7Ci0gICAgfldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwot
CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CkBAIC05NywxMSArOTEsMTQgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
IGZpbmFsOwogCi0gICAgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpIGZpbmFs
OworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKKworICAgIHZv
aWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGND
b25uZWN0aW9uOwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKLSAg
ICAKKyAgICBXZWFrUHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3NlcnZlcjsKKwogICAgIEhhc2hN
YXA8U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyPiBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckZldGNoVGFzaz4+IG1fb25nb2luZ0Zl
dGNoZXM7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBhMmI5
NWU0NDJkZjlkZmEzZjA5NjdlZDY4ZDdlOGU5ODQwZDNlZTIwLi5mNWNhNDY3NTg5NWUxMmU2YjZk
OTM4ZWQ3YmM4ZDdmNWU1OGIwOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtNTE2LDExICs1MTYsNyBAQCBzdGF0aWMg
TlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxT
dHJpbmcsIEhhc2hNYXA8UwogewogICAgIGF1dG8gYWxsV2ViUHJvY2Vzc2VzID0gX3Byb2Nlc3NQ
b29sLT5wcm9jZXNzZXMoKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byYg
c2VydmljZVdvcmtlclByb2Nlc3NlcyA9IF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hp
ZXMoKTsKLSAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBhbGxXZWJQcm9jZXNzZXMuc2l6ZSgpOwotCi0gICAgcmV0dXJuIGFsbFdlYlByb2Nl
c3Nlcy5zaXplKCkgLSBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsKKyAgICByZXR1cm4g
YWxsV2ViUHJvY2Vzc2VzLnNpemUoKSAtIF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hp
ZXNDb3VudCgpOwogI2Vsc2UKICAgICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUoKTsKICNl
bmRpZgpAQCAtNTU3LDcgKzU1Myw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFz
aE1hcFRvRGljdGlvbmFyeShjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTCiAtIChzaXpl
X3QpX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXMoKS5zaXpl
KCk7CisgICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgp
OwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDAwMTJhYmJkN2RkZmM4ZTI4NWRjMTY1YzI1YWIwOTdk
YTczMzI1MjEuLjgwZTVmOTk5YmRlZDQ4M2ZjM2RjZWY2NjViMWFmMWRmNWY4NThlYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTcwMSwxNCArNzAx
LDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUg
PSAmbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAgICAgfQogCi0gICAg
aWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHJlZ2lzdHJhYmxlRG9tYWluV2l0
aFNlc3Npb25JRCB7IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVnaXN0cmFibGVEb21haW4gfSwgc2Vz
c2lvbklEIH07CisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRz
IHsgfSk7CiAKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nl
cy5hZGQoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cmVnaXN0cmFibGVEb21haW4oKSwgc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCksIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOwogCiAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMo
KTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LCB3ZWJzaXRlRGF0YVN0b3JlKTsKQEAgLTExNTIsNyArMTE1Myw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkgewotICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy50YWtlKHByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAg
ICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKFJl
Z2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IHByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWlu
KCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSB9KTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MgPT0gcHJvY2Vzcyk7
CiAgICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMjE0MjVkMmU0ZTdmMjAzYTUwZDhlNGM3
MGJlZTIxMjUxZDNkNjQ2Zi4uNjQzYzQwZDYyZWNjNzhjYTU1MDliY2RmMTgxMDI1ZTlkMDM3MjU3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODIsNyAr
MzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2
b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNz
aW9uSUQpOwotICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdl
YlByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmljZVdvcmtlclByb2Nlc3NlczsgfQorICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGll
c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsg
fQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJv
b2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0g
YWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdv
cmtlcjsgfQogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCk7CkBAIC02MjEsNyArNjIxLDggQEAgcHJpdmF0ZToKIAogICAgIFdlYlBy
b2Nlc3NQcm94eSogbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgV2ViUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIHVzaW5n
IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQ+OworICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAppbmRleCA1NjYyMGY2NzJiZDcyN2ZjYTE5MzQ4MjNkMDhlYTkzNzcyZmYx
N2Q4Li5lODlkMGIzN2RlODkxMjBlNjQzYjQ3MzE3NDFkMjhhMTE2Mzg2YTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFJlZjxEb2N1bWVu
dExvYWRlcj4gU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSCiAgICAgcmV0dXJuIFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVz
dCwgc3Vic3RpdHV0ZURhdGEpOwogfQogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCB1
aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShzdG9yZSk7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOworICAgIG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFp
biwgc2Vzc2lvbklEIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKaW5kZXggYjVhMmM2OGFlMjAxZTVhYjcyM2M2MzAzMzMzMTk5ZjFl
NTJiZTMwNC4uN2FiOGVlMmQwMGQzMzdlYTk3ZjMxNGUwMTYwYTU3NGFmMmQyODA4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
R3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNTM5YzE1YjJiYzdhZDc5YjY5ZTlmNWNmOWM1NjMwMDM4YTc0NGVhOC4uOWIz
NGVjMDQ2ZjVmMTg5MGNlOTZjZDIwODZkYzY3ZjNmNGY1NzFlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxMiwxMyArMTgxMiwxMyBAQCBMaWJXZWJSVENO
ZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9j
ZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWlu
dDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQg
cHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8g
dGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRl
cmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9y
ZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFr
ZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQ
cm94eUlELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggYzYyNDIyMWI1MTFlY2IzZWNiMTFjNzZlMDM2ZWE0NjNjYjg5ZWJj
OC4uYmNjZmJkY2YzZjI2YTAwMmI1NTQ2Njc1MmY0YTU3N2M3NTUyYmZmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE5LTA5LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQ
YXJ0aXRpb24gcHJvY2Vzc2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGJ5IHNlc3Npb24gSUQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY0Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIwMTkt
MDktMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0tUUl0g
RHJvcCBUZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRfREVQUkVDQVRFRCgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDgwOTNkMjBiYzg1Yjg2YTQ0MDcyOWJiYmE4MjQ2YjI0
ZTA1OGE1NTYuLjNmNjZiNGQzMzUxYmJmNThmMzc4NzkxZWFkNzQ3MmFjMDg0MWJlN2IgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCkBAIC0yMDU1LDMgKzIwNTUsNTAgQEAgVEVTVChXZWJLaXQsIFNl
cnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKICAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKIH0KKworVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1Bl
clNlc3Npb24pCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBk
YXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisg
ICAgYXV0byBoYW5kbGVyMSA9IGFkb3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKKyAg
ICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdC9tYWluLmh0bWwiLCBSZXNvdXJj
ZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3Vy
Y2VzLnNldCgic3cxOi8vaG9zdC9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0
KCJzdzE6Ly9ob3N0Mi9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1h
aW5CeXRlcyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdDIvc3cu
anMiLCBSZXNvdXJjZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRl
cyB9KTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdl
dCgpIGZvclVSTFNjaGVtZTpAInN3MSJdOworCisgICAgV0tQcm9jZXNzUG9vbCAqcHJvY2Vzc1Bv
b2wgPSBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sOworICAgIFtwcm9jZXNzUG9vbCBf
cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3MSJdOworCisgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInN3MTovL2hvc3QvbWFpbi5odG1sIl1dOworCisgICAgY29uZmln
dXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUg
PSBmYWxzZTsKKworICAgIEVYUEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzQ291bnQpOworCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3Jl
ID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKworICAgIGF1
dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9F
USgyVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>