<?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>202841</bug_id>
          
          <creation_ts>2019-10-10 22:56:16 -0700</creation_ts>
          <short_desc>Use sendWithAsyncReply for cookie getting/clearing functions</short_desc>
          <delta_ts>2019-10-11 09:42:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579005</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-10 22:56:16 -0700</bug_when>
    <thetext>Use sendWithAsyncReply for cookie getting/clearing functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579006</commentid>
    <comment_count>1</comment_count>
      <attachid>380725</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-10 22:58:19 -0700</bug_when>
    <thetext>Created attachment 380725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579008</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-10 22:58:55 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579009</commentid>
    <comment_count>3</comment_count>
      <attachid>380727</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-10 23:01:07 -0700</bug_when>
    <thetext>Created attachment 380727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579010</commentid>
    <comment_count>4</comment_count>
      <attachid>380728</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-10 23:08:12 -0700</bug_when>
    <thetext>Created attachment 380728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579012</commentid>
    <comment_count>5</comment_count>
      <attachid>380729</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-10 23:26:26 -0700</bug_when>
    <thetext>Created attachment 380729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579126</commentid>
    <comment_count>6</comment_count>
      <attachid>380729</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-11 09:41:52 -0700</bug_when>
    <thetext>Comment on attachment 380729
Patch

Clearing flags on attachment: 380729

Committed r251011: &lt;https://trac.webkit.org/changeset/251011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579127</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-11 09:41:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579128</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-11 09:42:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/56193597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380725</attachid>
            <date>2019-10-10 22:58:19 -0700</date>
            <delta_ts>2019-10-10 23:01:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202841-20191010225818.patch</filename>
            <type>text/plain</type>
            <size>42723</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTEwMDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSBmb3IgY29va2llIGdldHRpbmcvY2xlYXJpbmcgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuICBUaGlzIGp1c3Qgc2ltcGxpZmllcyB0aGUgbWVzc2FnZSBzZW5kaW5nIGEgYml0Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29v
