<?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>209463</bug_id>
          
          <creation_ts>2020-03-23 21:17:12 -0700</creation_ts>
          <short_desc>Refactor ResourceLoadStatisticsStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor() to return a struct instead of a Vector of pairs</short_desc>
          <delta_ts>2020-03-24 20:21:31 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1633228</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 21:17:12 -0700</bug_when>
    <thetext>The current return type Vector&lt;std::pair&lt;RegistrableDomain, WebsiteDataToRemove&gt;&gt; of ResourceLoadStatisticsStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor() is ill-suited for its purpose since the destination NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains() needs separate Vectors to delete website data for. It should instead return a struct with Vectors ready to use. This would also prepare for additional use of that struct for other types of website data deletion or restriction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633230</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-23 21:17:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/60808759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633231</commentid>
    <comment_count>2</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 21:19:46 -0700</bug_when>
    <thetext>This was requested by Alex Christensen as a follow-up when the code first landed: https://bugs.webkit.org/show_bug.cgi?id=195923#c7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633235</commentid>
    <comment_count>3</comment_count>
      <attachid>394352</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 21:32:36 -0700</bug_when>
    <thetext>Created attachment 394352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633421</commentid>
    <comment_count>4</comment_count>
      <attachid>394352</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-24 12:25:57 -0700</bug_when>
    <thetext>Comment on attachment 394352
Patch

Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633424</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-24 12:29:50 -0700</bug_when>
    <thetext>Committed r258928: &lt;https://trac.webkit.org/changeset/258928&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394352.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633441</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-24 13:14:14 -0700</bug_when>
    <thetext>Reverted r258928 for reason:

Broke the build

Committed r258932: &lt;https://trac.webkit.org/changeset/258932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633442</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-24 13:14:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Reverted r258928 for reason:
&gt; 
&gt; Broke the build
&gt; 
&gt; Committed r258932: &lt;https://trac.webkit.org/changeset/258932&gt;

In file included from WebKitBuild/Debug/DerivedSources/WebKit2/unified-sources/UnifiedSource10.cpp:3:
/Volumes/Data/WebKit/OpenSource/Source/WebKit/NetworkProcess/NetworkProcess.cpp:1783:71: error: no member named &apos;size&apos; in &apos;WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&apos;
            registrableDomainsToDelete.reserveInitialCapacity(domains.size());
Source/WebKit/NetworkProcess/NetworkProcess.cpp:1784:31: error: invalid range expression of type &apos;WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&apos;; no viable &apos;begin&apos; function available
            for (auto&amp; domain : domains)
2 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633747</commentid>
    <comment_count>8</comment_count>
      <attachid>394463</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-24 19:53:28 -0700</bug_when>
    <thetext>Created attachment 394463
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633754</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-24 20:21:30 -0700</bug_when>
    <thetext>Committed r258969: &lt;https://trac.webkit.org/changeset/258969&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394463.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394352</attachid>
            <date>2020-03-23 21:32:36 -0700</date>
            <delta_ts>2020-03-24 19:53:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209463-20200323213235.patch</filename>
            <type>text/plain</type>
            <size>45157</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3ZDFhNDYyNjljMzU3ZGFk