a2llU3RvcmU6OnNldENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6c2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXRDb29raWVBY2NlcHRQb2xpY3k6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KToKKyAg
ICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeSk6CisgICAgICAg
ICh3ZWJraXRfY29va2llX21hbmFnZXJfYWRkX2Nvb2tpZSk6CisgICAgICAgICh3ZWJraXRfY29v
a2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMpOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2RlbGV0ZV9jb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OmFkZFNpbmdsZUNvb2tpZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRo
QXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMC0xMCAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBNb3ZlIHJl
bW90ZSBjb21tdW5pY2F0aW9uIGhhbmRsaW5nIGZyb20gUmVtb3RlSW5zcGVjdG9yU2VydmVyIHRv
IFJlbW90ZUluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDc3
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTMgKzU0LDEyIEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoTmV0d28KIAogV2ViQ29va2llTWFuYWdlcjo6fldlYkNvb2tp
ZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaG9z
dG5hbWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvcHlUb1Zl
Y3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29weVRvVmVjdG9yKGhvc3RuYW1lcykpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQpAQCAtNjksNjIgKzY4LDU3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQ29va2llc0ZvckgKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKLQotICAgIG1fcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tp
ZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UodGltZSk7Ci0KLSAgICBtX3By
b2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZl
Y3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9w
cm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIGNvb2tpZXMgPSBzdG9y
YWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFj
a0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb29raWVzKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBjb29raWVzID0gc3RvcmFnZVNlc3Npb24tPmdldENvb2tpZXModXJs
KTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29va2llcykpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAg
ICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOwogICAgIH0KLQotICAg
IG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENv
b2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTE0OCwxNyArMTQy
LDE2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2sKICAgICAgICAg
V2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSFRUUENvb2tpZUFjY2VwdFBv
bGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
bGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgY2FsbGJhY2tJRCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgJKHJldmlzaW9u
IDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxMyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKLSNpbmNsdWRlICJIVFRQQ29va2llQWNj
ZXB0UG9saWN5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgi
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlICJTb3VwQ29va2ll
UGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCkBAIC00Niw2ICs0NCw3IEBAIHN0cnVjdCBDb29raWU7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitlbnVtIGNsYXNz
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogCiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAK
LSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgT3B0aW9uYWxDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFNvdXBDb29raWVQZXJzaXN0
ZW50U3RvcmFnZVR5cGUpOwpAQCAtNjgsMjAgKzY3LDIwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgZGVsZXRl
QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vz
c2lvbklELCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZv
aWQgc2V0Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZ2V0QWxsQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CiAgICAgSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAg
IHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTA3NzYpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjMsMjAgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICAKLSBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5h
Z2VyIHsKLSAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCittZXNzYWdlcyAtPiBXZWJD
b29raWVNYW5hZ2VyIHsKKyAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcykgQXN5bmMKICAg
ICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMpCi0gICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogCi0gICAgdm9pZCBTZXRDb29raWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgU2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFVSTCB1
cmwsIFVSTCBtYWluRG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIHZvaWQgR2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAg
IHZvaWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZv
aWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXYWxsVGltZSB0aW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lk
IFNldENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZSkgLT4gKCkgQXN5bmMKKyAgICB2b2lkIFNldENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBVUkwgdXJsLCBV
UkwgbWFpbkRvY3VtZW50VVJMKSAtPiAoKSBBc3luYworICAgIHZvaWQgR2V0QWxsQ29va2llcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29r
aWVzKSBBc3luYworICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYworICAg
IHZvaWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSBjb29raWUpIC0+ICgpIEFzeW5jCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUpIC0+
ICgpIEFzeW5jCiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZW51bTp1aW50
OF90IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdlYktpdDo6T3B0aW9u
YWxDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkgLT4gKCkgQXN5bmMKKyAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
KSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kp
IEFzeW5jCiAgICAgCiAgICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1h
Yy5tbQkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXIu
aCIKIAorI2ltcG9ydCAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3MuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0pOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7
IH0pOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiAgICAgYm9v
bCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9w
dGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpAQCAtMTY0LDggKzE2
NCw4IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYKICAgICByZXR1
cm4gY29ubmVjdGlvbigpLT5zZW5kU3luYyhzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotdm9pZCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgordm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9u
cykKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjks
NiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsCiAKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0gICAgbV9jYWxs
YmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVk
KTsKLQogICAgIFZlY3RvcjxPYnNlcnZlcio+IG9ic2VydmVyczsKICAgICBmb3IgKGF1dG8mIG9i
c2VydmVyU2V0IDogbV9jb29raWVPYnNlcnZlcnMudmFsdWVzKCkpIHsKICAgICAgICAgZm9yIChh
dXRvKiBvYnNlcnZlciA6IG9ic2VydmVyU2V0KQpAQCAtODUsMTIgKzgzLDEwIEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbEQKIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIG1fY2FsbGJh
Y2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0d29ya1Byb2Nl
c3NQcm94eSopCiB7Ci0gICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVy
cm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTEwMywyMSArOTksMTIgQEAgdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udAogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKLXsKLSAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vz
c1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vz
c2lvbklELCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVz
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxBcnJheUNhbGxiYWNr
PihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBM
b2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVhdGVTdHJp
bmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHBy
b2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPFN0cmluZz4mJiBob3N0bmFtZXMpIG11dGFibGUg
eworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoaG9zdG5hbWVzKSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3Ru
YW1lcykKQEAgLTEzMCw1NSArMTE3LDUyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb28KICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFs
bENvb2tpZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tp
ZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRl
Q29va2llKHNlc3Npb25JRCwgY29va2llLCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCkt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Np
b25JRCwgdGltZSwgY2FsbGJhY2tJRCkpOwotfQotCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29r
aWU+JiBjb29raWVzLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMsIGNhbGxiYWNrSUQpKTsKLX0KLQotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
cHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQs
IGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBjYWxsYmFja0lEKSk7CisgICAgYXV0byYg
bmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwor
ICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVuY3Rp
b24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
cHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0QWxsQ29va2llcyhzZXNzaW9u
SUQsIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29s
KCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbigpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVy
bCwgY2FsbGJhY2tJRCkpOworICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQs
IGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOworICAgIH0pOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tp
ZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKKyAgICBh
dXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9j
dW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOworICAgIH0pOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBWZWN0
b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKLSAgICBtX2NhbGxiYWNrcy50YWtlPEdldENvb2tpZXNDYWxsYmFjaz4o
Y2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKKyAg
ICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXShWZWN0b3I8Q29va2llPiYmIGNv
b2tpZXMpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoY29va2ll
cykpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRl
Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJM
JiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKLSAgICBtX2NhbGxiYWNrcy50YWtlPFZvaWRDYWxsYmFjaz4oY2FsbGJh
Y2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOworICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMo
c2Vzc2lvbklELCB1cmwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xOTEsNyArMTc1LDYgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnN0b3BPYnNlcnZpbgogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAKLQogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKGNhbGxiYWNrKQpAQCAtMjM4LDcgKzIyMSw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5Ojpjb29raWVzRGlkQ2gKICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEaWRDaGFuZ2Uo
KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBGdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpT
ZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIXByb2Nlc3NQb29sKCktPmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSkKQEAg
LTI0OCwyNCArMjMxLDE4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29v
a2kKICAgICBwcm9jZXNzUG9vbCgpLT5zZXRJbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpOwogI2VuZGlmCiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1By
b2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJ
RChjYWxsYmFja0lEKSkpOwotfQotCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENv
b2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBtX2Nh
bGxiYWNrcy50YWtlPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4oY2FsbGJhY2tJRCkt
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworICAgIGF1dG8mIG5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBu
ZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi17Ci0gICAgbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQp
LT5wZXJmb3JtQ2FsbGJhY2soKTsKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0
byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHBvbGljeSk7Cisg
ICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDI1MDc3NikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSwyMCArNjUsMjAgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0aWFs
aXplQ2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKICAgICAKLSAgICB2
b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lk
IChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZGVsZXRl
Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCk7Ci0g
ICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2Fs
bFRpbWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lk
IGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwg
RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBnZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBnZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk+JiYpOwogCiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXMoUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
UEFMOjpTZXNzaW9uSUQpOwpAQCAtMTA2LDE0ICsxMDYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdm9pZCBk
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYktpdDo6
Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3ksIFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0KLSAgICB2b2lkIGRpZFNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEdldENvb2tpZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQpOwotCiAgICAgdm9pZCBj
b29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBw
bGVtZW50CkBAIC0xMzAsOCArMTIyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcnNpc3RIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKLSAg
ICBDYWxsYmFja01hcCBtX2NhbGxiYWNrczsKLQogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwogICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZl
cnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKLSAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KTsKLSAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGVudW06dWludDhfdCBXZWJLaXQ6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7Ci0KLSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKTsKLSAgICBEaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLQogICAgIENvb2tpZXNEaWRDaGFu
Z2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAJKHJldmlzaW9uIDI1MDc3
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpj
b29raWVzKENvbXBsZXRpb24KICAgICB9CiAKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9v
bC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29r
aWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwg
W3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgIGNvb2tpZU1hbmFnZXItPmdl
dEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1v
dmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOwogICAgIH0pOwogfQpAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llcyhjb25zdCBWCiAgICAgfQogCiAg
ICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhtX293bmlu
Z0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIGNvb2tpZXMsIFtwb29sID0gV1RGTW92ZShwb29sKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tp
ZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBjb29raWVzLCBbcG9vbCA9IFdURk1v
dmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpkZWxldGVDb29raWUoY29u
c3QKICAgICB9CiAKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5kZWxl
dGVDb29raWUobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0g
V1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgY29va2llTWFu
YWdlci0+ZGVsZXRlQ29va2llKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgY29va2ll
LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OnNl
dEhUVFBDb29raWVBY2NlcAogICAgIH0KIAogICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29s
LT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tp
ZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kobV9vd25pbmdEYXRhU3RvcmUtPnNl
c3Npb25JRCgpLCBwb2xpY3ksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgbXV0YWJsZSB7CisgICAgY29va2llTWFu
YWdlci0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lv
bklEKCksIHBvbGljeSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0p
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyAr
MjE3LDcgQEAgc3RhdGljIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSB0bwogCiAtICh2
b2lkKV9zZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xp
Y3kKIHsKLSAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVt
ZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFj
Y2VwdFBvbGljeShwb2xpY3kpLCBbXSgpIHsgfSk7CiB9CiAKIC0gKGlkKV9vYmplY3RGb3JCdW5k
bGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCB2
b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIobWFuYWdlcikpOwogCiAgICAgZm9yIChhdXRv
KiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyht
YW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpCi0gICAgICAgIHByb2Nlc3NQb29sLT5zdXBwbGVt
ZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSht
YW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSksIFtdKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5z
dXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSksIFtdKCkgeyB9KTsKIH0KIAogLyoqCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCB3
ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wbwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94
eT4oKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQo
KSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kobWFuYWdl
ci0+cHJpdi0+c2Vzc2lvbklEKCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3kpIHsKICAgICAgICAgZ190YXNrX3JldHVybl9pbnQodGFzay5nZXQo
KSwgdG9XZWJLaXRDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiAgICAgfSk7CiB9CkBAIC0y
NjcsMTQgKzI2Nyw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2FkZF9jb29raWUoV2UK
ICAgICAvLyBDb29raWVzIGFyZSByZWFkL3dyaXR0ZW4gZnJvbS90byB0aGUgc2FtZSBTUUxpdGUg
ZGF0YWJhc2Ugb24gZGlzayByZWdhcmRsZXNzCiAgICAgLy8gb2YgdGhlIHByb2Nlc3Mgd2UgYWNj
ZXNzIHRoZW0gZnJvbSwgc28ganVzdCB1c2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbC4KICAgICBj
b25zdCBhdXRvJiBwcm9jZXNzUG9vbHMgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9j
ZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpOwotICAgIHByb2Nlc3NQb29sc1sw
XS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldENvb2tpZXMobWFuYWdl
ci0+cHJpdi0+c2Vzc2lvbklEKCksIHsgV2ViQ29yZTo6Q29va2llKGNvb2tpZSkgfSwgW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlm
IChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMgbm90
IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24gImNhbmNl
bGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgotICAgICAgICAgICAg
Z190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJP
Ul9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2Vi
Q29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVzKG1hbmFnZXItPnByaXYtPnNlc3Npb25J
RCgpLCB7IFdlYkNvcmU6OkNvb2tpZShjb29raWUpIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
KSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBUUlVFKTsKICAg
ICB9KTsKIH0KQEAgLTMyNSwxNCArMzE4LDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJf
Z2V0X2Nvb2tpZXMoVwogICAgIC8vIENvb2tpZXMgYXJlIHJlYWQvd3JpdHRlbiBmcm9tL3RvIHRo
ZSBzYW1lIFNRTGl0ZSBkYXRhYmFzZSBvbiBkaXNrIHJlZ2FyZGxlc3MKICAgICAvLyBvZiB0aGUg
cHJvY2VzcyB3ZSBhY2Nlc3MgdGhlbSBmcm9tLCBzbyBqdXN0IHVzZSB0aGUgZmlyc3QgcHJvY2Vz
cyBwb29sLgogICAgIGNvbnN0IGF1dG8mIHByb2Nlc3NQb29scyA9IHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcik7Ci0gICAg
cHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0
Q29va2llcyhtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgVVJMKFVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHVyaSkpLCBbdGFzayA9IFdURk1vdmUodGFzayldKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMg
bm90IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24gImNh
bmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgotICAgICAgICAg
ICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19F
UlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8
V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVzKG1hbmFnZXItPnByaXYtPnNlc3Np
b25JRCgpLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92
ZSh0YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKICAgICAg
ICAgR0xpc3QqIGNvb2tpZXNMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChhdXRvJiBjb29r
aWUgOiBjb29raWVzKQogICAgICAgICAgICAgY29va2llc0xpc3QgPSBnX2xpc3RfcHJlcGVuZChj
b29raWVzTGlzdCwgY29va2llLnRvU291cENvb2tpZSgpKTsKQEAgLTM5MCwxNCArMzc2LDcgQEAg
dm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Nvb2tpZQogICAgIC8vIENvb2tpZXMg
YXJlIHJlYWQvd3JpdHRlbiBmcm9tL3RvIHRoZSBzYW1lIFNRTGl0ZSBkYXRhYmFzZSBvbiBkaXNr
IHJlZ2FyZGxlc3MKICAgICAvLyBvZiB0aGUgcHJvY2VzcyB3ZSBhY2Nlc3MgdGhlbSBmcm9tLCBz
byBqdXN0IHVzZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sLgogICAgIGNvbnN0IGF1dG8mIHByb2Nl
c3NQb29scyA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2Vy
LT5wcml2LT5kYXRhTWFuYWdlcik7Ci0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdl
YkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+ZGVsZXRlQ29va2llKG1hbmFnZXItPnByaXYtPnNlc3Np
b25JRCgpLCBXZWJDb3JlOjpDb29raWUoY29va2llKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGNhbiBvbmx5IGhhcHBl
biBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMgbm90IGF2YWlsYWJsZSwKLSAgICAg
ICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24gImNhbmNlbGxlZCIgZnJvbSB0aGUgcG9p
bnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgotICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdf
ZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9w
ZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5
PigpLT5kZWxldGVDb29raWUobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIFdlYkNvcmU6OkNv
b2tpZShjb29raWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKCkgewogICAgICAgICBnX3Rhc2tf
cmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTgsMTEgKzEzNTgsOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5n
bGVDb29rCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRB
SUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBm
b3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1f
cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNv
b2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJF
REVGSU5FRF9FUlJPUl9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICBjb29raWVNYW5hZ2VyLT5z
ZXRDb29raWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgeyBjb29raWUg
fSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXSgpIHsKKyAgICAgICAgY2FsbGJhY2st
PnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380727</attachid>
            <date>2019-10-10 23:01:07 -0700</date>
            <delta_ts>2019-10-10 23:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202841-20191010230106.patch</filename>
            <type>text/plain</type>
            <size>44055</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTEwMDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSBmb3IgY29va2llIGdldHRpbmcvY2xlYXJpbmcgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuICBUaGlzIGp1c3Qgc2ltcGxpZmllcyB0aGUgbWVzc2FnZSBzZW5kaW5nIGEgYml0Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29v
a2llU3RvcmU6OnNldENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6c2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXRDb29raWVBY2NlcHRQb2xpY3k6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KToKKyAg
ICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeSk6CisgICAgICAg
ICh3ZWJraXRfY29va2llX21hbmFnZXJfYWRkX2Nvb2tpZSk6CisgICAgICAgICh3ZWJraXRfY29v
a2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMpOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2RlbGV0ZV9jb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OmFkZFNpbmdsZUNvb2tpZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRo
QXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMC0xMCAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBNb3ZlIHJl
bW90ZSBjb21tdW5pY2F0aW9uIGhhbmRsaW5nIGZyb20gUmVtb3RlSW5zcGVjdG9yU2VydmVyIHRv
IFJlbW90ZUluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDc3
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTMgKzU0LDEyIEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoTmV0d28KIAogV2ViQ29va2llTWFuYWdlcjo6fldlYkNvb2tp
ZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaG9z
dG5hbWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvcHlUb1Zl
Y3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29weVRvVmVjdG9yKGhvc3RuYW1lcykpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQpAQCAtNjksNjIgKzY4LDU3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQ29va2llc0ZvckgKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKLQotICAgIG1fcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tp
ZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UodGltZSk7Ci0KLSAgICBtX3By
b2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZl
Y3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9w
cm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIGNvb2tpZXMgPSBzdG9y
YWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFj
a0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb29raWVzKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBjb29raWVzID0gc3RvcmFnZVNlc3Npb24tPmdldENvb2tpZXModXJs
KTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29va2llcykpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAg
ICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOwogICAgIH0KLQotICAg
IG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENv
b2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTE0OCwxNyArMTQy
LDE2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2sKICAgICAgICAg
V2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSFRUUENvb2tpZUFjY2VwdFBv
bGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
bGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgY2FsbGJhY2tJRCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgJKHJldmlzaW9u
IDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxMyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKLSNpbmNsdWRlICJIVFRQQ29va2llQWNj
ZXB0UG9saWN5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgi
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlICJTb3VwQ29va2ll
UGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCkBAIC00Niw2ICs0NCw3IEBAIHN0cnVjdCBDb29raWU7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitlbnVtIGNsYXNz
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogCiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAK
LSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgT3B0aW9uYWxDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFNvdXBDb29raWVQZXJzaXN0
ZW50U3RvcmFnZVR5cGUpOwpAQCAtNjgsMjAgKzY3LDIwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgZGVsZXRl
QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vz
c2lvbklELCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZv
aWQgc2V0Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZ2V0QWxsQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CiAgICAgSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAg
IHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTA3NzYpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjMsMjAgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICAKLSBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5h
Z2VyIHsKLSAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCittZXNzYWdlcyAtPiBXZWJD
b29raWVNYW5hZ2VyIHsKKyAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcykgQXN5bmMKICAg
ICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMpCi0gICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogCi0gICAgdm9pZCBTZXRDb29raWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgU2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFVSTCB1
cmwsIFVSTCBtYWluRG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIHZvaWQgR2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAg
IHZvaWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZv
aWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXYWxsVGltZSB0aW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lk
IFNldENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZSkgLT4gKCkgQXN5bmMKKyAgICB2b2lkIFNldENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBVUkwgdXJsLCBV
UkwgbWFpbkRvY3VtZW50VVJMKSAtPiAoKSBBc3luYworICAgIHZvaWQgR2V0QWxsQ29va2llcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29r
aWVzKSBBc3luYworICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYworICAg
IHZvaWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSBjb29raWUpIC0+ICgpIEFzeW5jCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUpIC0+
ICgpIEFzeW5jCiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZW51bTp1aW50
OF90IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdlYktpdDo6T3B0aW9u
YWxDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkgLT4gKCkgQXN5bmMKKyAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
KSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kp
IEFzeW5jCiAgICAgCiAgICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1h
Yy5tbQkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXIu
aCIKIAorI2ltcG9ydCAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3MuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFn
ZXJTb3VwLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlci5oIgogCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Tb3VwLmgi
CiAjaW5jbHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEs
NyArMTMxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogICAg
IGdfcmVzb2x2ZXJfc2V0X2RlZmF1bHQoY2FjaGVkUmVzb2x2ZXIuZ2V0KCkpOwogCiAgICAgbV9j
YWNoZU9wdGlvbnMgPSB7IE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb246OlJlZ2lzdGVyTm90aWZ5
IH07Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNr
SUQoKSk7CisgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCBbXSgpIHsgfSk7CiAK
ICAgICBpZiAoIXBhcmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgdXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQocGFyYW1ldGVycy5sYW5ndWFnZXMpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlz
aW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9
IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5k
V2l0aEFzeW5jUmVwbHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7
IH0pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhB
c3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0pOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CiAgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVy
PFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KQpAQCAtMTY0LDggKzE2NCw4IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kU3luYyhVJiYKICAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kU3luYyhzdGQ6OmZvcndh
cmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBB
cmdzPgotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgordm9pZCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5j
LCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksOCArNjksNiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5p
dGlhbGl6ZUNsCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ry
b3llZCgpCiB7Ci0gICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKLQogICAgIFZlY3RvcjxPYnNlcnZlcio+IG9ic2VydmVy
czsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyU2V0IDogbV9jb29raWVPYnNlcnZlcnMudmFsdWVz
KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVyU2V0KQpAQCAtODUs
MTIgKzgzLDEwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbEQKIAog
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJv
eHkqKQogewotICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
UHJvY2Vzc0V4aXRlZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNz
RGlkQ2xvc2UoTmV0d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgbV9jYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTEwMywyMSAr
OTksMTIgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udAogICAgIEFQ
STo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2
b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFj
a3MudGFrZTxBcnJheUNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShB
UEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKKyAgICBhdXRv
JiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tG
dW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nl
c3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPFN0cmluZz4m
JiBob3N0bmFtZXMpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUo
aG9zdG5hbWVzKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKQEAgLTEzMCw1NSArMTE3LDUyIEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb28KICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llLCBjYWxsYmFja0lE
KSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSwgY2FsbGJhY2tJRCkpOwotfQotCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29s
KCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMsIGNh
bGxiYWNrSUQpKTsKLX0KLQotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9v
bCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBjYWxs
YmFja0lEKSk7CisgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1
cmVOZXR3b3JrUHJvY2VzcygpOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29v
a2llKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tl
biA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCld
KCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXYWxsVGltZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9v
bCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
R2V0QWxsQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvJiBuZXR3b3Jr
UHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0
d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1By
b2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxD
b29raWU+JiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0
Q29va2llcyhzZXNzaW9uSUQsIHVybCwgY2FsbGJhY2tJRCkpOworICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbigpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlk
U2V0Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CiB7Ci0gICAgbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJm
b3JtQ2FsbGJhY2soKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwg
Y29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbigpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlk
R2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBtX2NhbGxiYWNrcy50YWtl
PEdldENvb2tpZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShjb29raWVzKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29s
KCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Np
b25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9r
ZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
XShWZWN0b3I8Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKFdURk1vdmUoY29va2llcykpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBtX2NhbGxiYWNrcy50YWtl
PFZvaWRDYWxsYmFjaz4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOworICAgIGF1dG8m
IG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsK
KyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVz
KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xOTEsNyArMTc1LDYg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbgogICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lv
bklEKSk7CiB9CiAKLQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2Vy
dmVyQ2FsbGJhY2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGNhbGxiYWNrKQpAQCAtMjM4LDcgKzIyMSw3IEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2gKICAgICAgICAgb2JzZXJ2
ZXItPmNvb2tpZXNEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgcG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCktPmlzVXNpbmdUZXN0aW5n
TmV0d29ya1Nlc3Npb24oKSkKQEAgLTI0OCwyNCArMjMxLDE4IEBAIHZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRIVFRQQ29va2kKICAgICBwcm9jZXNzUG9vbCgpLT5zZXRJbml0aWFsSFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpOwogI2VuZGlmCiAKLSAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bv
b2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3ksIE9wdGlvbmFsQ2FsbGJhY2tJRChjYWxsYmFja0lEKSkpOwotfQotCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwg
RnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lEKSk7Ci19
Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKLXsKLSAgICBtX2NhbGxiYWNrcy50YWtlPEhUVFBDb29raWVBY2NlcHRQb2xpY3lD
YWxsYmFjaz4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xp
Y3kpOworICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5
KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9
IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkg
bXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgbV9jYWxsYmFja3MudGFrZTxWb2lk
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit7CisgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5l
bnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2Vu
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0o
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKHBvbGljeSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmgJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwyMCArNjUsMjAgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVu
dEJhc2UqKTsKICAgICAKLSAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpDb29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAg
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2ll
cyhQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklELCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lk
IHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVu
dFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgZ2V0QWxsQ29v
a2llcyhQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4m
Jik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKIAotICAg
IHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwot
ICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgRnVuY3Rp
b248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOwogCiAgICAgdm9pZCBzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQpOwpAQCAtMTA2LDE0ICsxMDYsNiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eShXZWJQcm9jZXNz
UG9vbCopOwogCi0gICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIFdlYktpdDo6Q2FsbGJhY2tJ
RCk7Ci0KLSAgICB2b2lkIGRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxs
YmFja0lEKTsKLSAgICB2b2lkIGRpZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBXZWJL
aXQ6OkNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxi
YWNrSUQpOwotCiAgICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC0xMzAsOCArMTIyLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBlcnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogI2VuZGlmCiAKLSAgICBDYWxsYmFja01hcCBtX2NhbGxiYWNrczsKLQogICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29v
a2llT2JzZXJ2ZXJzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8T2JzZXJ2
ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDUgQEAKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKLSAgICBEaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KGVudW06dWludDhfdCBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0KLSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWREZWxldGVDb29r
aWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWRTZXRDb29raWVzKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsK
LQogICAgIENvb2tpZXNEaWRDaGFuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5jcHAJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHZv
aWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzKENvbXBsZXRpb24KICAgICB9CiAKICAgICBhdXRv
KiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKG1fb3duaW5nRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgewor
ICAgIGNvb2tpZU1hbmFnZXItPmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Np
b25JRCgpLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29v
a2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOwogICAg
IH0pOwogfQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2ll
cyhjb25zdCBWCiAgICAgfQogCiAgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBs
ZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdl
ci0+c2V0Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIGNvb2tpZXMsIFtw
b29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgIGNv
b2tpZU1hbmFnZXItPnNldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBj
b29raWVzLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0pOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSFRUUENvb2tpZVN0
b3JlOjpkZWxldGVDb29raWUoY29uc3QKICAgICB9CiAKICAgICBhdXRvKiBjb29raWVNYW5hZ2Vy
ID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAg
ICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWUobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25J
RCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgbXV0
YWJsZSB7CisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llKG1fb3duaW5nRGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKSwgY29va2llLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBIVFRQQ29va2llU3RvcmU6OnNldEhUVFBDb29raWVBY2NlcAogICAgIH0KIAogICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
bV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBwb2xpY3ksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgbXV0
YWJsZSB7CisgICAgY29va2llTWFuYWdlci0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtX293
bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIHBvbGljeSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDI1MDc3NikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSB0bwogCiAtICh2b2lkKV9zZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKLSAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0
UG9saWN5KHBvbGljeSksIFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CisgICAg
X3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Pigp
LT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXSgpIHsgfSk7CiB9CiAK
IC0gKGlkKV9vYmplY3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVyCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0
X3BvCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIobWFuYWdl
cikpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpCi0gICAgICAg
IHByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsgfSk7Cisg
ICAgICAgIHByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+
c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgdG9I
VFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKCkgeyB9KTsKIH0KIAogLyoqCkBAIC0y
MTgsNyArMjE4LDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50
PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtYW5h
Z2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIHByb2Nlc3NQ
b29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIFt0YXNrID0gV1RGTW92
ZSh0YXNrKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIHsKICAgICAgICAgZ190YXNr
X3JldHVybl9pbnQodGFzay5nZXQoKSwgdG9XZWJLaXRDb29raWVBY2NlcHRQb2xpY3kocG9saWN5
KSk7CiAgICAgfSk7CiB9CkBAIC0yNjcsMTQgKzI2Nyw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9t
YW5hZ2VyX2FkZF9jb29raWUoV2UKICAgICAvLyBDb29raWVzIGFyZSByZWFkL3dyaXR0ZW4gZnJv
bS90byB0aGUgc2FtZSBTUUxpdGUgZGF0YWJhc2Ugb24gZGlzayByZWdhcmRsZXNzCiAgICAgLy8g
b2YgdGhlIHByb2Nlc3Mgd2UgYWNjZXNzIHRoZW0gZnJvbSwgc28ganVzdCB1c2UgdGhlIGZpcnN0
IHByb2Nlc3MgcG9vbC4KICAgICBjb25zdCBhdXRvJiBwcm9jZXNzUG9vbHMgPSB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIp
OwotICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCktPnNldENvb2tpZXMobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIHsgV2ViQ29yZTo6Q29v
a2llKGNvb2tpZSkgfSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShDYWxsYmFja0Jhc2U6OkVycm9y
IGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0
aGUgd2ViIHByb2Nlc3MgaXMgbm90IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVy
IHRoZSBvcGVyYXRpb24gImNhbmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUg
Y2xpZW50LgotICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwg
R19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2Vs
bGVkIikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9v
bHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVzKG1h
bmFnZXItPnByaXYtPnNlc3Npb25JRCgpLCB7IFdlYkNvcmU6OkNvb2tpZShjb29raWUpIH0sIFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oKSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0
YXNrLmdldCgpLCBUUlVFKTsKICAgICB9KTsKIH0KQEAgLTMyNSwxNCArMzE4LDcgQEAgdm9pZCB3
ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMoVwogICAgIC8vIENvb2tpZXMgYXJlIHJl
YWQvd3JpdHRlbiBmcm9tL3RvIHRoZSBzYW1lIFNRTGl0ZSBkYXRhYmFzZSBvbiBkaXNrIHJlZ2Fy
ZGxlc3MKICAgICAvLyBvZiB0aGUgcHJvY2VzcyB3ZSBhY2Nlc3MgdGhlbSBmcm9tLCBzbyBqdXN0
IHVzZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sLgogICAgIGNvbnN0IGF1dG8mIHByb2Nlc3NQb29s
cyA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5wcml2
LT5kYXRhTWFuYWdlcik7Ci0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tp
ZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwg
VVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpLCBbdGFzayA9IFdURk1vdmUodGFzayld
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVy
ZSB0aGUgd2ViIHByb2Nlc3MgaXMgbm90IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNp
ZGVyIHRoZSBvcGVyYXRpb24gImNhbmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0
aGUgY2xpZW50LgotICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQo
KSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2Fu
Y2VsbGVkIikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNz
UG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVz
KG1hbmFnZXItPnByaXYtPnNlc3Npb25JRCgpLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgo
dXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvb2tpZXMpIHsKICAgICAgICAgR0xpc3QqIGNvb2tpZXNMaXN0ID0gbnVsbHB0cjsKICAg
ICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAgICAgICAgICAgY29va2llc0xp
c3QgPSBnX2xpc3RfcHJlcGVuZChjb29raWVzTGlzdCwgY29va2llLnRvU291cENvb2tpZSgpKTsK
QEAgLTM5MCwxNCArMzc2LDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Nv
b2tpZQogICAgIC8vIENvb2tpZXMgYXJlIHJlYWQvd3JpdHRlbiBmcm9tL3RvIHRoZSBzYW1lIFNR
TGl0ZSBkYXRhYmFzZSBvbiBkaXNrIHJlZ2FyZGxlc3MKICAgICAvLyBvZiB0aGUgcHJvY2VzcyB3
ZSBhY2Nlc3MgdGhlbSBmcm9tLCBzbyBqdXN0IHVzZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sLgog
ICAgIGNvbnN0IGF1dG8mIHByb2Nlc3NQb29scyA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdl
dFByb2Nlc3NQb29scyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcik7Ci0gICAgcHJvY2Vzc1Bv
b2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+ZGVsZXRlQ29va2ll
KG1hbmFnZXItPnByaXYtPnNlc3Npb25JRCgpLCBXZWJDb3JlOjpDb29raWUoY29va2llKSwgW3Rh
c2sgPSBXVEZNb3ZlKHRhc2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMg
bm90IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24gImNh
bmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgotICAgICAgICAg
ICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19F
UlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8
V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5kZWxldGVDb29raWUobWFuYWdlci0+cHJpdi0+c2Vz
c2lvbklEKCksIFdlYkNvcmU6OkNvb2tpZShjb29raWUpLCBbdGFzayA9IFdURk1vdmUodGFzayld
KCkgewogICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiAg
ICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjUwNzc2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTgsMTEgKzEzNTgsOCBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29rCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVy
ICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94
eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFu
YWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFj
ay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVy
cm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBjYWxsYmFjay0+
c2VuZFN1Y2Nlc3MoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRG
YWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKEludGVybmFsRXJyb3IpKTsK
KyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXNzaW9uSUQoKSwgeyBjb29raWUgfSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXSgp
IHsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380728</attachid>
            <date>2019-10-10 23:08:12 -0700</date>
            <delta_ts>2019-10-10 23:26:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202841-20191010230812.patch</filename>
            <type>text/plain</type>
            <size>44556</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTEwMDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSBmb3IgY29va2llIGdldHRpbmcvY2xlYXJpbmcgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuICBUaGlzIGp1c3Qgc2ltcGxpZmllcyB0aGUgbWVzc2FnZSBzZW5kaW5nIGEgYml0Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29v