ZDYzZTEyMmZiZWU1ZGQxNTJiZWMxYTQuLjhlMzkzNTIwZmFmMjA2NTFiZmQxZjY0ZGM4OTE1NTgz
MDhhYzUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDMtMjMgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcigpIHRvIHJldHVybiBhIHN0cnVjdCBpbnN0ZWFkIG9mIGEgVmVjdG9yIG9m
IHBhaXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0NjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwODA4NzU5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRvZXMgdGhyZWUg
dGhpbmdzOgorCisgICAgICAgIDEuIFJlcGxhY2VzIHRoZSBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gd2l0aCBhIG5ldyBzdHJ1Y3QgY2Fs
bGVkCisgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yIGZvciBzZW5kaW5nIGFyb3VuZCB3aGljaCBkb21haW5zIHRvIGRlbGV0ZSB3ZWJzaXRl
IGRhdGEgZm9yLgorCisgICAgICAgIDIuIFJlbW92ZXMgdGhlIGVudW0gV2Vic2l0ZURhdGFUb1Jl
bW92ZSwgcmVwbGFjaW5nIGl0cyBzdHJ1Y3R1cmUgd2l0aCB0aGUgbWVtYmVycyBvZiB0aGUgYWJv
dmUgbWVudGlvbmVkIHN0cnVjdDoKKyAgICAgICAgLSBkb21haW5zVG9EZWxldGVBbGxDb29raWVz
Rm9yCisgICAgICAgIC0gZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yCisg
ICAgICAgIC0gZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IKKworICAg
ICAgICAzLiBDb25zaXN0ZW50bHkgcmVuYW1lcyAiZG9tYWluc1RvRGVsZXRlRm9yIiB0byAiZG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdEZvciIgaW4gcHJlcGFyYXRpb24gZm9yIHdlYnNpdGUgZGF0
YQorICAgICAgICBwb2xpY2llcyB0aGF0IGFyZSBub3QgYWJvdXQgZGVsZXRpb24sIHNlZSBmb3Ig
aW5zdGFuY2UgcmVjZW50bHkgbGFuZGVkIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNTg4ODQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2VkIGZ1bmN0aW9uYWxp
dHkuIFRoaXMgY29kZSBpcyBjb3ZlcmVkIGJ5IHNldmVyYWwgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lz
dHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3RyYWJsZURv
bWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZG9tYWluc1RvU3RyaW5nKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvRGVs
ZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0
YUZvcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVz
dHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorCiAyMDIwLTAzLTIzICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERlbnkgYWNjZXNz
IHRvIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggZGU3MGZjMTY2OTQxNzVkMWE5
MzU2MzIxOThlMjZlMDU4ZmE4YmNlNS4uZGM2ZmZmMmExOTgyMjliY2EyMzYzZDk2MzhkYTkxOTBi
Y2Y4MjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKGNvbnN0
IERvbQogICAgIHJldHVybiBpc1JlbW92YWxFbmFibGVkICYmICFpc1Jlc291cmNlR3JhbmRmYXRo
ZXJlZCAmJiAhaGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKHJlc291cmNlU3Rh
dGlzdGljLCB3aW5kb3cpOwogfQogCi1WZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKQorUmVnaXN0cmFi
bGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmlj
dFdlYnNpdGVEYXRhRm9yKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMjM2NywxNiArMjM2NywxNyBAQCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogCiAgICAgYXV0
byBub3cgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgYXV0byBvbGRlc3RVc2VySW50ZXJhY3Rpb24g
PSBub3c7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4+IGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yOworICAgIFJlZ2lzdHJh
YmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHRvRGVsZXRlT3JSZXN0
cmljdEZvcjsKIAogICAgIFZlY3RvcjxEb21haW5EYXRhPiBkb21haW5zID0gdGhpcy0+ZG9tYWlu
cygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURzVG9DbGVhckdyYW5kZmF0aGVyaW5n
OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlucykgewogICAgICAgICBvbGRlc3RV
c2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3Rp
Yy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7Ci0gICAgICAgIGlmIChzaG91bGRSZW1v
dmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJp
bmcpKQotICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1Jl
bW92ZTo6QWxsKSk7Ci0gICAgICAgIGVsc2UgaWYgKHNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNG
b3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewotICAgICAgICAg
ICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0
YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0Q29v
a2llcykpOworICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Ioc3RhdGlz
dGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgeworICAgICAgICAgICAgdG9EZWxl
dGVPclJlc3RyaWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuYXBwZW5kKHN0YXRp
c3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RG
b3IuZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0YXRp
c3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVtb3Zl
QWxsQnV0Q29va2llc0ZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcp
KSB7CisgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWluc1RvRGVsZXRlQWxs
Tm9uQ29va2llV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bik7CiAgICAgICAgICAgICBzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
KHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZmFsc2UpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChzaG91bGRDbGVhckdyYW5kZmF0aGVyaW5nICYmIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVk
KQpAQCAtMjM4NCwxNSArMjM4NSwxMiBAQCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogICAgIH0K
IAogICAgIC8vIEdpdmUgdGhlIHVzZXIgZW5vdWdoIHRpbWUgdG8gaW50ZXJhY3Qgd2l0aCB3ZWJz
aXRlcyB1bnRpbCB3ZSByZW1vdmUgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEuCi0gICAgaWYgKCFw
YXJhbWV0ZXJzKCkuaXNSdW5uaW5nVGVzdCAmJiBub3cgLSBvbGRlc3RVc2VySW50ZXJhY3Rpb24g
PiBwYXJhbWV0ZXJzKCkubWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKSB7Ci0g
ICAgICAgIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLnJlbW92ZUFsbE1hdGNoaW5nKFsm
XSAoYXV0byYgcGFpcikgewotICAgICAgICAgICAgcmV0dXJuIHBhaXIuc2Vjb25kID09IFdlYnNp
dGVEYXRhVG9SZW1vdmU6OkFsbEJ1dENvb2tpZXM7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBp
ZiAoIXBhcmFtZXRlcnMoKS5pc1J1bm5pbmdUZXN0ICYmIG5vdyAtIG9sZGVzdFVzZXJJbnRlcmFj
dGlvbiA+IHBhcmFtZXRlcnMoKS5taW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwp
CisgICAgICAgIHRvRGVsZXRlT3JSZXN0cmljdEZvci5kb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvci5jbGVhcigpOwogCiAgICAgY2xlYXJHcmFuZGZhdGhlcmluZyhXVEZN
b3ZlKGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmluZykpOwogICAgIAotICAgIHJldHVybiBk
b21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcjsKKyAgICByZXR1cm4gdG9EZWxldGVPclJlc3Ry
aWN0Rm9yOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpw
cnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDViYTAwZWJjOThlMDZhMWI5YTk2MjE0ZjNl
MTMwNTBmNmZlNDJmNDguLjdmYzAzZmFmZmQ1MjkzY2FmYmQxMDJlMzQxNGM2N2MzMDM2MGFjYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8QWRkZWRSZWNv
cmQsIE9wdGlvbmFsPHVuc2lnbmVkPj4gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBXQVJOX1VOVVNFRF9SRVRVUk47
CiAgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihjb25zdCBEb21haW5EYXRh
JiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKTsKICAgICBib29sIHNob3VsZFJl
bW92ZUFsbEJ1dENvb2tpZXNGb3IoY29uc3QgRG9tYWluRGF0YSYsIGJvb2wgc2hvdWxkQ2hlY2tG
b3JHcmFuZGZhdGhlcmluZyk7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFp
biwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IHJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0
ZURhdGFGb3IoKSBvdmVycmlkZTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVz
dHJpY3RXZWJzaXRlRGF0YUZvciByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcigpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNEYXRhYmFzZVN0b3JlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2Vz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCmluZGV4IDdhODRjMGNkOWJiNjQzNmYyZWM3NGY1OWY5OTdhNjdhMzJhOWIwYjcuLjEyNWFl
YTFhM2MxZjg4N2QwYzNiZjZmZjk3MzUzNjg5MmNlM2E1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC05MTQsNyArOTE0LDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZUFs
bEJ1dENvb2tpZXNGb3IoUmVzb3VyY2VMb2EKICAgICByZXR1cm4gaXNSZW1vdmFsRW5hYmxlZCAm
JiAhaXNSZXNvdXJjZUdyYW5kZmF0aGVyZWQgJiYgIWhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJ
bnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgd2luZG93KTsKIH0KIAotVmVjdG9yPHN0ZDo6
cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRl
RGF0YUZvcigpCitSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0
YUZvciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtOTI2LDEzICs5MjYsMTQgQEAgVmVjdG9yPHN0ZDo6cGFpcjxS
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MKIAogICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIGF1dG8gb2xkZXN0
VXNlckludGVyYWN0aW9uID0gbm93OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZv
cjsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewogICAgICAgICBvbGRlc3RVc2VySW50ZXJh
Y3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSk7Ci0gICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJz
aXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKQotICAg
ICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxs
KSk7Ci0gICAgICAgIGVsc2UgaWYgKHNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3Ioc3RhdGlz
dGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewotICAgICAgICAgICAgZG9tYWlu
c1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXRpc3RpYy5y
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsQnV0Q29va2llcykpOwor
ICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Ioc3RhdGlzdGljLCBzaG91
bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgeworICAgICAgICAgICAgdG9EZWxldGVPclJlc3Ry
aWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdp
c3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWlu
c1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdp
c3RyYWJsZURvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVtb3ZlQWxsQnV0Q29v
a2llc0ZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CisgICAg
ICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2ll
V2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CiAgICAg
ICAgICAgICBzdGF0aXN0aWMuZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2Ug
PSBmYWxzZTsKICAgICAgICAgfQogCkBAIC05NDEsMTMgKzk0MiwxMCBAQCBWZWN0b3I8c3RkOjpw
YWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcwogICAgIH0KIAogICAgIC8vIEdpdmUgdGhlIHVzZXIgZW5vdWdoIHRpbWUgdG8g
aW50ZXJhY3Qgd2l0aCB3ZWJzaXRlcyB1bnRpbCB3ZSByZW1vdmUgbm9uLWNvb2tpZSB3ZWJzaXRl
IGRhdGEuCi0gICAgaWYgKCFwYXJhbWV0ZXJzKCkuaXNSdW5uaW5nVGVzdCAmJiBub3cgLSBvbGRl
c3RVc2VySW50ZXJhY3Rpb24gPiBwYXJhbWV0ZXJzKCkubWluaW11bVRpbWVCZXR3ZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKSB7Ci0gICAgICAgIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLnJl
bW92ZUFsbE1hdGNoaW5nKFsmXSAoYXV0byYgcGFpcikgewotICAgICAgICAgICAgcmV0dXJuIHBh
aXIuc2Vjb25kID09IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dENvb2tpZXM7Ci0gICAgICAg
IH0pOwotICAgIH0KKyAgICBpZiAoIXBhcmFtZXRlcnMoKS5pc1J1bm5pbmdUZXN0ICYmIG5vdyAt
IG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA+IHBhcmFtZXRlcnMoKS5taW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwpCisgICAgICAgIHRvRGVsZXRlT3JSZXN0cmljdEZvci5kb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5jbGVhcigpOwogCi0gICAgcmV0dXJu
IGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yOworICAgIHJldHVybiB0b0RlbGV0ZU9yUmVz
dHJpY3RGb3I7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpw
cnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggYmFmOGIxNjRiYjk1ODgyNzVkMmIyZmNlNWViNWE5
MzcyNmNhOGMzNi4uNWM4YTQ2ZGNhMzNmYTIzM2VkNmMxZDk4YWU2NDViMzg4NjkzNDBkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAt
MTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVk
ZWQoKSBvdmVycmlkZTsKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9S
ZW1vdmU+PiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkgb3ZlcnJp
ZGU7CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFG
b3IgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IoKSBv
dmVycmlkZTsKICAgICBib29sIGlzTWVtb3J5U3RvcmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZT4gbV9wZXJzaXN0ZW50U3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggNzcwNWY1NjAyYTQ4ODk5OTU5MWY5NjI4ODM2M2U1ZDhiZjYy
ZWYxZS4uOGU3ZWEyMDUzYzc0YjI0N2EzNDQ5NmRmZmNmMGI4YzUxNWQxNGMzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTY3LDI2ICs2NywyNiBA
QCBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+JiBkb21haW5zKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXN0
YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0
cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiYgZG9tYWluc1RvUmVtb3ZlV2Vic2l0
ZURhdGFGb3IpCitzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYgZG9tYWluc1RvUmVtb3Zl
T3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LSAgICBmb3IgKGF1dG8mIHBhaXIgOiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcikgewot
ICAgICAgICBhdXRvJiBkb21haW4gPSBwYWlyLmZpcnN0OwotICAgICAgICBhdXRvJiBkYXRhVG9S
ZW1vdmUgPSBwYWlyLnNlY29uZDsKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1Jl
bW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9y
KSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJp
bmcoKSk7Ci0gICAgICAgIHN3aXRjaCAoZGF0YVRvUmVtb3ZlKSB7Ci0gICAgICAgIGNhc2UgV2Vi
c2l0ZURhdGFUb1JlbW92ZTo6QWxsOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIoYWxsIGRhdGEpIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJzaXRl
RGF0YVRvUmVtb3ZlOjpBbGxCdXRIdHRwT25seUNvb2tpZXM6Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIihhbGwgYnV0IEh0dHBPbmx5IGNvb2tpZXMpIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVz
OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGJ1dCBjb29raWVzKSIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIoYWxsIGRhdGEpIik7CisgICAgfQorICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9t
YWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yLmRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dEh0dHBPbmx5Q29va2llc0ZvcikgeworICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChkb21haW4uc3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IihhbGwgYnV0IEh0dHBPbmx5IGNvb2tpZXMpIik7CisgICAgfQorICAgIGZvciAoYXV0byYgZG9t
YWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yLmRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSB7CisgICAgICAgIGlmICghYnVpbGRlci5p
c0VtcHR5KCkpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiKGFsbCBidXQgY29va2llcykiKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKIH0KQEAgLTE5OSwxOCArMTk5LDE4IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYKICAgICAgICAgbV9hY3RpdmVQbHVnaW5Ub2tlbnMuYWRkKHBsdWdpbi0+cGx1Z2luUHJv
Y2Vzc1Rva2VuKCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVE
YXRhRm9yID0gcmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwotICAg
IGlmIChkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvci5pc0VtcHR5KCkpIHsKKyAgICBhdXRv
IGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciA9IHJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCk7CisgICAgaWYgKGRvbWFpbnNU
b0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5pc0VtcHR5KCkpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
TE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBJVFBEZWJ1ZywgIkFib3V0IHRvIHJl
bW92ZSBkYXRhIHJlY29yZHMgZm9yICUiIFBVQkxJQ19MT0dfU1RSSU5HICIuIiwgZG9tYWluc1Rv
U3RyaW5nKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBSRUxFQVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dnaW5nRW5hYmxlZCwgSVRQRGVidWcsICJB
Ym91dCB0byByZW1vdmUgZGF0YSByZWNvcmRzIGZvciAlIiBQVUJMSUNfTE9HX1NUUklORyAiLiIs
IGRvbWFpbnNUb1N0cmluZyhkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3Ip
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJlZihtX3N0b3Jl
KSwgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxkTm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGRO
b3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtR
dWV1ZS5jb3B5UmVmKCldICgpIG11dGFibGUgewotICAgICAgICBzdG9yZS0+ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0
YUZvciksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpLCB3b3JrUXVldWUgPSB3b3JrUXVldWUuY29weVJlZigpXShjb25zdCBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEp
IG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVm
KG1fc3RvcmUpLCBkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQgPSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUuY29weVJlZigpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgc3RvcmUtPmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlw
ZXMoKSwgV1RGTW92ZShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBz
aG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgd29ya1F1ZXVlID0gd29ya1F1ZXVlLmNvcHlSZWYoKV0oY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RvbWFpbnNXaXRoRGVsZXRlZFdl
YnNpdGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRh
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGMyYjQzOTNlYjM4
YzIxNDI4Y2Q0ZTI1OTM1YTY4ZDFhOWU1N2M0Y2EuLmMzY2RhOWI3MWQzOGRiZmVjYzViZjQyMzJj
ZWY4NGEyM2U1ZjA3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRp
c3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBtZXJnZU9wZXJh
dGluZ0RhdGVzKFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYmKTsKICAgICB2aXJ0dWFsIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkg
PSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vi
c2l0ZURhdGFUb1JlbW92ZT4+IHJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFG
b3IoKSA9IDA7CisgICAgdmlydHVhbCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvciByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJz
aXRlRGF0YUZvcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVk
ZWQoKSA9IDA7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKCkg
eyByZXR1cm4gbV9zdG9yZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAppbmRleCA3ZDk0NTlhNDVhMTQwY2NjMjNkMDRkZDdjODFhZmE1ODg4MWI3
YThkLi4yMzZkZjY2NGUyYzljZWQ4YTE2YjE4ZmJkOGJmMTI5M2QwOWI0OWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTI0OCwxMiAr
MTI0OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW52YWxpZGF0
ZUFuZENhbmNlbCgpCiAgICAgbV9uZXR3b3JrU2Vzc2lvbiA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZlY3Rv
cjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiYmIGRv
bWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpk
ZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVP
clJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zVG9EZWxldGVBbmRSZXN0cmljdFdlYnNp
dGVEYXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAogICAgIGlmIChtX25ldHdv
cmtTZXNzaW9uKSB7Ci0gICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zVG9SZW1vdmVX
ZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIFdURk1vdmUoZG9tYWluc1RvRGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGJjMWM5NzkzODNiYTlm
NmUyNmIzMGE4M2ZlNGNmNmIyZGQ2YmVjZTUuLmNjNGU3YWQ3NTkxMjk3OGM2MmY4OWJlODIyNDM0
NDczODE0NDMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKQEAgLTcwLDE3ICs3MCwxOSBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBlbnVtIGNs
YXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBFbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKLWVudW0g
Y2xhc3MgV2Vic2l0ZURhdGFUb1JlbW92ZSA6IHVpbnQ4X3QgewotICAgIEFsbCwKLSAgICBBbGxC
dXRIdHRwT25seUNvb2tpZXMsCi0gICAgQWxsQnV0Q29va2llcwotfTsKIHN0cnVjdCBSZWdpc3Ry
YWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7CiAgICAgVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29r
aWVzRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpIH07IH0KIH07CitzdHJ1Y3QgUmVnaXN0cmFibGVE
b21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgeworICAgIFZlY3RvcjxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0ZvcjsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dEh0dHBPbmx5Q29va2llc0ZvcjsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yOworICAgIFJlZ2lz
dHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0Zvci5pc29sYXRl
ZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmlzb2xhdGVk
Q29weSgpLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gZG9tYWluc1Rv
RGVsZXRlQWxsQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0
cE9ubHlDb29raWVzRm9yLmlzRW1wdHkoKSAmJiBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVX
ZWJzaXRlRGF0YUZvci5pc0VtcHR5KCk7IH0KK307CiAKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsK
IHB1YmxpYzoKQEAgLTIxNSw3ICsyMTcsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAg
IHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0Rl
Y29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYp
OworICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxl
dGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYp
OwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9u
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDBlMjMxNmQ2YjZhMjk1MTk1NjMzZjhkY2UxMzhjYTA4MmUyMGFmMDkuLjYyOTdjY2Q2
OTcxNDNhNWNhZGQ3OWM2ODY1YTUyYjM2NWE3N2JhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNzA5LDcgKzE3MDksNyBAQCBz
dGF0aWMgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0
cmFibGVEb21haW5zKGNvbnN0IEhhcwogICAgIHJldHVybiBvcmlnaW5zRGVsZXRlZDsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFp
bnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJz
aXRlRGF0YVRvUmVtb3ZlPj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnMsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlvblNl
dDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNo
T3B0aW9uOjpEb05vdENyZWF0ZVByb2Nlc3NlczsKIApAQCAtMTc0MSw0NiArMTc0MSwyNCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhQQUw6OlNlc3Npb25JRCBzZXNzaQogCiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dp
dGhDb29raWVzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRoSFNUU0NhY2hlOwot
Ci0gICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVDb29raWVzRm9y
OwotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0
cE9ubHlDb29raWVzRm9yOwotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1Rv
RGVsZXRlQWxsQnV0Q29va2llc0ZvcjsKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRo
Q29va2llc1RvRGVsZXRlOworICAgIGF1dG8gZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vi
c2l0ZURhdGFGb3IgPSBkb21haW5zLmRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVE
YXRhRm9yOwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6Q29va2llcykpIHsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZG9tYWlucykgewotICAg
ICAgICAgICAgYXV0byYgZG9tYWluID0gcGFpci5maXJzdDsKLSAgICAgICAgICAgIGF1dG8mIGRh
dGFUb1JlbW92ZSA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgZG9tYWluc1RvRGVsZXRlQWxs
QnV0Q29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKLSAgICAgICAgICAgIHN3aXRjaCAoZGF0YVRv
UmVtb3ZlKSB7Ci0gICAgICAgICAgICBjYXNlIFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbDoKLSAg
ICAgICAgICAgICAgICBkb21haW5zVG9EZWxldGVDb29raWVzRm9yLmFwcGVuZChkb21haW4pOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVt
b3ZlOjpBbGxCdXRIdHRwT25seUNvb2tpZXM6Ci0gICAgICAgICAgICAgICAgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmFwcGVuZChkb21haW4pOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRD
b29raWVzOgotICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgYWRkZWQuCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9z
dE5hbWVzV2l0aENvb2tpZXMpOwogCi0gICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1Rv
RGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUNvb2tp
ZXNGb3IsIGhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhD
b29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWlucy5kb21h
aW5zVG9EZWxldGVBbGxDb29raWVzRm9yLCBob3N0TmFtZXNXaXRoQ29va2llcyk7CiAgICAgICAg
ICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9z
dG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2ll
czo6WWVzKTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVz
V2l0aENvb2tpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
Pm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0
KGhvc3QpKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNv
b2tpZXNGb3IsIGhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIGhvc3RuYW1lc1dp
dGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWlucy5k
b21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IsIGhvc3ROYW1lc1dpdGhDb29r
aWVzKTsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlLCBXZWJDb3JlOjpJbmNsdWRl
SHR0cE9ubHlDb29raWVzOjpObyk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9z
dCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUpCiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tSG9zdChob3N0KSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBm
b3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCi0gICAgICAgICAgICBkb21haW5zVG9EZWxldGVB
bGxCdXRDb29raWVzRm9yLmFwcGVuZChkb21haW4uZmlyc3QpOwogICAgIH0KIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGU7CkBAIC0xNzg4LDcgKzE3NjYsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBo
b3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0
Q29va2llc0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CisgICAgICAgICAgICBob3N0bmFt
ZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNU
b0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hl
KTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhT
VFNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsK
QEAgLTE4MTMsMjAgKzE3OTEsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkg
ewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
IHsKICAgICAgICAgICAgIGF1dG8gb3JpZ2lucyA9IHNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdl
KCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOwotICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOworICAg
ICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFp
bnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNh
bGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogb3JpZ2luc1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIHNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkucmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2luKG9yaWdpbik7CiAgICAgICAg
IH0KIAogICAgICAgICBhdXRvIG9yaWdpbnMgPSBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6
b3JpZ2luc1dpdGhTZXNzaW9uQ3JlZGVudGlhbHMoKTsKLSAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOworICAg
ICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhv
cmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwogICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsU3Rv
cmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMob3JpZ2luc1RvRGVsZXRl
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKLSAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZl
dGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgQ2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9w
dGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW3Ro
aXMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBzZXNzaW9uSUQs
IGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8g
ZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGF1dG8gZW50cmll
c1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dENvb2tpZXNGb3IsIGVudHJpZXMpOworICAgICAgICAgICAgYXV0byBlbnRyaWVzVG9EZWxl
dGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29v
a2llV2Vic2l0ZURhdGFGb3IsIGVudHJpZXMpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVudHJ5IDogZW50cmllc1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKQEAgLTE4MzgsMTUgKzE4MTYsMTUgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250
YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKSB7Ci0gICAgICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBvcmln
aW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMp
OworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmln
aW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vz
c2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
LCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdp
bnMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJl
Z2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJz
aXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwogICAgICAgICAgICAg
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyhz
ZXNzaW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlKSkgewotICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9j
YWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0byYmIG9y
aWdpbnMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZv
clJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVz
Rm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7CisgICAgICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxOb25D
b29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5z
LCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX2RvbWFpbnMpOwogICAgICAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUs
IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTE4NTYsMTIgKzE4MzQsMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMu
Z2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAg
ICAgICAvLyBGSVhNRTogUGljayB0aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhl
IHNlc3Npb24gSUQuCi0gICAgICAgIHBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRhc2soW3Ro
aXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKSwgcGF0aCA9IGNyb3NzVGhyZWFkQ29weShwYXRoKSwgZG9tYWluc1RvRGVsZXRlQWxs
QnV0Q29va2llc0ZvciA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxCdXRDb29r
aWVzRm9yKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yID0gV1RG
TW92ZShkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhl
ZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0geworICAgICAgICBwb3N0U3RvcmFnZVRhc2soQ3Jvc3NU
aHJlYWRUYXNrKFt0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBjcm9zc1RocmVhZENvcHkocGF0aCksIGRvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yID0gY3Jvc3NUaHJlYWRDb3B5KGRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2Vzc2lvbklELCBkb21h
aW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciA9IFdURk1vdmUoZG9tYWluc1Rv
RGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IpLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0
YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBkb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhv
c3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5jb250YWlucyhkb21haW4pKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmNv
bnRhaW5zKGRvbWFpbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgICAgICAgICBlbnRyaWVzVG9EZWxldGUuYXBwZW5kKHNlY3VyaXR5T3JpZ2luKTsK
QEAgLTE4NzcsOSArMTg1NSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHBhdGggPSBtX3NlcnZpY2VXb3JrZXJJbmZvLmdldChzZXNz
aW9uSUQpLmRhdGFiYXNlUGF0aDsKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYmIHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucykpIHsKLSAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3JpZ2lu
c1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5z
KSBtdXRhYmxlIHsKKyAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3Jp
Z2luc1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0ZUFs
bE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNl
Y3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5
T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFkb21haW5z
VG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCisgICAgICAgICAgICAg
ICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5jb250YWlu
cyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmln
aW4uaG9zdCkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKTsKICAgICAgICAgICAg
ICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jbGVhcihzZWN1cml0eU9yaWdpbiwg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
CkBAIC0xODg5LDE0ICsxODY3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAjZW5kaWYK
IAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKSkgewotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW3Nlc3Npb25JRCwgZmV0
Y2hPcHRpb25zLCAmZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgJmNhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRy
aWVzKHNlc3Npb24uY2FjaGUoKSwgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtkb21haW5zVG9E
ZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpLCBzZXNzaW9uID0gbWFrZVdlYWtQdHIoJnNlc3Npb24pXShhdXRvIGVu
dHJpZXMpIG11dGFibGUgeworICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW3Nlc3Npb25J
RCwgZmV0Y2hPcHRpb25zLCAmZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFG
b3IsICZjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgICAgIGZl
dGNoRGlza0NhY2hlRW50cmllcyhzZXNzaW9uLmNhY2hlKCksIHNlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLCBbZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHNlc3Npb24gPSBtYWtl
V2Vha1B0cigmc2Vzc2lvbildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFzZXNzaW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBlbnRyaWVzVG9EZWxldGU7CiAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkp
KQorICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnku
b3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFp
bnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5v
cmlnaW4uaG9zdCkpOwpAQCAtMTkwNywyMiArMTg4NSwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaQogICAgIH0KIAogICAgIGF1dG8gZGF0YVR5cGVzRm9yVUlQcm9jZXNzID0gV2Vic2l0ZURh
dGE6OmZpbHRlcih3ZWJzaXRlRGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSSk7
Ci0gICAgaWYgKCFkYXRhVHlwZXNGb3JVSVByb2Nlc3MuaXNFbXB0eSgpICYmICFkb21haW5zVG9E
ZWxldGVBbGxCdXRDb29raWVzRm9yLmlzRW1wdHkoKSkgeworICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0
ZURhdGFGb3IuaXNFbXB0eSgpKSB7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0gKGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CiAgICAgICAgICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX2RvbWFpbnMuYWRkKGRvbWFpbik7CiAgICAgICAgIH07Ci0gICAgICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6RGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhzZXNzaW9uSUQsIGRhdGFUeXBlc0ZvclVJUHJvY2VzcywgZmV0Y2hPcHRpb25zLCBkb21haW5z
VG9EZWxldGVBbGxCdXRDb29raWVzRm9yKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXNGb3JVSVByb2Nlc3MsIGZl
dGNoT3B0aW9ucywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gY29va2llVHlwZSA9IFdlYnNpdGVEYXRhVHlwZTo6Q29va2ll
czsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRv
UmVtb3ZlPj4gdG9EZWxldGVGb3IgPSB7Ci0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKGRvbWFpbiwg
aW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbCA6IFdlYnNp
dGVEYXRhVG9SZW1vdmU6OkFsbEJ1dEh0dHBPbmx5Q29va2llcykKLSAgICB9OwotICAgIGRlbGV0
ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25JRCwgY29va2llVHlwZSwg
V1RGTW92ZSh0b0RlbGV0ZUZvciksIHRydWUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRv
bWFpbnNEZWxldGVkRm9yKSBtdXRhYmxlIHsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZUZvcjsKKyAgICBpZiAoaW5jbHVkZUh0
dHBPbmx5Q29va2llcykKKyAgICAgICAgdG9EZWxldGVGb3IuZG9tYWluc1RvRGVsZXRlQWxsQ29v
a2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKyAgICBlbHNlCisgICAgICAgIHRvRGVsZXRlRm9yLmRv
bWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKwor
ICAgIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoc2Vz
c2lvbklELCBjb29raWVUeXBlLCBXVEZNb3ZlKHRvRGVsZXRlRm9yKSwgdHJ1ZSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc0RlbGV0ZWRGb3IpIG11dGFibGUgewogICAgICAgICBV
TlVTRURfUEFSQU0oZG9tYWluc0RlbGV0ZWRGb3IpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDFjMTk4NDE0NzRiZDFkNWRiMjJjZDc1M2ZlNGE0MTQ4ZTRjMzc5YzUuLjE5
NWQ1NjA0OWM3NjEzMzFjMDczYjAxMjM4MWZhODNjMTdiOGY4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyVXNlcklu
dGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1v
dmU+PiYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCBkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxl
RG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2b2lkIHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCmluZGV4IDBjMzNlYmZmNjA0ODQ4ZjRiZjI1ZjhhMWM0OTIwZGIzNWVmNmY5
MjYuLjhhOTNlYjZiYjEwMDI3ODEwYzdhYmU4ZjBkNWZkM2Y0YzRhNWYzNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yMTMsOSAr
MjEzLDkgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0
cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXYKICAgICBtX25ldHdvcmtQcm9jZXNzLT5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQobnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0
aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2Vy
SW50ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291
cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdp
dGhvdXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRh
dGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSksIDApOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9u
OjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4s
IFdlYnNpdGVEYXRhVG9SZW1vdmU+PiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlQW5kUmVz
dHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMsIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdl
YnNpdGVEYXRhRm9yJiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlV2Vic2l0ZURhdGFG
b3JSZWdpc3RyYWJsZURvbWFpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21h
aW5zKSwgc2hvdWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hv
dWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5l
dHdvcmtTZXNzaW9uOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggYzUyODAwNWI4NzkzN2RlODk1ZjUzZThmOTNhM2E4YTg2NzdiNWExMy4uYTRi
ZGM5ZDlhYTY4ZWVhNTI1Njk5ZTc1NTExODI4MGUzYzM0MDNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTMsNyArOTMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgYm9vbCBpc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJv
Y2Vzc2VkKCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+JiYsIGJvb2wgc2hvdWxkTm90
aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJl
Z2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9t
YWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
dW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNo
ZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3BQcmV2
YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24s
IHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNl
V2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVuc2lnbmVk
IHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblVuaXF1
ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3Zl
ZFdpdGhvdXRVSSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394463</attachid>
            <date>2020-03-24 19:53:28 -0700</date>
            <delta_ts>2020-03-24 20:21:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209463-20200324195327.patch</filename>
            <type>text/plain</type>
            <size>46075</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYxNTg2NTc5YTBkOTljMjQ5