a2llU3RvcmU6OnNldENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6c2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXRDb29raWVBY2NlcHRQb2xpY3k6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KToKKyAg
ICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeSk6CisgICAgICAg
ICh3ZWJraXRfY29va2llX21hbmFnZXJfYWRkX2Nvb2tpZSk6CisgICAgICAgICh3ZWJraXRfY29v
a2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMpOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2RlbGV0ZV9jb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OmFkZFNpbmdsZUNvb2tpZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRo
QXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMC0xMCAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBNb3ZlIHJl
bW90ZSBjb21tdW5pY2F0aW9uIGhhbmRsaW5nIGZyb20gUmVtb3RlSW5zcGVjdG9yU2VydmVyIHRv
IFJlbW90ZUluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDc3
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTMgKzU0LDEyIEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoTmV0d28KIAogV2ViQ29va2llTWFuYWdlcjo6fldlYkNvb2tp
ZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaG9z
dG5hbWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvcHlUb1Zl
Y3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29weVRvVmVjdG9yKGhvc3RuYW1lcykpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQpAQCAtNjksNjIgKzY4LDU3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQ29va2llc0ZvckgKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKLQotICAgIG1fcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tp
ZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UodGltZSk7Ci0KLSAgICBtX3By
b2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZl
Y3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9w
cm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIGNvb2tpZXMgPSBzdG9y
YWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFj
a0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb29raWVzKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBjb29raWVzID0gc3RvcmFnZVNlc3Npb24tPmdldENvb2tpZXModXJs
KTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29va2llcykpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAg
ICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOwogICAgIH0KLQotICAg
IG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENv
b2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTE0OCwxNyArMTQy
LDE2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2sKICAgICAgICAg
V2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSFRUUENvb2tpZUFjY2VwdFBv
bGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
bGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgY2FsbGJhY2tJRCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgJKHJldmlzaW9u
IDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxMyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKLSNpbmNsdWRlICJIVFRQQ29va2llQWNj
ZXB0UG9saWN5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgi
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlICJTb3VwQ29va2ll
UGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCkBAIC00Niw2ICs0NCw3IEBAIHN0cnVjdCBDb29raWU7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitlbnVtIGNsYXNz
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogCiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAK
LSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgT3B0aW9uYWxDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFNvdXBDb29raWVQZXJzaXN0
ZW50U3RvcmFnZVR5cGUpOwpAQCAtNjgsMjAgKzY3LDIwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgZGVsZXRl
QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vz
c2lvbklELCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZv
aWQgc2V0Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZ2V0QWxsQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CiAgICAgSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAg
IHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTA3NzYpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjMsMjAgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICAKLSBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5h
Z2VyIHsKLSAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCittZXNzYWdlcyAtPiBXZWJD
b29raWVNYW5hZ2VyIHsKKyAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcykgQXN5bmMKICAg
ICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMpCi0gICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogCi0gICAgdm9pZCBTZXRDb29raWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgU2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFVSTCB1
cmwsIFVSTCBtYWluRG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIHZvaWQgR2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAg
IHZvaWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZv
aWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXYWxsVGltZSB0aW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lk
IFNldENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZSkgLT4gKCkgQXN5bmMKKyAgICB2b2lkIFNldENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBVUkwgdXJsLCBV
UkwgbWFpbkRvY3VtZW50VVJMKSAtPiAoKSBBc3luYworICAgIHZvaWQgR2V0QWxsQ29va2llcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29r
aWVzKSBBc3luYworICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYworICAg
IHZvaWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSBjb29raWUpIC0+ICgpIEFzeW5jCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUpIC0+
ICgpIEFzeW5jCiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZW51bTp1aW50
OF90IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdlYktpdDo6T3B0aW9u
YWxDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkgLT4gKCkgQXN5bmMKKyAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
KSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kp
IEFzeW5jCiAgICAgCiAgICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFn
ZXJDdXJsLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlci5oIgogCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQkocmV2aXNp
b24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL21hYy9X
ZWJDb29raWVNYW5hZ2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAorI2ltcG9y
dCAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIK
ICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAko
cmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5o
IgogCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Tb3VwLmgiCiAjaW5jbHVkZSAi
U291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJ
KHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogICAgIGdfcmVzb2x2ZXJf
c2V0X2RlZmF1bHQoY2FjaGVkUmVzb2x2ZXIuZ2V0KCkpOwogCiAgICAgbV9jYWNoZU9wdGlvbnMg
PSB7IE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb246OlJlZ2lzdGVyTm90aWZ5IH07Ci0gICAgc3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBh
cmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQoKSk7CisgICAg
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCBbXSgpIHsgfSk7CiAKICAgICBpZiAoIXBh
cmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1
YWdlc0NoYW5nZWQocGFyYW1ldGVycy5sYW5ndWFnZXMpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI1MDc3NikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9u
U2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVw
bHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0pOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQm
JiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4gPSB7IH0pOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CiAgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpAQCAt
MTY0LDggKzE2NCw4IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYK
ICAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kU3luYyhzdGQ6OmZvcndhcmQ8VT4obWVzc2Fn
ZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3luY09wdGlv
bnMpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotdm9pZCBB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgordm9pZCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5k
bGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3Nh
Z2VFeHBlY3RlZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksOCArNjksNiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsCiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0g
ICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLQogICAgIFZlY3RvcjxPYnNlcnZlcio+IG9ic2VydmVyczsKICAgICBmb3Ig
KGF1dG8mIG9ic2VydmVyU2V0IDogbV9jb29raWVPYnNlcnZlcnMudmFsdWVzKCkpIHsKICAgICAg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVyU2V0KQpAQCAtODUsMTIgKzgzLDEwIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbEQKIAogdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAg
IG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFj
a0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTEwMywyMSArOTksMTIgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udAogICAgIEFQSTo6T2JqZWN0Ojpk
ZXJlZigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFy
cmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKLXsKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdG5hbWVzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxBcnJh
eUNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5Ojpj
cmVhdGVTdHJpbmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29y
a1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPFN0cmluZz4mJiBob3N0bmFtZXMp
IG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoaG9zdG5hbWVzKSk7
CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3RuYW1lcykKQEAgLTEzMCw1NSArMTE3LDUyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb28KICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkRlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29r
aWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llLCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKHNlc3Npb25JRCwgdGltZSwgY2FsbGJhY2tJRCkpOwotfQotCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxDb29raWU+JiBjb29raWVzLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMsIGNhbGxiYWNrSUQpKTsK
LX0KLQotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYg
Y29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhz
ZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBjYWxsYmFja0lEKSk7Cisg
ICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llKSwgW2NhbGxi
YWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7
CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGlt
ZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0QWxsQ29va2ll
cyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHBy
b2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbigpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29r
aWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNz
aW9uSUQsIHVybCwgY2FsbGJhY2tJRCkpOworICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShz
ZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwor
ICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyhX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9j
YWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2so
KTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJs
LCBtYWluRG9jdW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwor
ICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBtX2NhbGxiYWNrcy50YWtlPEdldENvb2tpZXND
YWxsYmFjaz4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29r
aWVzKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3Jr
UHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXShWZWN0b3I8Q29v
a2llPiYmIGNvb2tpZXMpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1v
dmUoY29va2llcykpOworICAgIH0pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBtX2NhbGxiYWNrcy50YWtlPFZvaWRDYWxsYmFj
az4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOworICAgIGF1dG8mIG5ldHdvcmtQcm9j
ZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3Jr
UHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6Okdl
dENvb2tpZXMoc2Vzc2lvbklELCB1cmwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xOTEsNyArMTc1LDYgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbgogICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAK
LQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2so
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKGNhbGxiYWNrKQpAQCAtMjM4LDcgKzIyMSw3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2gKICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNE
aWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCktPmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Np
b24oKSkKQEAgLTI0OCwyNCArMjMxLDE4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
ZXRIVFRQQ29va2kKICAgICBwcm9jZXNzUG9vbCgpLT5zZXRJbml0aWFsSFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3kpOwogI2VuZGlmCiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9wdGlvbmFs
Q2FsbGJhY2tJRChjYWxsYmFja0lEKSkpOwotfQotCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKLXsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsK
LSAgICBtX2NhbGxiYWNrcy50YWtlPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4oY2Fs
bGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworICAgIGF1
dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW2NhbGxiYWNr
RnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7
CisgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1By
b2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHBv
bGljeSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgJKHJldmlzaW9u
IDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwyMCArNjUsMjAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKICAg
ICAKLSAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklELCBGdW5j
dGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZv
aWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Np
b25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Np
b25JRCwgV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
KyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBX
YWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgc2V0Q29v
a2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNl
c3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9p
ZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKIAotICAgIHZvaWQgc2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOwogCiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nv
b2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQpOwpAQCAtMTA2LDE0ICsxMDYsNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0g
ICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0KLSAgICB2
b2lkIGRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGRpZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEdl
dENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBXZWJLaXQ6OkNhbGxiYWNr
SUQpOwotICAgIHZvaWQgZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQpOwotCiAg
ICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIC8vIFdlYkNv
bnRleHRTdXBwbGVtZW50CkBAIC0xMzAsOCArMTIyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBl
cnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogI2Vu
ZGlmCiAKLSAgICBDYWxsYmFja01hcCBtX2NhbGxiYWNrczsKLQogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJz
OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29r
aWVPYnNlcnZlcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1MDc3NikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
bWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKLSAgICBEaWRHZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKTsKLSAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGVudW06dWludDhf
dCBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCk7Ci0KLSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWREZWxldGVDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKLQogICAgIENvb2tp
ZXNEaWRDaGFuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAJKHJldmlz
aW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSFRUUENvb2tp
ZVN0b3JlOjpjb29raWVzKENvbXBsZXRpb24KICAgICB9CiAKICAgICBhdXRvKiBjb29raWVNYW5h
Z2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsK
LSAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNv
b2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgIGNvb2tpZU1h
bmFnZXItPmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbcG9v
bCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOwogICAgIH0pOwogfQpAQCAt
OTEsNyArOTEsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llcyhjb25zdCBWCiAg
ICAgfQogCiAgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+c2V0Q29va2ll
cyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIGNvb2tpZXMsIFtwb29sID0gV1RGTW92
ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgIGNvb2tpZU1hbmFnZXIt
PnNldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBjb29raWVzLCBbcG9v
bCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
IH0pOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpkZWxldGVD
b29raWUoY29uc3QKICAgICB9CiAKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3Vw
cGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5h
Z2VyLT5kZWxldGVDb29raWUobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBjb29raWUs
IFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAg
Y29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQo
KSwgY29va2llLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBIVFRQQ29va2ll
U3RvcmU6OnNldEhUVFBDb29raWVBY2NlcAogICAgIH0KIAogICAgIGF1dG8qIGNvb2tpZU1hbmFn
ZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwot
ICAgIGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kobV9vd25pbmdEYXRh
U3RvcmUtPnNlc3Npb25JRCgpLCBwb2xpY3ksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgbXV0YWJsZSB7CisgICAg
Y29va2llTWFuYWdlci0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtX293bmluZ0RhdGFTdG9y
ZS0+c2Vzc2lvbklEKCksIHBvbGljeSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSB0
bwogCiAtICh2b2lkKV9zZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSlwb2xpY3kKIHsKLSAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSksIFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CisgICAgX3Byb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXSgpIHsgfSk7CiB9CiAKIC0gKGlkKV9vYmpl
Y3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVyCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsx
OTAsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIobWFuYWdlcikpOwogCiAgICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nl
c3NQb29scyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpCi0gICAgICAgIHByb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9s
aWN5KHBvbGljeSksIFtdKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsgfSk7CisgICAgICAgIHByb2Nl
c3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSksIFtdKCkgeyB9KTsKIH0KIAogLyoqCkBAIC0yMTgsNyArMjE4LDcg
QEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wbwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1h
bmFnZXJQcm94eT4oKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtYW5hZ2VyLT5wcml2LT5z
ZXNzaW9uSUQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIHByb2Nlc3NQb29sc1swXS0+c3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIHsKICAgICAgICAgZ190YXNrX3JldHVybl9pbnQo
dGFzay5nZXQoKSwgdG9XZWJLaXRDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiAgICAgfSk7
CiB9CkBAIC0yNjcsMTQgKzI2Nyw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2FkZF9j
b29raWUoV2UKICAgICAvLyBDb29raWVzIGFyZSByZWFkL3dyaXR0ZW4gZnJvbS90byB0aGUgc2Ft
ZSBTUUxpdGUgZGF0YWJhc2Ugb24gZGlzayByZWdhcmRsZXNzCiAgICAgLy8gb2YgdGhlIHByb2Nl
c3Mgd2UgYWNjZXNzIHRoZW0gZnJvbSwgc28ganVzdCB1c2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9v
bC4KICAgICBjb25zdCBhdXRvJiBwcm9jZXNzUG9vbHMgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXRQcm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpOwotICAgIHByb2Nl
c3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldENvb2tp
ZXMobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIHsgV2ViQ29yZTo6Q29va2llKGNvb2tpZSkg
fSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0g
ICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAg
ICAgICAvLyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nl
c3MgaXMgbm90IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRp
b24gImNhbmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgotICAg
ICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwg
R19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVzKG1hbmFnZXItPnByaXYt
PnNlc3Npb25JRCgpLCB7IFdlYkNvcmU6OkNvb2tpZShjb29raWUpIH0sIFt0YXNrID0gV1RGTW92
ZSh0YXNrKV0oKSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBU
UlVFKTsKICAgICB9KTsKIH0KQEAgLTMyNSwxNCArMzE4LDcgQEAgdm9pZCB3ZWJraXRfY29va2ll
X21hbmFnZXJfZ2V0X2Nvb2tpZXMoVwogICAgIC8vIENvb2tpZXMgYXJlIHJlYWQvd3JpdHRlbiBm
cm9tL3RvIHRoZSBzYW1lIFNRTGl0ZSBkYXRhYmFzZSBvbiBkaXNrIHJlZ2FyZGxlc3MKICAgICAv
LyBvZiB0aGUgcHJvY2VzcyB3ZSBhY2Nlc3MgdGhlbSBmcm9tLCBzbyBqdXN0IHVzZSB0aGUgZmly
c3QgcHJvY2VzcyBwb29sLgogICAgIGNvbnN0IGF1dG8mIHByb2Nlc3NQb29scyA9IHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdl
cik7Ci0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94
eT4oKS0+Z2V0Q29va2llcyhtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgVVJMKFVSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHVyaSkpLCBbdGFzayA9IFdURk1vdmUodGFzayldKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAg
ICAgICAgICAvLyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHBy
b2Nlc3MgaXMgbm90IGF2YWlsYWJsZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVy
YXRpb24gImNhbmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50Lgot
ICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJP
UiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1
cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVzKG1hbmFnZXItPnBy
aXYtPnNlc3Npb25JRCgpLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNr
ID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMp
IHsKICAgICAgICAgR0xpc3QqIGNvb2tpZXNMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChh
dXRvJiBjb29raWUgOiBjb29raWVzKQogICAgICAgICAgICAgY29va2llc0xpc3QgPSBnX2xpc3Rf
cHJlcGVuZChjb29raWVzTGlzdCwgY29va2llLnRvU291cENvb2tpZSgpKTsKQEAgLTM5MCwxNCAr
Mzc2LDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Nvb2tpZQogICAgIC8v
IENvb2tpZXMgYXJlIHJlYWQvd3JpdHRlbiBmcm9tL3RvIHRoZSBzYW1lIFNRTGl0ZSBkYXRhYmFz
ZSBvbiBkaXNrIHJlZ2FyZGxlc3MKICAgICAvLyBvZiB0aGUgcHJvY2VzcyB3ZSBhY2Nlc3MgdGhl
bSBmcm9tLCBzbyBqdXN0IHVzZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sLgogICAgIGNvbnN0IGF1
dG8mIHByb2Nlc3NQb29scyA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29s
cyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcik7Ci0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBw
bGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+ZGVsZXRlQ29va2llKG1hbmFnZXItPnBy
aXYtPnNlc3Npb25JRCgpLCBXZWJDb3JlOjpDb29raWUoY29va2llKSwgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAh
PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGNhbiBv
bmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMgbm90IGF2YWlsYWJs
ZSwKLSAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24gImNhbmNlbGxlZCIgZnJv
bSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgotICAgICAgICAgICAgZ190YXNrX3Jl
dHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxM
RUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFu
YWdlclByb3h5PigpLT5kZWxldGVDb29raWUobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIFdl
YkNvcmU6OkNvb2tpZShjb29raWUpLCBbdGFzayA9IFdURk1vdmUodGFzayldKCkgewogICAgICAg
ICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiAgICAgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjUwNzc2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNTgsMTEgKzEzNTgsOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjphZGRTaW5nbGVDb29rCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScg
d2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFu
YWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5Pigp
OwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCld
KENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVycm9yID09IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3Mo
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklO
R19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICBjb29raWVN
YW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwg
eyBjb29raWUgfSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXSgpIHsKKyAgICAgICAg
Y2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380729</attachid>
            <date>2019-10-10 23:26:26 -0700</date>
            <delta_ts>2019-10-11 09:41:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202841-20191010232625.patch</filename>
            <type>text/plain</type>
            <size>44071</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTEwMDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSBmb3IgY29va2llIGdldHRpbmcvY2xlYXJpbmcgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuICBUaGlzIGp1c3Qgc2ltcGxpZmllcyB0aGUgbWVzc2FnZSBzZW5kaW5nIGEgYml0Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29v