OGYwMzNkNjBmZmJmNTdjYjEwN2M3NDQuLjIyNTY1MzZiNDI2YmYwMzFmMjFkZDViNjQ3NjhhNjBi
ZTg4NmVmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDMtMjQgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcigpIHRvIHJldHVybiBhIHN0cnVjdCBpbnN0ZWFkIG9mIGEgVmVjdG9yIG9m
IHBhaXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0NjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwODA4NzU5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZG9lcyB0aHJl
ZSB0aGluZ3M6CisKKyAgICAgICAgMS4gUmVwbGFjZXMgdGhlIFZlY3RvcjxzdGQ6OnBhaXI8UmVn
aXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiB3aXRoIGEgbmV3IHN0cnVjdCBj
YWxsZWQKKyAgICAgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0
ZURhdGFGb3IgZm9yIHNlbmRpbmcgYXJvdW5kIHdoaWNoIGRvbWFpbnMgdG8gZGVsZXRlIHdlYnNp
dGUgZGF0YSBmb3IuCisKKyAgICAgICAgMi4gUmVtb3ZlcyB0aGUgZW51bSBXZWJzaXRlRGF0YVRv
UmVtb3ZlLCByZXBsYWNpbmcgaXRzIHN0cnVjdHVyZSB3aXRoIHRoZSBtZW1iZXJzIG9mIHRoZSBh
Ym92ZSBtZW50aW9uZWQgc3RydWN0OgorICAgICAgICAtIGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tp
ZXNGb3IKKyAgICAgICAgLSBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IK
KyAgICAgICAgLSBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcgorCisg
ICAgICAgIDMuIENvbnNpc3RlbnRseSByZW5hbWVzICJkb21haW5zVG9EZWxldGVGb3IiIHRvICJk
b21haW5zVG9EZWxldGVPclJlc3RyaWN0Rm9yIiBpbiBwcmVwYXJhdGlvbiBmb3Igd2Vic2l0ZSBk
YXRhCisgICAgICAgIHBvbGljaWVzIHRoYXQgYXJlIG5vdCBhYm91dCBkZWxldGlvbiwgc2VlIGZv
ciBpbnN0YW5jZSByZWNlbnRseSBsYW5kZWQgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzI1ODg4NC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZWQgZnVuY3Rpb25h
bGl0eS4gVGhpcyBjb2RlIGlzIGNvdmVyZWQgYnkgc2V2ZXJhbCBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxl
RG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpkb21haW5zVG9TdHJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRz
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9E
ZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisKIDIwMjAtMDMtMjQgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEN1c3RvbWl6
ZSBhIGJpdCBtb3JlIG9uIHRoZSBtYWNPUyBMb2NhbEF1dGhlbnRpY2F0aW9uIHByb21wdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
aW5kZXggZGU3MGZjMTY2OTQxNzVkMWE5MzU2MzIxOThlMjZlMDU4ZmE4YmNlNS4uZGM2ZmZmMmEx
OTgyMjliY2EyMzYzZDk2MzhkYTkxOTBiY2Y4MjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yMzUzLDcgKzIzNTMs
NyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRSZW1v
dmVBbGxCdXRDb29raWVzRm9yKGNvbnN0IERvbQogICAgIHJldHVybiBpc1JlbW92YWxFbmFibGVk
ICYmICFpc1Jlc291cmNlR3JhbmRmYXRoZXJlZCAmJiAhaGFzSGFkVW5leHBpcmVkUmVjZW50VXNl
ckludGVyYWN0aW9uKHJlc291cmNlU3RhdGlzdGljLCB3aW5kb3cpOwogfQogCi1WZWN0b3I8c3Rk
OjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvUmVtb3ZlV2Vi
c2l0ZURhdGFGb3IoKQorUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0
ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlZ2lzdHJhYmxl
RG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjM2NywxNiArMjM2NywxNyBAQCBWZWN0b3I8c3Rk
OjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljcwogCiAgICAgYXV0byBub3cgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgYXV0
byBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBub3c7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdp
c3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IGRvbWFpbnNUb1JlbW92ZVdlYnNp
dGVEYXRhRm9yOworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNp
dGVEYXRhRm9yIHRvRGVsZXRlT3JSZXN0cmljdEZvcjsKIAogICAgIFZlY3RvcjxEb21haW5EYXRh
PiBkb21haW5zID0gdGhpcy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWlu
SURzVG9DbGVhckdyYW5kZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9t
YWlucykgewogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RV
c2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7
Ci0gICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNo
b3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKQotICAgICAgICAgICAgZG9tYWluc1RvUmVtb3Zl
V2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXRpc3RpYy5yZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsKSk7Ci0gICAgICAgIGVsc2UgaWYgKHNo
b3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5k
ZmF0aGVyaW5nKSkgewotICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3Iu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0
ZURhdGFUb1JlbW92ZTo6QWxsQnV0Q29va2llcykpOworICAgICAgICBpZiAoc2hvdWxkUmVtb3Zl
QWxsV2Vic2l0ZURhdGFGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5n
KSkgeworICAgICAgICAgICAgdG9EZWxldGVPclJlc3RyaWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFs
bENvb2tpZXNGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAg
ICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vi
c2l0ZURhdGFGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAg
IH0gZWxzZSBpZiAoc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0ZvcihzdGF0aXN0aWMsIHNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CisgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJp
Y3RGb3IuZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0
YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CiAgICAgICAgICAgICBzZXRJc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZmFs
c2UpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaG91bGRDbGVhckdyYW5kZmF0aGVyaW5nICYm
IHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkKQpAQCAtMjM4NCwxNSArMjM4NSwxMiBAQCBWZWN0b3I8
c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcwogICAgIH0KIAogICAgIC8vIEdpdmUgdGhlIHVzZXIgZW5vdWdoIHRp
bWUgdG8gaW50ZXJhY3Qgd2l0aCB3ZWJzaXRlcyB1bnRpbCB3ZSByZW1vdmUgbm9uLWNvb2tpZSB3
ZWJzaXRlIGRhdGEuCi0gICAgaWYgKCFwYXJhbWV0ZXJzKCkuaXNSdW5uaW5nVGVzdCAmJiBub3cg
LSBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPiBwYXJhbWV0ZXJzKCkubWluaW11bVRpbWVCZXR3ZWVu
RGF0YVJlY29yZHNSZW1vdmFsKSB7Ci0gICAgICAgIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRh
Rm9yLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoYXV0byYgcGFpcikgewotICAgICAgICAgICAgcmV0
dXJuIHBhaXIuc2Vjb25kID09IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dENvb2tpZXM7Ci0g
ICAgICAgIH0pOwotICAgIH0KKyAgICBpZiAoIXBhcmFtZXRlcnMoKS5pc1J1bm5pbmdUZXN0ICYm
IG5vdyAtIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA+IHBhcmFtZXRlcnMoKS5taW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpCisgICAgICAgIHRvRGVsZXRlT3JSZXN0cmljdEZvci5k
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5jbGVhcigpOwogCiAgICAg
Y2xlYXJHcmFuZGZhdGhlcmluZyhXVEZNb3ZlKGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmlu
ZykpOwogICAgIAotICAgIHJldHVybiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcjsKKyAg
ICByZXR1cm4gdG9EZWxldGVPclJlc3RyaWN0Rm9yOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDVi
YTAwZWJjOThlMDZhMWI5YTk2MjE0ZjNlMTMwNTBmNmZlNDJmNDguLjdmYzAzZmFmZmQ1MjkzY2Fm
YmQxMDJlMzQxNGM2N2MzMDM2MGFjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnBhaXI8QWRkZWRSZWNvcmQsIE9wdGlvbmFsPHVuc2lnbmVkPj4gZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxXZWJzaXRl
RGF0YUZvcihjb25zdCBEb21haW5EYXRhJiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVy
aW5nKTsKICAgICBib29sIHNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoY29uc3QgRG9tYWlu
RGF0YSYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyk7Ci0gICAgVmVjdG9yPHN0
ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IHJlZ2lzdHJh
YmxlRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKKyAgICBSZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciByZWdpc3RyYWJsZURv
bWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcigpIG92ZXJyaWRlOwogICAgIGJv
b2wgaXNEYXRhYmFzZVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ym9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDdhODRjMGNkOWJiNjQzNmYyZWM3NGY1
OWY5OTdhNjdhMzJhOWIwYjcuLjEyNWFlYTFhM2MxZjg4N2QwYzNiZjZmZjk3MzUzNjg5MmNlM2E1
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwCkBAIC05MTQsNyArOTE0LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoUmVzb3VyY2VMb2EKICAgICBy
ZXR1cm4gaXNSZW1vdmFsRW5hYmxlZCAmJiAhaXNSZXNvdXJjZUdyYW5kZmF0aGVyZWQgJiYgIWhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgd2lu
ZG93KTsKIH0KIAotVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFi
bGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpCitSZWdpc3RyYWJsZURvbWFpbnNUb0Rl
bGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtOTI2LDEzICs5MjYs
MTQgQEAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1Jl
bW92ZT4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3MKIAogICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6
Om5vdygpOwogICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93OwotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiBkb21h
aW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcjsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAgICAgZm9y
IChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewog
ICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50ZXJh
Y3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7Ci0gICAgICAg
IGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNr
Rm9yR3JhbmRmYXRoZXJpbmcpKQotICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURh
dGFGb3IuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwg
V2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsKSk7Ci0gICAgICAgIGVsc2UgaWYgKHNob3VsZFJlbW92
ZUFsbEJ1dENvb2tpZXNGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5n
KSkgewotICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1Jl
bW92ZTo6QWxsQnV0Q29va2llcykpOworICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0
ZURhdGFGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgeworICAg
ICAgICAgICAgdG9EZWxldGVPclJlc3RyaWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNG
b3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICB0b0Rl
bGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFG
b3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0ZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9y
R3JhbmRmYXRoZXJpbmcpKSB7CisgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9t
YWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuYXBwZW5kKHN0YXRpc3RpYy5y
ZWdpc3RyYWJsZURvbWFpbik7CiAgICAgICAgICAgICBzdGF0aXN0aWMuZ290TGlua0RlY29yYXRp
b25Gcm9tUHJldmFsZW50UmVzb3VyY2UgPSBmYWxzZTsKICAgICAgICAgfQogCkBAIC05NDEsMTMg
Kzk0MiwxMCBAQCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0
YVRvUmVtb3ZlPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogICAgIH0KIAogICAgIC8vIEdpdmUg
dGhlIHVzZXIgZW5vdWdoIHRpbWUgdG8gaW50ZXJhY3Qgd2l0aCB3ZWJzaXRlcyB1bnRpbCB3ZSBy
ZW1vdmUgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEuCi0gICAgaWYgKCFwYXJhbWV0ZXJzKCkuaXNS
dW5uaW5nVGVzdCAmJiBub3cgLSBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPiBwYXJhbWV0ZXJzKCku
bWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKSB7Ci0gICAgICAgIGRvbWFpbnNU
b1JlbW92ZVdlYnNpdGVEYXRhRm9yLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoYXV0byYgcGFpcikg
ewotICAgICAgICAgICAgcmV0dXJuIHBhaXIuc2Vjb25kID09IFdlYnNpdGVEYXRhVG9SZW1vdmU6
OkFsbEJ1dENvb2tpZXM7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBpZiAoIXBhcmFtZXRlcnMo
KS5pc1J1bm5pbmdUZXN0ICYmIG5vdyAtIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA+IHBhcmFtZXRl
cnMoKS5taW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpCisgICAgICAgIHRvRGVs
ZXRlT3JSZXN0cmljdEZvci5kb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZv
ci5jbGVhcigpOwogCi0gICAgcmV0dXJuIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yOwor
ICAgIHJldHVybiB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggYmFmOGIx
NjRiYjk1ODgyNzVkMmIyZmNlNWViNWE5MzcyNmNhOGMzNi4uNWM4YTQ2ZGNhMzNmYTIzM2VkNmMx
ZDk4YWU2NDViMzg4NjkzNDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFi
bGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiByZWdpc3RyYWJsZURvbWFpbnNUb1JlbW92
ZVdlYnNpdGVEYXRhRm9yKCkgb3ZlcnJpZGU7CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxl
dGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKICAgICBib29sIGlzTWVtb3J5U3RvcmUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBXZWFrUHRyPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gbV9wZXJzaXN0ZW50U3RvcmFnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNzcwNWY1NjAyYTQ4
ODk5OTU5MWY5NjI4ODM2M2U1ZDhiZjYyZWYxZS4uOGU3ZWEyMDUzYzc0YjI0N2EzNDQ5NmRmZmNm
MGI4YzUxNWQxNGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKQEAgLTY3LDI2ICs2NywyNiBAQCBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhj
b25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+
PiYgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpCitzdGF0aWMgU3RyaW5nIGRvbWFpbnNU
b1N0cmluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciYgZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKQogewogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBkb21haW5zVG9S
ZW1vdmVXZWJzaXRlRGF0YUZvcikgewotICAgICAgICBhdXRvJiBkb21haW4gPSBwYWlyLmZpcnN0
OwotICAgICAgICBhdXRvJiBkYXRhVG9SZW1vdmUgPSBwYWlyLnNlY29uZDsKKyAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21h
aW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJpbmcoKSk7Ci0gICAgICAgIHN3aXRjaCAoZGF0YVRvUmVt
b3ZlKSB7Ci0gICAgICAgIGNhc2UgV2Vic2l0ZURhdGFUb1JlbW92ZTo6QWxsOgotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGRhdGEpIik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRIdHRwT25seUNvb2tp
ZXM6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihhbGwgYnV0IEh0dHBPbmx5
IGNvb2tpZXMpIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJzaXRlRGF0
YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIoYWxsIGJ1dCBjb29raWVzKSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGRhdGEpIik7CisgICAgfQorICAg
IGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcikgeworICAgICAgICBp
ZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW4uc3RyaW5nKCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihhbGwgYnV0IEh0dHBPbmx5IGNvb2tpZXMpIik7Cisg
ICAgfQorICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdl
YnNpdGVEYXRhRm9yLmRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSB7
CisgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJpbmco
KSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGFsbCBidXQgY29va2llcykiKTsK
ICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTE5OSwxOCArMTk5
LDE4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jk
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYKICAgICAgICAgbV9hY3RpdmVQbHVnaW5Ub2tl
bnMuYWRkKHBsdWdpbi0+cGx1Z2luUHJvY2Vzc1Rva2VuKCkpOwogI2VuZGlmCiAKLSAgICBhdXRv
IGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yID0gcmVnaXN0cmFibGVEb21haW5zVG9SZW1v
dmVXZWJzaXRlRGF0YUZvcigpOwotICAgIGlmIChkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZv
ci5pc0VtcHR5KCkpIHsKKyAgICBhdXRvIGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciA9IHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yKCk7CisgICAgaWYgKGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5p
c0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVk
LCBJVFBEZWJ1ZywgIkFib3V0IHRvIHJlbW92ZSBkYXRhIHJlY29yZHMgZm9yICUiIFBVQkxJQ19M
T0dfU1RSSU5HICIuIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRh
Rm9yKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dn
aW5nRW5hYmxlZCwgSVRQRGVidWcsICJBYm91dCB0byByZW1vdmUgZGF0YSByZWNvcmRzIGZvciAl
IiBQVUJMSUNfTE9HX1NUUklORyAiLiIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zVG9EZWxldGVP
clJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgc2V0RGF0YVJl
Y29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3N0b3JlID0gbWFrZVJlZihtX3N0b3JlKSwgZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3Ig
PSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZS5jb3B5UmVmKCldICgpIG11dGFibGUgewotICAg
ICAgICBzdG9yZS0+ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShk
b21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFS
ZWNvcmRzV2VyZVNjYW5uZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3b3JrUXVldWUgPSB3b3Jr
UXVldWUuY29weVJlZigpXShjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlu
c1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKG1fc3RvcmUpLCBkb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvRGVsZXRlT3JSZXN0
cmljdFdlYnNpdGVEYXRhRm9yKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHNob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUu
Y29weVJlZigpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShkb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya1F1ZXVlID0gd29ya1F1ZXVlLmNv
cHlSZWYoKV0oY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNXaXRoRGVs
ZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0
Y2goW2RvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFp
bnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCmluZGV4IGMyYjQzOTNlYjM4YzIxNDI4Y2Q0ZTI1OTM1YTY4ZDFhOWU1N2M0Y2EuLmMz
Y2RhOWI3MWQzOGRiZmVjYzViZjQyMzJjZWY4NGEyM2U1ZjA3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5
KCk7CiAgICAgdm9pZCBtZXJnZU9wZXJhdGluZ0RhdGVzKFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYm
KTsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50
UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPHN0ZDo6cGFp
cjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IHJlZ2lzdHJhYmxlRG9t
YWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKSA9IDA7CisgICAgdmlydHVhbCBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciByZWdpc3RyYWJsZURvbWFp
bnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcigpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKSA9IDA7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUmIHN0b3JlKCkgeyByZXR1cm4gbV9zdG9yZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA3ZDk0NTlhNDVhMTQw
Y2NjMjNkMDRkZDdjODFhZmE1ODg4MWI3YThkLi4yMzZkZjY2NGUyYzljZWQ4YTE2YjE4ZmJkOGJm
MTI5M2QwOWI0OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTI0OCwxMiArMTI0OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiAgICAgbV9uZXR3b3JrU2Vzc2lv
biA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpk
ZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMsIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdl
YnNpdGVEYXRhVG9SZW1vdmU+PiYmIGRvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yLCBib29s
IHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5z
VG9EZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIAogICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG1fbmV0d29ya1Nl
c3Npb24tPmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKGRhdGFUeXBlcywg
V1RGTW92ZShkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlw
ZXMsIFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvciksIHNo
b3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCmluZGV4IGJjMWM5NzkzODNiYTlmNmUyNmIzMGE4M2ZlNGNmNmIyZGQ2YmVjZTUuLmNjNGU3
YWQ3NTkxMjk3OGM2MmY4OWJlODIyNDM0NDczODE0NDMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTcwLDE3ICs3MCwxOSBAQCBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6
IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgOiBib29sIHsgTm8sIFll
cyB9OwogZW51bSBjbGFzcyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIDog
Ym9vbCB7IE5vLCBZZXMgfTsKLWVudW0gY2xhc3MgV2Vic2l0ZURhdGFUb1JlbW92ZSA6IHVpbnQ4
X3QgewotICAgIEFsbCwKLSAgICBBbGxCdXRIdHRwT25seUNvb2tpZXMsCi0gICAgQWxsQnV0Q29v
a2llcwotfTsKIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CiAg
ICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4geyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRD
b3B5KCksIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpIH07IH0K
IH07CitzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURh
dGFGb3IgeworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1Rv
RGVsZXRlQWxsQ29va2llc0ZvcjsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcjsKKyAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yOworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdl
YnNpdGVEYXRhRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvRGVs
ZXRlQWxsQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0
cE9ubHlDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvci5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0Zvci5pc0VtcHR5KCkgJiYg
ZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmlzRW1wdHkoKSAmJiBkb21h
aW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5pc0VtcHR5KCk7IH0KK307CiAK
IGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKIHB1YmxpYzoKQEAgLTIxNSw3ICsyMTcsNyBAQCBzdHJ1
Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGxv
Z0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8
c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4mJiwgYm9v
bCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
UmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9v
bCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0
aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlm
eVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
Jik+JiYpOwogICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGY1MWNhZjFkZjg0MTAxN2RjOGMzYzc4NmQx
YzdkYmRjZWM0YzRmMWUuLmYyMjAxMjcxMDAzZmE0NTI0ZDE4ZDM3OWVhYWU2ODAyNWVhN2FlMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xNzA5LDcgKzE3MDksNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNvbnN0IEhhcwogICAgIHJldHVy
biBvcmlnaW5zRGVsZXRlZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8c3RkOjpwYWly
PFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4mJiBkb21haW5zLCBib29s
IHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJz
aXRlRGF0YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9w
dGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nlc3NlczsKIApA
QCAtMTc0MSw0NiArMTc0MSwyNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogCiAgICAgSGFz
aFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhDb29raWVzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBo
b3N0TmFtZXNXaXRoSFNUU0NhY2hlOwotCi0gICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9EZWxldGVDb29raWVzRm9yOwotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yOwotICAgIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvcjsKICAgICBWZWN0
b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlOworICAgIGF1dG8gZG9tYWlu
c1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IgPSBkb21haW5zLmRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yOwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKLSAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZG9tYWlucykgewotICAgICAgICAgICAgYXV0byYgZG9tYWluID0gcGFpci5maXJz
dDsKLSAgICAgICAgICAgIGF1dG8mIGRhdGFUb1JlbW92ZSA9IHBhaXIuc2Vjb25kOwotICAgICAg
ICAgICAgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAoZGF0YVRvUmVtb3ZlKSB7Ci0gICAgICAgICAgICBjYXNlIFdlYnNp
dGVEYXRhVG9SZW1vdmU6OkFsbDoKLSAgICAgICAgICAgICAgICBkb21haW5zVG9EZWxldGVDb29r
aWVzRm9yLmFwcGVuZChkb21haW4pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBXZWJzaXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRIdHRwT25seUNvb2tpZXM6Ci0gICAg
ICAgICAgICAgICAgZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmFwcGVu
ZChkb21haW4pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJz
aXRlRGF0YVRvUmVtb3ZlOjpBbGxCdXRDb29raWVzOgotICAgICAgICAgICAgICAgIC8vIEFscmVh
ZHkgYWRkZWQuCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogCi0gICAgICAgICAg
ICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21h
aW5zKGRvbWFpbnNUb0RlbGV0ZUNvb2tpZXNGb3IsIGhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAg
ICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoZG9tYWlucy5kb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yLCBob3N0TmFt
ZXNXaXRoQ29va2llcyk7CiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSwgV2ViQ29y
ZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzKTsKIAogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSkKICAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKIAotICAgICAgICAgICAgaG9zdG5hbWVz
V2l0aENvb2tpZXNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5z
VG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IsIGhvc3ROYW1lc1dpdGhDb29raWVzKTsK
KyAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdp
c3RyYWJsZURvbWFpbnMoZG9tYWlucy5kb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tp
ZXNGb3IsIGhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1Rv
RGVsZXRlLCBXZWJDb3JlOjpJbmNsdWRlSHR0cE9ubHlDb29raWVzOjpObyk7CiAKICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUp
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CiAgICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCi0gICAg
ICAgICAgICBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmFwcGVuZChkb21haW4uZmly
c3QpOwogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxl
dGU7CkBAIC0xNzg4LDcgKzE3NjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkg
ewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgq
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAgICAg
ICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFp
bnMoZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZSk7CisgICAgICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9y
LCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKQEAgLTE4MDIsOSArMTc4MCw5IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vz
c2lvbklEIHNlc3NpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZTsKLSAgICAgICAgICAg
IHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlu
cy5zaXplKCkpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQotICAg
ICAgICAgICAgICAgIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlLnVuY2hlY2tlZEFwcGVuZChk
b21haW4uZmlyc3Quc3RyaW5nKCkpOworICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zVG9E
ZWxldGUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVX
ZWJzaXRlRGF0YUZvci5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcikKKyAgICAgICAgICAgICAg
ICByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZS51bmNoZWNrZWRBcHBlbmQoZG9tYWluLnN0cmlu
ZygpKTsKICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZp
Y2VzRm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE4MTMsMjAgKzE3OTEsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRp
YWxzKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpIHsKICAgICAgICAgICAgIGF1dG8gb3JpZ2lucyA9IHNlc3Npb24tPmNyZWRlbnRpYWxT
dG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOwotICAgICAgICAgICAgYXV0byBvcmln
aW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMp
OworICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFG
b3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zKTsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogb3JpZ2luc1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIHNlc3Npb24tPmNy
ZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2luKG9yaWdpbik7CiAg
ICAgICAgIH0KIAogICAgICAgICBhdXRvIG9yaWdpbnMgPSBXZWJDb3JlOjpDcmVkZW50aWFsU3Rv
cmFnZTo6b3JpZ2luc1dpdGhTZXNzaW9uQ3JlZGVudGlhbHMoKTsKLSAgICAgICAgYXV0byBvcmln
aW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWlu
c1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMp
OworICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9t
YWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwogICAgICAgICBXZWJDb3JlOjpDcmVkZW50
aWFsU3RvcmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMob3JpZ2luc1Rv
RGVsZXRlKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKLSAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmZldGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMo
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnNUb0Rl
bGV0ZUFsbEJ1dENvb2tpZXNGb3IsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAg
ICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBm
ZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVz
KSwgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBzZXNz
aW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
KGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGF1dG8g
ZW50cmllc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0Rl
bGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGVudHJpZXMpOworICAgICAgICAgICAgYXV0byBlbnRyaWVz
VG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxs
Tm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGVudHJpZXMpOwogCiAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVudHJ5IDogZW50cmllc1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3QoZW50cnkub3JpZ2luLmhvc3QpKTsKQEAgLTE4MzgsMTUgKzE4MTYsMTUg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKSB7Ci0gICAgICAgICAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0
ZUFsbEJ1dENvb2tpZXNGb3JdKGF1dG8mJiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywg
ZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2Rv
bWFpbnMpOworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3Jh
Z2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhp
cywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYm
IG9yaWdpbnMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRl
ckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwogICAgICAg
ICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3Jp
Z2lucyhzZXNzaW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6TG9jYWxTdG9yYWdlKSkgewotICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvcl0oYXV0
byYmIG9yaWdpbnMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZp
bHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxCdXRD
b29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7CisgICAgICAgICAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVB
bGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhv
cmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwogICAgICAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9E
ZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTE4NTYsMTIgKzE4MzQsMTIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNl
UGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkg
ewogICAgICAgICAvLyBGSVhNRTogUGljayB0aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQg
b24gdGhlIHNlc3Npb24gSUQuCi0gICAgICAgIHBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRh
c2soW3RoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKSwgcGF0aCA9IGNyb3NzVGhyZWFkQ29weShwYXRoKSwgZG9tYWluc1RvRGVs
ZXRlQWxsQnV0Q29va2llc0ZvciA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxC
dXRDb29raWVzRm9yKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9y
ID0gV1RGTW92ZShkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgc2VjdXJpdHlPcmlnaW5zID0g
aW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0geworICAgICAgICBwb3N0U3RvcmFnZVRhc2so
Q3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBjcm9zc1RocmVhZENvcHkocGF0aCks
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yID0gY3Jvc3NUaHJlYWRD
b3B5KGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2Vzc2lvbklE
LCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciA9IFdURk1vdmUoZG9t
YWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IpLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMgPSBpbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byBkb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
ZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvci5jb250YWlucyhkb21haW4pKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRh
Rm9yLmNvbnRhaW5zKGRvbWFpbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgICAgICAgICBlbnRyaWVzVG9EZWxldGUuYXBwZW5kKHNlY3VyaXR5T3Jp
Z2luKTsKQEAgLTE4NzcsOSArMTg1NSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBhdGggPSBtX3NlcnZpY2VXb3JrZXJJbmZvLmdl
dChzZXNzaW9uSUQpLmRhdGFiYXNlUGF0aDsKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYmIHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucykpIHsKLSAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0
T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0
ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlP
cmlnaW5zKSBtdXRhYmxlIHsKKyAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCku
Z2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNl
Y3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFk
b21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCisgICAgICAg
ICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5j
b250YWlucyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJp
dHlPcmlnaW4uaG9zdCkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKTsKICAgICAg
ICAgICAgICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jbGVhcihzZWN1cml0eU9y
aWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CkBAIC0xODg5LDE0ICsxODY3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAj
ZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6RGlza0NhY2hlKSkgewotICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW3Nlc3Npb25J
RCwgZmV0Y2hPcHRpb25zLCAmZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0ZvciwgJmNhbGxi
YWNrQWdncmVnYXRvcl0oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgZmV0Y2hEaXNrQ2Fj
aGVFbnRyaWVzKHNlc3Npb24uY2FjaGUoKSwgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtkb21h
aW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZXNzaW9uID0gbWFrZVdlYWtQdHIoJnNlc3Npb24pXShh
dXRvIGVudHJpZXMpIG11dGFibGUgeworICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW3Nl
c3Npb25JRCwgZmV0Y2hPcHRpb25zLCAmZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0
ZURhdGFGb3IsICZjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAg
ICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhzZXNzaW9uLmNhY2hlKCksIHNlc3Npb25JRCwgZmV0
Y2hPcHRpb25zLCBbZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHNlc3Npb24g
PSBtYWtlV2Vha1B0cigmc2Vzc2lvbildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBlbnRyaWVzVG9EZWxldGU7
CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmNvbnRhaW5z
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4u
aG9zdCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQo
ZW50cnkub3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChl
bnRyeS5vcmlnaW4uaG9zdCkpOwpAQCAtMTkwNywyMiArMTg4NSwyNSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Np
b25JRCBzZXNzaQogICAgIH0KIAogICAgIGF1dG8gZGF0YVR5cGVzRm9yVUlQcm9jZXNzID0gV2Vi
c2l0ZURhdGE6OmZpbHRlcih3ZWJzaXRlRGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBl
OjpVSSk7Ci0gICAgaWYgKCFkYXRhVHlwZXNGb3JVSVByb2Nlc3MuaXNFbXB0eSgpICYmICFkb21h
aW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yLmlzRW1wdHkoKSkgeworICAgIGlmICghZGF0YVR5
cGVzRm9yVUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2ll
V2Vic2l0ZURhdGFGb3IuaXNFbXB0eSgpKSB7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0gKGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX2RvbWFpbnMuYWRkKGRvbWFpbik7CiAgICAgICAgIH07Ci0gICAgICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhzZXNzaW9uSUQsIGRhdGFUeXBlc0ZvclVJUHJvY2VzcywgZmV0Y2hPcHRpb25zLCBk
b21haW5zVG9EZWxldGVBbGxCdXRDb29raWVzRm9yKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXNGb3JVSVByb2Nl
c3MsIGZldGNoT3B0aW9ucywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFG
b3IpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfQogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gY29va2llVHlwZSA9IFdlYnNpdGVEYXRhVHlwZTo6
Q29va2llczsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRl
RGF0YVRvUmVtb3ZlPj4gdG9EZWxldGVGb3IgPSB7Ci0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKGRv
bWFpbiwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbCA6
IFdlYnNpdGVEYXRhVG9SZW1vdmU6OkFsbEJ1dEh0dHBPbmx5Q29va2llcykKLSAgICB9OwotICAg
IGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25JRCwgY29va2ll
VHlwZSwgV1RGTW92ZSh0b0RlbGV0ZUZvciksIHRydWUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4mIGRvbWFpbnNEZWxldGVkRm9yKSBtdXRhYmxlIHsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNU
b0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZUZvcjsKKyAgICBpZiAoaW5j
bHVkZUh0dHBPbmx5Q29va2llcykKKyAgICAgICAgdG9EZWxldGVGb3IuZG9tYWluc1RvRGVsZXRl
QWxsQ29va2llc0Zvci5hcHBlbmQoZG9tYWluKTsKKyAgICBlbHNlCisgICAgICAgIHRvRGVsZXRl
Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0Zvci5hcHBlbmQoZG9tYWlu
KTsKKworICAgIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFp
bnMoc2Vzc2lvbklELCBjb29raWVUeXBlLCBXVEZNb3ZlKHRvRGVsZXRlRm9yKSwgdHJ1ZSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc0RlbGV0ZWRGb3IpIG11dGFibGUgewogICAg
ICAgICBVTlVTRURfUEFSQU0oZG9tYWluc0RlbGV0ZWRGb3IpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGYwNjQwZTkwY2QzNTM3NzExMTcyY2RmYjQ3NjQ5NWI5MGIzNWI0
ZGIuLjQxYTdhZmNjNzNiY2QzZjA0MWFmMDk0ODZlZjQ3ZDVlN2Y0OTgyODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTIwNSw3ICsyMDUs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2
b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFy
VXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRh
VG9SZW1vdmU+PiYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCBkZWxl
dGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lv
bklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxl
dGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lz
dHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2b2lk
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDBjMzNlYmZmNjA0ODQ4ZjRiZjI1ZjhhMWM0OTIwZGIz
NWVmNmY5MjYuLjhhOTNlYjZiYjEwMDI3ODEwYzdhYmU4ZjBkNWZkM2Y0YzRhNWYzNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0y
MTMsOSArMjEzLDkgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bm90aWZ5UGFnZVN0YXRpc3RpY3NU
ZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXYKICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
bnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNv
dXJjZVdpdGhvdXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01l
ZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSksIDApOwogfQogCi12b2lkIE5ldHdvcmtT
ZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5
UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRl
QW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0
cmljdFdlYnNpdGVEYXRhRm9yJiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92
ZShkb21haW5zKSwgc2hvdWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5z
KSwgc2hvdWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBib29sIHNob3VsZE5vdGlmeVBhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKaW5kZXggYzUyODAwNWI4NzkzN2RlODk1ZjUzZThmOTNhM2E4YTg2NzdiNWEx
My4uYTRiZGM5ZDlhYTY4ZWVhNTI1Njk5ZTc1NTExODI4MGUzYzM0MDNjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTMsNyArOTMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgYm9vbCBpc1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUHJvY2Vzc2VkKCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+JiYsIGJvb2wgc2hv
dWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYs
IGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJh
YmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9v
bCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVu
c2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlh
blVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRz
UmVtb3ZlZFdpdGhvdXRVSSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>