a2llU3RvcmU6OnNldENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6c2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXRDb29raWVBY2NlcHRQb2xpY3k6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KToKKyAg
ICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeSk6CisgICAgICAg
ICh3ZWJraXRfY29va2llX21hbmFnZXJfYWRkX2Nvb2tpZSk6CisgICAgICAgICh3ZWJraXRfY29v
a2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMpOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2RlbGV0ZV9jb29raWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OmFkZFNpbmdsZUNvb2tpZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRo
QXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMC0xMCAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBNb3ZlIHJl
bW90ZSBjb21tdW5pY2F0aW9uIGhhbmRsaW5nIGZyb20gUmVtb3RlSW5zcGVjdG9yU2VydmVyIHRv
IFJlbW90ZUluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDc3
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTMgKzU0LDEyIEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoTmV0d28KIAogV2ViQ29va2llTWFuYWdlcjo6fldlYkNvb2tp
ZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaG9z
dG5hbWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvcHlUb1Zl
Y3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29weVRvVmVjdG9yKGhvc3RuYW1lcykpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQpAQCAtNzUsNTYgKzc0LDUwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcygKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRl
bGV0ZUFsbENvb2tpZXMoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29r
aWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKGNvb2tpZSk7Ci0KLSAgICBtX3Byb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNh
bGxiYWNrSUQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBt
X3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHRpbWUpOwotCi0gICAgbV9wcm9jZXNz
LnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhj
YWxsYmFja0lEKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8
Q29va2llPiBjb29raWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vz
cy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBjb29raWVzID0gc3RvcmFnZVNl
c3Npb24tPmdldEFsbENvb2tpZXMoKTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCks
IDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29va2llcykpOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7Ci0K
LSAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRH
ZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvb2tpZXMpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29r
aWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29r
aWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKICAgICAgICAg
ICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKICAgICB9Ci0KLSAgICBtX3By
b2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVz
KGNhbGxiYWNrSUQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29v
a2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJM
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWVzKGNvb2tpZXMsIHVybCwg
bWFpbkRvY3VtZW50VVJMKTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6bm90aWZ5Q29va2ll
c0RpZENoYW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNDgsMTcgKzE0MSwxNiBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29rCiAgICAgICAgIFdlYkNv
cmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5
KTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNh
bGxiYWNrSUQuY2FsbGJhY2tJRCgpKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZv
cm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCShyZXZpc2lvbiAyNTA3
NzYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJDYWxsYmFja0lELmgiCi0jaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgogCiAjaWYgVVNFKFNPVVApCiAjaW5jbHVkZSAiU291cENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlVHlwZS5oIgpAQCAtNDYsNiArNDQsNyBAQCBzdHJ1Y3QgQ29va2llOwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworZW51bSBjbGFzcyBIVFRQ
Q29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlciA6
IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAg
dm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhU
VFBDb29raWVBY2NlcHRQb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNp
ZiBVU0UoU09VUCkKICAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCBTb3VwQ29va2llUGVyc2lzdGVudFN0
b3JhZ2VUeXBlKTsKQEAgLTY4LDIwICs2NywyMCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJik+JiYpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxiYWNrSUQpOwotICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklELCBDYWxsYmFja0lEKTsK
LSAgICB2b2lkIGdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgc2V0Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBz
ZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CisgICAg
dm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKIAogICAgIHZvaWQgcGxh
dGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwot
ICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKKyAgICB2b2lk
IGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIVFRQQ29v
a2llQWNjZXB0UG9saWN5KT4mJik7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwbGF0Zm9y
bUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjMsMjAgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KICAKLSBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyIHsKLSAgICB2b2lkIEdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCittZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyIHsKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcykgQXN5bmMKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBob3N0
bmFtZXMpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIAotICAgIHZvaWQgU2V0Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LSAgICB2b2lkIFNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzLCBVUkwgdXJsLCBVUkwgbWFpbkRvY3VtZW50VVJMLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICB2
b2lkIEdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWUpIC0+ICgpIEFzeW5jCisgICAg
dm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcywgVVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCkgLT4gKCkgQXN5
bmMKKyAgICB2b2lkIEdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICB2b2lkIEdldENvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICB2b2lkIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llKSAtPiAoKSBBc3lu
YworICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXYWxsVGltZSB0aW1lKSAtPiAoKSBBc3luYwogCi0gICAgdm9pZCBTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KGVudW06dWludDhfdCBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAg
IHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZW51bTp1aW50OF90IFdl
YktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIC0+ICgpIEFzeW5jCisgICAgdm9p
ZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCkgLT4gKGVudW06dWludDhfdCBXZWJLaXQ6OkhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSBBc3luYwogICAgIAogICAgIHZvaWQgU3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICB2b2lk
IFN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1h
bmFnZXJDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5hZ2VyQ3VybC5jcHAJKHJldmlzaW9uIDI1MDc3NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1h
bmFnZXJDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkhU
VFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dl
YkNvb2tpZU1hbmFnZXJNYWMubW0JKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJDb29raWVNYW5hZ2VyLmgiCiAKKyNpbXBvcnQgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIK
ICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbi5oIgog
I2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvc291
cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAJKHJldmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uU291cC5oIgogI2luY2x1ZGUgIlNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU4KICAgICBnX3Jlc29sdmVyX3NldF9kZWZhdWx0KGNhY2hlZFJlc29sdmVyLmdl
dCgpKTsKIAogICAgIG1fY2FjaGVPcHRpb25zID0geyBOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9u
OjpSZWdpc3Rlck5vdGlmeSB9OwotICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+
c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSwg
T3B0aW9uYWxDYWxsYmFja0lEKCkpOworICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4o
KS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGlj
eSwgW10oKSB7IH0pOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3Vh
Z2VzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRP
cHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3M+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChBcmdzLi4uKT4mJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+ID0geyB9KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
PiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9KTsKICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTE2NCw4ICsxNjQsOCBAQCBib29sIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmCiAgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoc3RkOjpmb3J3YXJkPFU+KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRCwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJncz4KLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0
aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+
JiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQz4KK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYm
IG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
T3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAJKHJldmlz
aW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDYgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmluaXRpYWxpemVDbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0KICAgICBWZWN0b3I8T2Jz
ZXJ2ZXIqPiBvYnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2ll
T2JzZXJ2ZXJzLnZhbHVlcygpKSB7CiAgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNl
cnZlclNldCkKQEAgLTg1LDEyICs4MywxMCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
cHJvY2Vzc1Bvb2xECiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xv
c2UoV2ViUHJvY2Vzc1Byb3h5KikKIHsKLSAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKQogewotICAgIG1f
Y2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVu
dCgpCkBAIC0xMDMsMjEgKzk5LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJl
ZldlYkNvbnQKICAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
cHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkp
OwotfQotCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXJyYXlDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAg
aWYgKCFjYWxsYmFjaykgewotICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9yIGFzc2VydC4K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoaG9zdG5hbWVzKS5w
dHIoKSk7CisgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vzc2lv
bklEKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tl
biA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCld
KFZlY3RvcjxTdHJpbmc+JiYgaG9zdG5hbWVzKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihXVEZNb3ZlKGhvc3RuYW1lcykpOworICAgIH0pOwogfQogCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCkBAIC0xMzAsNTUgKzEx
Nyw1MiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29vCiAgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzKHNlc3Npb25JRCkp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNv
b2tpZSwgY2FsbGJhY2tJRCkpOwotfQotCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxs
VGltZSB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQotewotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2Vz
cygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNr
SUQpKTsKLX0KLQotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgRnVuY3Rp
b248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQotewotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lv
bklELCBjb29raWVzLCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENv
b2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVS
TCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5E
b2N1bWVudFVSTCwgY2FsbGJhY2tJRCkpOworICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7
CisgICAgfSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENv
b2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7Cisg
ICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklE
LCB0aW1lKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0
b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENv
b2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKKyAg
ICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lvbklELCBjb29raWVzKSwgW2NhbGxiYWNr
RnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewotICAgIG1fY2FsbGJhY2tzLnRha2U8Vm9pZENhbGxiYWNrPihj
YWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7CisgICAgYXV0byYgbmV0d29ya1Byb2Nlc3Mg
PSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgIG5ldHdvcmtQcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29v
a2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgW2NhbGxiYWNr
RnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxDb29raWU+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAg
bV9jYWxsYmFja3MudGFrZTxHZXRDb29raWVzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoY29va2llcyk7CisgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0
QWxsQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKKyAgICB9KTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxDb29raWU+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAg
bV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJh
Y2soKTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2Nh
bGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdv
cmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxD
b29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RG
TW92ZShjb29raWVzKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpA
QCAtMTkxLDcgKzE3NSw2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2
aW4KICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5n
SWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0b3BPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi0KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV1RG
OjpGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChjYWxsYmFjaykKQEAg
LTIzOCw3ICsyMjEsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENo
CiAgICAgICAgIG9ic2VydmVyLT5jb29raWVzRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklE
LCBIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgp
LT5pc1VzaW5nVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkpCkBAIC0yNDgsMjQgKzIzMSwxOCBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpCiAgICAgcHJvY2Vzc1Bvb2wo
KS0+c2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsKICNlbmRpZgogCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQoY2FsbGJhY2tJRCkpKTsKLX0K
LQotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
UEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCi17Ci0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
Y2FsbGJhY2tJRCkpOwotfQotCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgbV9jYWxsYmFja3MudGFrZTxIVFRQQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUocG9saWN5KTsKKyAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7Cisg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIG1fY2Fs
bGJhY2tzLnRha2U8Vm9pZENhbGxiYWNrPihjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0g
cHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCldKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihwb2xpY3kpOworICAgIH0pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMjAg
KzY1LDIwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nv
b2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAgICAgCi0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZv
aWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJM
LCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBtYWluRG9jdW1lbnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAg
ICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiwgRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldEFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYmKT4mJik7CiAKLSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNz
aW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpT
ZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFM
OjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmKTsK
IAogICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEKTsK
ICAgICB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEKTsKQEAg
LTEwNiwxNCArMTA2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2Vy
UHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQpOwotCi0gICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tp
ZXMoV2ViS2l0OjpDYWxsYmFja0lEKTsKLQogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShQQUw6
OlNlc3Npb25JRCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudApAQCAtMTMwLDggKzEy
Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwZXJzaXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeShI
VFRQQ29va2llQWNjZXB0UG9saWN5KTsKICNlbmRpZgogCi0gICAgQ2FsbGJhY2tNYXAgbV9jYWxs
YmFja3M7Ci0KICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+PiBtX2xlZ2FjeUNvb2tpZU9ic2VydmVyczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29va2llT2JzZXJ2ZXJzOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDEz
ICsyMSw1IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkNvb2tpZU1hbmFnZXJQ
cm94eSB7Ci0gICAgRGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoVmVjdG9yPFN0cmluZz4gaG9z
dG5hbWVzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwotCi0gICAgRGlkU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0g
ICAgRGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0gICAg
RGlkU2V0Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0
Q29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCk7Ci0KICAgICBDb29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29v
a2llU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCShyZXZpc2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llcyhDb21wbGV0aW9uCiAg
ICAgfQogCiAgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29v
a2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSBtdXRhYmxlIHsKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKG1fb3duaW5n
RGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb29raWVzKTsKICAgICB9KTsKIH0KQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBIVFRQQ29va2ll
U3RvcmU6OnNldENvb2tpZXMoY29uc3QgVgogICAgIH0KIAogICAgIGF1dG8qIGNvb2tpZU1hbmFn
ZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwot
ICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25J
RCgpLCBjb29raWVzLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSBt
dXRhYmxlIHsKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKG1fb3duaW5nRGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKSwgY29va2llcywgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCB2
b2lkIEhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQ29va2llKGNvbnN0CiAgICAgfQogCiAgICAgYXV0
byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llKG1fb3duaW5nRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgY29va2llLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZSht
X293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBv
b2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpzZXRIVFRQQ29va2llQWNjZXAKICAg
ICB9CiAKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgcG9saWN5LCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNr
QmFzZTo6RXJyb3IpIG11dGFibGUgeworICAgIGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBwb2xpY3ksIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZp
c2lvbiAyNTA3NzYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyBXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG8KIAogLSAodm9pZClfc2V0Q29va2llQWNjZXB0
UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgX3Byb2Nlc3NQ
b29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRv
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3Ipe30pOworICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwg
W10oKSB7IH0pOwogfQogCiAtIChpZClfb2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVyOihOU1N0cmlu
ZyAqKXBhcmFtZXRlcgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDc3NikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21h
bmFnZXJfc2V0X2FjY2VwdF9wbwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJ
RV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1h
bmFnZXIpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
UHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kobWFuYWdlci0+cHJpdi0+c2Vzc2lv
bklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShDYWxsYmFja0Jhc2U6
OkVycm9yKSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kobWFuYWdlci0+cHJpdi0+
c2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXSgpIHsgfSk7
CiB9CiAKIC8qKgpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2dldF9hY2NlcHRfcG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NQb29s
c1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kobWFuYWdlci0+cHJpdi0+c2Vzc2lvbklEKCksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5
PigpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KG1hbmFnZXItPnByaXYtPnNlc3Npb25JRCgp
LCBbdGFzayA9IFdURk1vdmUodGFzayldKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7
CiAgICAgICAgIGdfdGFza19yZXR1cm5faW50KHRhc2suZ2V0KCksIHRvV2ViS2l0Q29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSkpOwogICAgIH0pOwogfQpAQCAtMjY3LDE0ICsyNjcsNyBAQCB2b2lk
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9hZGRfY29va2llKFdlCiAgICAgLy8gQ29va2llcyBhcmUg
cmVhZC93cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9uIGRpc2sgcmVn
YXJkbGVzcwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZyb20sIHNvIGp1
c3QgdXNlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCiAgICAgY29uc3QgYXV0byYgcHJvY2Vzc1Bv
b2xzID0gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKG1hbmFnZXItPnBy
aXYtPmRhdGFNYW5hZ2VyKTsKLSAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29v
a2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVzKG1hbmFnZXItPnByaXYtPnNlc3Npb25JRCgp
LCB7IFdlYkNvcmU6OkNvb2tpZShjb29raWUpIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQ2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgLy8gVGhpcyBjYW4gb25seSBoYXBwZW4g
aW4gY2FzZXMgd2hlcmUgdGhlIHdlYiBwcm9jZXNzIGlzIG5vdCBhdmFpbGFibGUsCi0gICAgICAg
ICAgICAvLyBjb25zaWRlciB0aGUgb3BlcmF0aW9uICJjYW5jZWxsZWQiIGZyb20gdGhlIHBvaW50
IG9mIHZpZXcgb2YgdGhlIGNsaWVudC4KLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vy
cm9yKHRhc2suZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVy
YXRpb24gd2FzIGNhbmNlbGxlZCIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
CisgICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4o
KS0+c2V0Q29va2llcyhtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgeyBXZWJDb3JlOjpDb29r
aWUoY29va2llKSB9LCBbdGFzayA9IFdURk1vdmUodGFzayldKCkgewogICAgICAgICBnX3Rhc2tf
cmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiAgICAgfSk7CiB9CkBAIC0zMjUsMTQg
KzMxOCw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9jb29raWVzKFcKICAgICAv
LyBDb29raWVzIGFyZSByZWFkL3dyaXR0ZW4gZnJvbS90byB0aGUgc2FtZSBTUUxpdGUgZGF0YWJh
c2Ugb24gZGlzayByZWdhcmRsZXNzCiAgICAgLy8gb2YgdGhlIHByb2Nlc3Mgd2UgYWNjZXNzIHRo
ZW0gZnJvbSwgc28ganVzdCB1c2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbC4KICAgICBjb25zdCBh
dXRvJiBwcm9jZXNzUG9vbHMgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9v
bHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpOwotICAgIHByb2Nlc3NQb29sc1swXS0+c3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMobWFuYWdlci0+cHJp
di0+c2Vzc2lvbklEKCksIFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywg
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgLy8gVGhpcyBjYW4gb25seSBoYXBw
ZW4gaW4gY2FzZXMgd2hlcmUgdGhlIHdlYiBwcm9jZXNzIGlzIG5vdCBhdmFpbGFibGUsCi0gICAg
ICAgICAgICAvLyBjb25zaWRlciB0aGUgb3BlcmF0aW9uICJjYW5jZWxsZWQiIGZyb20gdGhlIHBv
aW50IG9mIHZpZXcgb2YgdGhlIGNsaWVudC4KLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3
X2Vycm9yKHRhc2suZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJP
cGVyYXRpb24gd2FzIGNhbmNlbGxlZCIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCisgICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94
eT4oKS0+Z2V0Q29va2llcyhtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgVVJMKFVSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHVyaSkpLCBbdGFzayA9IFdURk1vdmUodGFzayldKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CiAgICAgICAgIEdMaXN0KiBjb29raWVzTGlz
dCA9IG51bGxwdHI7CiAgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKICAgICAg
ICAgICAgIGNvb2tpZXNMaXN0ID0gZ19saXN0X3ByZXBlbmQoY29va2llc0xpc3QsIGNvb2tpZS50
b1NvdXBDb29raWUoKSk7CkBAIC0zOTAsMTQgKzM3Niw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9t
YW5hZ2VyX2RlbGV0ZV9jb29raWUKICAgICAvLyBDb29raWVzIGFyZSByZWFkL3dyaXR0ZW4gZnJv
bS90byB0aGUgc2FtZSBTUUxpdGUgZGF0YWJhc2Ugb24gZGlzayByZWdhcmRsZXNzCiAgICAgLy8g
b2YgdGhlIHByb2Nlc3Mgd2UgYWNjZXNzIHRoZW0gZnJvbSwgc28ganVzdCB1c2UgdGhlIGZpcnN0
IHByb2Nlc3MgcG9vbC4KICAgICBjb25zdCBhdXRvJiBwcm9jZXNzUG9vbHMgPSB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIp
OwotICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCktPmRlbGV0ZUNvb2tpZShtYW5hZ2VyLT5wcml2LT5zZXNzaW9uSUQoKSwgV2ViQ29yZTo6Q29v
a2llKGNvb2tpZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkg
ewotICAgICAgICAgICAgLy8gVGhpcyBjYW4gb25seSBoYXBwZW4gaW4gY2FzZXMgd2hlcmUgdGhl
IHdlYiBwcm9jZXNzIGlzIG5vdCBhdmFpbGFibGUsCi0gICAgICAgICAgICAvLyBjb25zaWRlciB0
aGUgb3BlcmF0aW9uICJjYW5jZWxsZWQiIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGNs
aWVudC4KLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIEdf
SU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVyYXRpb24gd2FzIGNhbmNlbGxl
ZCIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCisgICAgcHJvY2Vzc1Bvb2xz
WzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+ZGVsZXRlQ29va2llKG1h
bmFnZXItPnByaXYtPnNlc3Npb25JRCgpLCBXZWJDb3JlOjpDb29raWUoY29va2llKSwgW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXSgpIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2su
Z2V0KCksIFRSVUUpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJl
dmlzaW9uIDI1MDc3NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDExICsxMzU4LDgg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29vawogICAgICAgICBBU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVy
LCAiVGhlIHBhcmFtZXRlciAnaHR0cE9ubHknIHdhcyBub3QgZm91bmQuIik7CiAKICAgICBXZWJD
b29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBwbGVt
ZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29r
aWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgeyBjb29raWUgfSwgW2Nh
bGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
Ci0gICAgICAgIGlmIChlcnJvciA9PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAg
ICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShJ
bnRlcm5hbEVycm9yKSk7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhwYWdlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgY29va2llIH0sIFtjYWxsYmFjayA9IGNhbGxi
YWNrLmNvcHlSZWYoKV0oKSB7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAg
IH0pOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>