<?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>201233</bug_id>
          
          <creation_ts>2019-08-28 13:58:09 -0700</creation_ts>
          <short_desc>Dissociate the WebPageProxy&apos;s identifier from the WebPage&apos;s</short_desc>
          <delta_ts>2019-09-05 03:56:23 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201504</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>201225</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mcrha</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1565862</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 13:58:09 -0700</bug_when>
    <thetext>Dissociate the WebPageProxy&apos;s identifier from the WebPage&apos;s to help support Bug 201225.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565866</commentid>
    <comment_count>1</comment_count>
      <attachid>377477</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 13:59:46 -0700</bug_when>
    <thetext>Created attachment 377477
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565884</commentid>
    <comment_count>2</comment_count>
      <attachid>377485</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 14:17:51 -0700</bug_when>
    <thetext>Created attachment 377485
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565895</commentid>
    <comment_count>3</comment_count>
      <attachid>377489</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 14:29:48 -0700</bug_when>
    <thetext>Created attachment 377489
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565910</commentid>
    <comment_count>4</comment_count>
      <attachid>377495</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 15:25:36 -0700</bug_when>
    <thetext>Created attachment 377495
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565921</commentid>
    <comment_count>5</comment_count>
      <attachid>377500</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 15:53:58 -0700</bug_when>
    <thetext>Created attachment 377500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566242</commentid>
    <comment_count>6</comment_count>
      <attachid>377500</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 08:28:28 -0700</bug_when>
    <thetext>Comment on attachment 377500
Patch

Clearing flags on attachment: 377500

Committed r249275: &lt;https://trac.webkit.org/changeset/249275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566243</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 08:28:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566245</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-29 08:29:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/54837423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567284</commentid>
    <comment_count>9</comment_count>
    <who name="Milan Crha">mcrha</who>
    <bug_when>2019-09-02 22:58:44 -0700</bug_when>
    <thetext>For the record, one part of bug #201033 contains a regression this change could cause, that webkit_web_page_get_id() doesn&apos;t match webkit_web_view_get_page_id() any more. The bug #201033 contains tests which prove it. More info there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377477</attachid>
            <date>2019-08-28 13:59:46 -0700</date>
            <delta_ts>2019-08-28 14:17:51 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>201233_wip.patch</filename>
            <type>text/plain</type>
            <size>290382</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5k
ZXggZGI3MmNhMTY1ODcuLmRhZjRkYTIyNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQorUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6
IG1faXRlbVN0YXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyKG1faXRlbVN0YXRl
LmlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggM2E0NWUxY2I3YTcuLjZkNjdlYzBiMmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJTZXNzaW9u
U3RhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
YWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGlj
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
KyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZv
aWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsg
fQpAQCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVt
b3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJMOwot
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA2MWE2OWIxZjNhNi4uMmY1ZjgwYzA3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcApAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRC
YXNlKgogICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQpOwogCiAgICAgaWYgKG1pbGVzdG9uZXMpCi0gICAgICAgIHdlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXMobWlsZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgICAgICB3ZWJQ
YWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPndlYlBhZ2VJRCgpKTsKIAog
ICAgIHdlYlBhZ2VQcm94eS0+c2V0TG9hZGVyQ2xpZW50KFdURk1vdmUobG9hZGVyQ2xpZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0OTY3Nzg4YTEwNS4uMTEw
MDMzYmE2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNzIwLDcgKzcy
MCw3IEBAIC0gKE5TVUludGVnZXIpcGFnZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlICopaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFs
bG9jXSBfaW5pdFdpdGhQYWdlSUQ6X3BhZ2UtPnBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6
X3BhZ2UtPndlYlBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZjQ0MTE0MzU1ZC4uY2M3ZjZjOTYy
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtODc3LDcgKzg3Nyw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtfY29udGVudFZpZXcg
X3dlYlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1vdGVPYmplY3RSZWdpc3RyeSkKLSAg
ICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICNlbmRpZgogCiAgICAg
X3BhZ2UtPmNsb3NlKCk7CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCAtICh2b2lkKV9kaWRDb21taXRM
YXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVy
VHJlZQogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1b
V0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2RpZENvbW1pdExheWVyVHJlZTpd
IHRyYW5zYWN0aW9uSUQgIiA8PCAgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgp
IDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9kaWRDb21taXRM
YXllclRyZWU6XSB0cmFuc2FjdGlvbklEICIgPDwgIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5z
YWN0aW9uSUQoKSA8PCAiIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBib29sIG5lZWRVcGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzID0gX3BhZ2UtPnVwZGF0ZUxheW91dFZpZXdwb3J0UGFyYW1ldGVycyhsYXllclRy
ZWVUcmFuc2FjdGlvbik7CiAKQEAgLTI5MDgsNyArMjkwOCw3IEBAIC0gKHZvaWQpX2Rpc3BhdGNo
U2V0Vmlld0xheW91dFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0U2l6ZQogICAg
IGlmIChfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShfbGFzdFNl
bnRWaWV3TGF5b3V0U2l6ZS52YWx1ZSgpLCB2aWV3TGF5b3V0U2l6ZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZGlzcGF0Y2hTZXRWaWV3TGF5b3V0U2l6
ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9vbVNjYWxlICIgPDwgY29udGVu
dFpvb21TY2FsZShzZWxmKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfZGlzcGF0
Y2hTZXRWaWV3TGF5b3V0U2l6ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9v
bVNjYWxlICIgPDwgY29udGVudFpvb21TY2FsZShzZWxmKSk7CiAgICAgX3BhZ2UtPnNldFZpZXdw
b3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBfcGFnZS0+bGF5
b3V0U2l6ZVNjYWxlRmFjdG9yKCksIF9wYWdlLT5taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgo
KSk7CiAgICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSB2aWV3TGF5b3V0U2l6ZTsKIH0KQEAg
LTMyMTIsNyArMzIxMiw3IEBAIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9yaWVudGF0aW9uKFdLV2Vi
VmlldyAqd2ViVmlldykKIAogLSAodm9pZClfY2FuY2VsQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwg
X3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2NhbmNlbEFuaW1hdGVkUmVzaXplOl0gIiA8PCAiIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2Vi
VmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfY2FuY2VsQW5pbWF0ZWRSZXNpemU6
XSAiIDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlKTsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykKICAgICAgICAg
cmV0dXJuOwogCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogI2Vsc2UKICAgICBpZiAoIV9yZW1vdGVPYmplY3RS
ZWdpc3RyeSkgewogICAgICAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBhZG9wdE5TKFtbX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0aFdlYlBhZ2VQcm94eToqX3BhZ2Vd
KTsKLSAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgX3BhZ2UtPnBhZ2VJRCgpLCBbX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJl
Z2lzdHJ5XSk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIF9wYWdlLT53ZWJQYWdlSUQoKSwgW19yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1v
dGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAogICAgIHJldHVybiBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkuZ2V0KCk7CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxs
b2NdIF9pbml0V2l0aFBhZ2VJRDpfcGFnZS0+cGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpf
cGFnZS0+d2ViUGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoX1dLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHMpX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMKQEAgLTUwMTcsNyAr
NTAxNyw3IEBAIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29u
dGV4dCAqKXRleHRJbnB1dENvbnRleHQgY29tcGxldGlvCiAjZW5kaWYKIAogICAgIGF1dG8gd2Vi
Q29udGV4dCA9IFt0ZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5wdXRDb250ZXh0XTsKLSAgICBpZiAo
d2ViQ29udGV4dC53ZWJQYWdlSWRlbnRpZmllciAhPSBfcGFnZS0+cGFnZUlEKCkpCisgICAgaWYg
KHdlYkNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgIT0gX3BhZ2UtPndlYlBhZ2VJRCgpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiVGhlIHByb3ZpZGVkIF9XS1RleHRJbnB1dENvbnRleHQgd2FzIG5vdCBjcmVhdGVkIGJ5IHRo
aXMgV0tXZWJWaWV3LiJdOwogCiAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwpAQCAt
NjIzMyw3ICs2MjMzLDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6
ZQogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZW5kQW5pbWF0ZWRSZXNpemU6XSAiIDw8
ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
Ii1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9lbmRBbmltYXRlZFJl
c2l6ZTpdICIgPDwgIiBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAiIDw8IChpbnQpX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIHVw
LXRvLWRhdGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAvLyB0aGUgcmVz
aXplLiBPdGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3ZSBkby4KQEAg
LTYyNDQsNyArNjI0NCw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAKIC0gKHZvaWQp
X3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAi
LVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfcmVzaXplV2hpbGVIaWRpbmdD
b250ZW50V2l0aFVwZGF0ZXM6XSIpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMs
IHN0cmVhbSA8PCAiLVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+aWRlbnRpZmllcigpIDw8ICIgX3Jl
c2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iKTsKICAgICBbc2VsZiBfYmVnaW5B
bmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOnVwZGF0ZUJsb2NrXTsKICAgICBpZiAoX2R5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpS
ZXNpemluZ1dpdGhBbmltYXRpb24pIHsKICAgICAgICAgW19jb250ZW50VmlldyBzZXRIaWRkZW46
WUVTXTsKQEAgLTYzNDUsNyArNjM0NSw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0
KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAKIC0g
KHZvaWQpX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTooQ0dT
aXplKW1pbmltdW1MYXlvdXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1Np
emUpbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgp
IDw8ICIgX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZToiIDw8
IFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSkgPDwgIiBtYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZToiIDw8IFdlYkNvcmU6OkZsb2F0U2l6ZShtYXhpbXVtVW5vYnNjdXJl
ZFNpemVPdmVycmlkZSkgPDwgIl0iKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3Rz
LCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9v
dmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6IiA8PCBXZWJDb3Jl
OjpGbG9hdFNpemUobWluaW11bUxheW91dFNpemUpIDw8ICIgbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU6IiA8PCBXZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVVub2JzY3VyZWRTaXplT3Zl
cnJpZGUpIDw8ICJdIik7CiAKICAgICBbc2VsZiBfc2V0Vmlld0xheW91dFNpemVPdmVycmlkZTpt
aW5pbXVtTGF5b3V0U2l6ZV07CiAgICAgW3NlbGYgX3NldE1heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlOm1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IGFjN2U0OWFiMDI1Li4zZGQxMGU1ZjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC01MDksNyArNTA5
LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5wYWdlSUQoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
b21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5z
OwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IGJlYWE4OThiYWRiLi40N2Y5MTc0MDUyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTE4NywxNiArMTg3LDE2IEBAIFdlYlBhZ2VQcm94eSogV2ViQXV0b21hdGlvblNl
c3Npb246OndlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSkKIAogU3Ry
aW5nIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiB7Ci0gICAgYXV0byBpdGVyID0gbV93ZWJQYWdlSGFu
ZGxlTWFwLmZpbmQod2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBhdXRvIGl0ZXIgPSBtX3dl
YlBhZ2VIYW5kbGVNYXAuZmluZCh3ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpKTsKICAgICBpZiAo
aXRlciAhPSBtX3dlYlBhZ2VIYW5kbGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT52
YWx1ZTsKIAogICAgIFN0cmluZyBoYW5kbGUgPSAicGFnZS0iICsgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAKLSAgICBhdXRvIGZpcnN0QWRk
UmVzdWx0ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJveHkucGFnZUlEKCksIGhh
bmRsZSk7CisgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5hZGQo
d2ViUGFnZVByb3h5LmlkZW50aWZpZXIoKSwgaGFuZGxlKTsKICAgICBSRUxFQVNFX0FTU0VSVChm
aXJzdEFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0g
bV9oYW5kbGVXZWJQYWdlTWFwLmFkZChoYW5kbGUsIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgYXV0byBzZWNvbmRBZGRSZXN1bHQgPSBtX2hhbmRsZVdlYlBhZ2VNYXAuYWRkKGhhbmRsZSwg
d2ViUGFnZVByb3h5LmlkZW50aWZpZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTM3Miw3ICszNzIs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChj
b25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dAogCiAgICAgbV9jbGllbnQtPnJlcXVlc3RTd2l0
Y2hUb1BhZ2UoKnRoaXMsICpwYWdlLCBbZnJhbWVJRCwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKICAgICAgICAgcGFnZS0+c2V0Rm9jdXMo
dHJ1ZSk7Ci0gICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7
CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CiAK
ICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CkBAIC00OTcsMTAgKzQ5
NywxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29t
cGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25l
U2hvdCh0aW1lb3V0KTsKICAgICBzd2l0Y2ggKGxvYWRTdHJhdGVneSkgewogICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgot
ICAgICAgICBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFj
a3NQZXJQYWdlLnNldChwYWdlLnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBh
Z2Uuc2V0KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRT
dHJhdGVneTo6RWFnZXI6Ci0gICAgICAgIG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS5wYWdlSUQoKSwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgICAgICBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlclBhZ2Uuc2V0KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZv
ck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdh
dGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJh
Y2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKIHsKICAgICBJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJvciA9IFNUUklOR19GT1JfUFJFREVGSU5F
RF9FUlJPUl9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAoYXV0byBpZCA6IGNvcHlUb1ZlY3Rvciht
YXAua2V5cygpKSkgewpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246Om5hdmlnYXRpb25PY2N1cnJlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1l
CiAgICAgICAgIC8vIE5ldyBwYWdlIGxvYWRlZCwgY2xlYXIgZnJhbWUgaGFuZGxlcyBwcmV2aW91
c2x5IGNhY2hlZC4KICAgICAgICAgbV9oYW5kbGVXZWJGcmFtZU1hcC5jbGVhcigpOwogICAgICAg
ICBtX3dlYkZyYW1lSGFuZGxlTWFwLmNsZWFyKCk7Ci0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZS50YWtlKGZyYW1lLnBhZ2UoKS0+cGFnZUlEKCkpKSB7CisgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJh
Y2tzUGVyUGFnZS50YWtlKGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAg
ICAgbV9sb2FkVGltZXIuc3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KEpTT046Ok9iamVjdDo6Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03NzgsNyArNzc4LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGlvbk9jY3VycmVkRm9yRnJhbWUoY29u
c3QgV2ViRnJhbWVQcm94eSYgZnJhbWUKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRvY3Vt
ZW50TG9hZGVkRm9yRnJhbWUoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUpCiB7CiAgICAgaWYg
KGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3Bl
bmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2UudGFr
ZShmcmFtZS5wYWdlKCktPnBhZ2VJRCgpKSkgeworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9
IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFn
ZS50YWtlKGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9sb2Fk
VGltZXIuc3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046Ok9i
amVjdDo6Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03OTIsMTQgKzc5MiwxNCBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpkb2N1bWVudExvYWRlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1l
UHJveHkmIGZyYW1lKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0b3JGcm9u
dGVuZExvYWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1dG8gY2Fs
bGJhY2sgPSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdl
SUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFj
a3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBw
YWdlKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5k
aW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmll
cigpKSkKICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHBhZ2UpOwpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQog
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShj
b25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FS
RF9JTlRFUkFDVElPTlMpCi0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2Fy
ZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjayhXVEY6
Om51bGxvcHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC04MjQsMTcgKzgy
NCwxNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdl
YlBhZ2VQcm94eSYgcGFnZSkKICAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFjdGlvbnMgb24g
dGhpcyBwYWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVzZSBzdWJzZXF1
ZW50CiAgICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgogI2lmIEVOQUJMRShX
RUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpKQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKICAgICAgICAgY2FsbGJh
Y2soQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBt
X3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5p
ZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1Jf
V0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJEUklW
RVJfQUNUSU9OU19BUEkpCiAgICAgLy8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRv
IGNhbmNlbCBzbyB0aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3Bl
LgotICAgIE9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBpbnB1dERpc3Bh
dGNoZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAg
ICBPcHRpb25hbDxSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gaW5wdXREaXNwYXRjaGVy
ID0gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpOwogICAg
IGlmIChpbnB1dERpc3BhdGNoZXIuaGFzVmFsdWUoKSkKICAgICAgICAgaW5wdXREaXNwYXRjaGVy
LnZhbHVlKCktPmNhbmNlbCgpOwogI2VuZGlmCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnQKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZhbHVhdGVK
YXZhU2NyaXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25D
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgZnVuY3Rpb24s
IGFyZ3VtZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJh
Y2tUaW1lb3V0LCBjYWxsYmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9y
LCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja1RpbWVvdXQsIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1
bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtOTg3LDE3ICs5ODcsMTcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleHQKICAgICB9OwogCiAgICAgaWYgKG9wdGlvbmFsTm9kZUhhbmRsZSkg
ewotICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxl
KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFuZGxlKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRG
cmFtZVdpdGhOb2RlSGFuZGxlKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxO
b2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsTmFtZSkgewotICAgICAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0
aW9uYWxOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFt
ZUlELCAqb3B0aW9uYWxOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsT3JkaW5hbCkgewotICAgICAgICBw
YWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBhZ2VJRCgp
LCBmcmFtZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDI0LDcgKzEw
MjQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5k
bGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleAogICAgICAgICBjYWxsYmFjay0+c2VuZFN1
Y2Nlc3MoaGFuZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlEKSk7CiAgICAgfTsKIAotICAgIHBhZ2Ut
PnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OlJlc29sdmVQYXJlbnRGcmFtZShwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlUGFy
ZW50RnJhbWUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBwcm90b2Nv
bFN0cmluZ1RvQ29vcmRpbmF0ZVN5c3RlbShjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW1T
dHJpbmcpCkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpj
b21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbgogICAg
IH07CiAKICAgICBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSBvcHRpb25hbFNjcm9sbElu
dG9WaWV3SWZOZWVkZWQgPyAqb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkIDogZmFsc2U7
Ci0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFnZS0+cGFnZUlEKCks
IGZyYW1lSUQsIG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvb3JkaW5hdGVT
eXN0ZW0udmFsdWUoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwg
bm9kZUhhbmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29vcmRpbmF0ZVN5c3RlbS52YWx1
ZSgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVI
YW5kbGUsIFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0x
MTA5LDcgKzExMDksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25F
bGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZAogICAgICAgICBjYWxsYmFj
ay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6U2VsZWN0T3B0
aW9uRWxlbWVudChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVt
ZW50KHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1Nob3dp
bmdKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgYm9vbCogcmVzdWx0KQpAQCAtMTI3
OSw3ICsxMjc5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhj
b25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgUmUKICAgICAgICAgY2FsbGJhY2st
PnNlbmRTdWNjZXNzKGJ1aWxkQXJyYXlGb3JDb29raWVzKGNvb2tpZXMpKTsKICAgICB9OwogCi0g
ICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6R2V0Q29va2llc0ZvckZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6
Om51bGxvcHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2Vz
cygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6R2V0Q29va2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmRlbGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJh
Y2s+JiYgY2FsbGJhY2spCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpkZWxldGVTaW5nbGVDb29raWUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRI
YW5kbAogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6RGVsZXRlQ29va2llKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNv
b2tpZU5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2Vz
cygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6RGVsZXRlQ29va2llKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5h
bWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9t
YWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChTdHJpbmcgZG9tYWluKQpAQCAtMTQ0NSw3ICsx
NDQ1LDcgQEAgYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVy
YWN0aW9uKCkgY29uc3QKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQogU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVy
Rm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXREaXNwYXRj
aGVyc0J5UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICByZXR1cm4gbV9pbnB1
dERpc3BhdGNoZXJzQnlQYWdlLmVuc3VyZShwYWdlLmlkZW50aWZpZXIoKSwgWyZdIHsKICAgICAg
ICAgcmV0dXJuIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdl
YlBhZ2VQcm94eSYgcGFnZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQ
b2ludCwgV1RGOjpudWxsb3B0KTsKICAgICB9OwogCi0gICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRl
RWxlbWVudExheW91dChwYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwg
Q29vcmRpbmF0ZVN5c3RlbTo6TGF5b3V0Vmlld3BvcnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVt
ZW50TGF5b3V0SGFuZGxlcikpOworICAgIHBhZ2UucHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlv
dXQocGFnZS53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgZmFsc2UsIENvb3JkaW5h
dGVTeXN0ZW06OkxheW91dFZpZXdwb3J0KSwgV1RGTW92ZShkaWRDb21wdXRlRWxlbWVudExheW91
dEhhbmRsZXIpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05T
KQpAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxh
dGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICAgICAgfTsKIAotICAgICAgICBhdXRv
JiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxi
YWNrc1BlclBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgICAgIGNhbGxiYWNrSW5N
YXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgICAg
IGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKQEAg
LTE1MDcsNyArMTUwNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50CiAKICAgICAgICAgLy8g
SWYgdGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJ
bk1hcCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewotICAgICAgICAgICAg
YXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2FsbGJh
Y2tUb0NhbmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChX
VEY6Om51bGxvcHQpOwogICAgICAgICB9CiAKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJv
eHkmIHBhZ2UsIEtleWJvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICB9
OwogCi0gICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS5pZGVudGlmaWVyKCksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgY2FsbGJh
Y2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAg
ICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7
CkBAIC0xNTUzLDcgKzE1NTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlibwogICAgIC8vIElm
IHRoZSBpbnRlcmFjdGlvbiBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzLCB0aGVuIGRvIG5v
dCB3YWl0IGZvciBldmVudHMgdG8gYmUgZmx1c2hlZC4KICAgICAvLyBUaGlzIGhhcHBlbnMgaW4g
c29tZSBjb3JuZXIgY2FzZXMgb24gbWFjT1MsIHN1Y2ggYXMgcmVsZWFzaW5nIGEga2V5IHdoaWxl
IENvbW1hbmQgaXMgcHJlc3NlZC4KICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS5pc1By
b2Nlc3NpbmdLZXlib2FyZEV2ZW50cygpKSB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNl
bCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShw
YWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5n
S2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmll
cigpKTsKICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOwogICAgIH0KIApA
QCAtMTYzNyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1v
dXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5n
TW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1f
cGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UtPmlkZW50
aWZpZXIoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoY2FsbGJhY2tJ
bk1hcCkKICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9S
X1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb25zdCBKCiAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVcz
QyBkcml2ZXIgaW1wbGVtZW50YXRpb25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBq
dXN0IGRvIG5vdGhpbmcgc2lsZW50bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0
aHMsIHdlIGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBh
cmUgb3V0c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KICAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXAg
JiYgIXBhZ2UtPmlzUHJvY2Vzc2luZ01vdXNlRXZlbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8g
Y2FsbGJhY2tUb0NhbmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1Bl
clBhZ2UudGFrZShwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9D
YW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
cGFnZS0+aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpu
dWxsb3B0KTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0
cmluZyYgaGFuZGxlLCBjb24KICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwog
ICAgIH07CiAKLSAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9h
cmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+aWRlbnRpZmllcigpLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNhbGxiYWNrSW5NYXApCiAgICAgICAg
IGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0
KSk7CiAgICAgY2FsbGJhY2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2Fs
bGJhY2spOwpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
dGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3AKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0U2NyZWVuc2hvdENhbGxiYWNrSUQrKzsKICAg
ICBtX3NjcmVlbnNob3RDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKIAotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpUYWtlU2NyZWVuc2hvdChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhh
bmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIGNhbGxiYWNrSUQp
LCAwKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6VGFrZVNjcmVlbnNob3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5v
ZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNsaXBUb1ZpZXdwb3J0LCBjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBp
bWFnZURhdGFIYW5kbGUsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
CmluZGV4IGViNGJkMmJhNTNjLi5kY2Y5ZjRkMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAt
MzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVu
dGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywg
UmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAg
dm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRz
LCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAg
ICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0
KEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGlu
Z1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPj4mKTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFj
a3NXaXRoVGltZW91dChIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmUHRyPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBs
b2FkVGltZXJGaXJlZCgpOwogCkBAIC0yODIsMjIgKzI4MiwyMiBAQCBwcml2YXRlOgogICAgIFJl
ZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRj
aGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERp
c3BhdGNoZXI+IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNo
TWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBh
Z2VNYXA7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nPiBt
X3dlYkZyYW1lSGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJh
Y2tzUGVyUGFnZTsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFn
ZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5n
Q29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4g
bV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdl
OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdh
dGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlckZyYW1lOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3Bl
bmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5
SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdF
QkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxB
dXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRF
UkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248
dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+
PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAK
ICAgICB1aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpA
QCAtMzIxLDcgKzMyMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyIEFQSXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVz
ZQogICAgIC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMg
aW5pdGlhbCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxh
dGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3Bh
dGNoZXJzQnlQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmPFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtl
ZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtl
eXN0cm9rZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCmluZGV4IGRmMjZhY2Ri
MWNhLi41MGY0MjdlZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAg
LTUwLDkgKzUwLDkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5n
Q29udGV4dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgYm8KICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsK
IAotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVu
ZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkpKQog
ICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9S
X05BTUUoVGltZW91dCkpOwotICAgIG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2Uu
c2V0KHBhZ2UtPnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9wZW5kaW5nSW5z
cGVjdG9yQ2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKICAgICAvLyBEb24ndCBicmluZyB0aGUgaW5zcGVjdG9yIHRvIGZyb250IHNp
bmNlIHRoaXMgbWF5IGJlIGRvbmUgYXV0b21hdGljYWxseS4KICAgICAvLyBXZSBqdXN0IHdhbnQg
aXQgbG9hZGVkIHNvIGl0IGNhbiBwYXVzZSBpZiBhIGJyZWFrcG9pbnQgaXMgaGl0IGR1cmluZyBh
IGNvbW1hbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZTU5YmU5MWE0MjAuLjkyY2Yy
MDhhYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVm
PFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpjcmVhdGUoV2ViUGFnZVByb3gKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZSgm
cGFnZSkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQogCiBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQpAQCAt
MzE0LDcgKzMxNCw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6flBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSgpCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpp
bnZhbGlkYXRlKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBu
dWxscHRyOwogCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0Nv
bnRyb2xsZXIubW0KaW5kZXggZjAyMDgzZGNlYzcuLmFkNGI2MWVjMzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIu
bW0KQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZXBsYWNl
UmVsYXRpdmVUb1NlbGVjdGlvbihOU0F0dHJpYnV0ZWRTdHJpbmcgKmFubm8KICAgICBpZiAoIW1f
cGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVw
bGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oYW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQs
IGxlbmd0aCwgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50
TGVuZ3RoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJlbGF0aXZlVG9TZWxl
Y3Rpb24oYW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCwgcmVsYXRpdmVS
ZXBsYWNlbWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKSwgbV9wYWdlLndl
YlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZW1vdmVBbm5v
dGF0aW9uUmVsYXRpdmVUb1NlbGVjdGlvbihOU1N0cmluZyAqYW5ub3RhdGlvbk5hbWUsIGludDY0
X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgpCkBAIC01Miw3ICs1Miw3IEBAIHZv
aWQgVGV4dENoZWNraW5nQ29udHJvbGxlcjo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxl
Y3Rpb24oTlNTdHJpbmcgKmFubm90CiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRv
U2VsZWN0aW9uKGFubm90YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9u
KGFubm90YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS53ZWJQYWdl
SUQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CmluZGV4IGY3OGE4MDRiMjM1Li43YWIzNGUwYmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bQpAQCAtMzI1LDcgKzMyNSw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAgICAgOiBtX3Bh
Z2UoJnBhZ2UpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcGFnZS0+cHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsK
IH0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5KCkKQEAgLTMzNyw3ICszMzcsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAg
ICAgbV9wYWdlID0gbnVsbHB0cjsKIAogICAgIGF1dG8gY29udGV4dE1hcCA9IFdURk1vdmUobV9j
b250ZXh0TWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KaW5kZXggOGEzOTRhZmU3MzguLjJhMjhiMTU5MjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50
KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVj
dGlvbigpCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwg
bV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAg
ICAgCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIGNvbnN0IFN0
cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JB
ZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBwcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlELCBtZXNzYWdlUmVjZWl2ZXIpOworICAgIHBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdl
SUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
LCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAg
ICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1f
cGFnZUlEKTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIG1fd2ViUGFnZUlEKTsKIH0KIAogI2VuZGlmCkBAIC0yODUsMTcgKzI4NSwxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtpbmdF
cnJvck9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikK
IHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9j
Y3VycmVkKCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5IHNwZWVjaEJvdW5kYXJ5
LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpT
cGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1
cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29y
ZEJvdW5kYXJ5LCBjaGFySW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2b2ljZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV93ZWJQYWdlSUQpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDhkZjRkYTdiMzIwLi5mNDA0MmZlNzBk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTEzNjIsNyArMTM2Miw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZp
ZXdJbXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6
fldlYlZpZXdJbXBsKCkKIHsKICAgICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAg
ICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29s
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgW21f
cmVtb3RlT2JqZWN0UmVnaXN0cnkgX2ludmFsaWRhdGVdOwogICAgICAgICBtX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5ID0gbmlsOwogICAgIH0KQEAgLTE5NzksMTMgKzE5NzksMTMgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUs
IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdl
YlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlT
dGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIs
IHRoaXMsIG1fcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0
aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNTMs
NyArMjA1Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGlu
ZygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkK
IHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdp
bmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVs
bHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIyMTYsMTkgKzIyMTYs
MTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkK
IAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3Bh
Z2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmll
d0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6
dmlld0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAl
cCAocGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVs
bHUpIHZpZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRD
aGFuZ2UoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2Ug
JWxsdSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxs
dSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMzgyMyw3ICszODIzLDcgQEAgX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkgKldlYlZpZXdJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB7
CiAgICAgaWYgKCFtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7CiAgICAgICAgIG1fcmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgPSBhZG9wdE5TKFtbX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9p
bml0V2l0aFdlYlBhZ2VQcm94eTptX3BhZ2VdKTsKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJl
Z2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIFttX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk7CisgICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJ
RCgpLCBbbV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0pOwogICAg
IH0KIAogICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjYTc2ODdmNmI1Mi4uMWU4MGZmNTI4
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVO
QUJMRShHRU9MT0NBVElPTikKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlv
bklELCBhbGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNp
c2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKaW5kZXggNjJiMDcyOWY4YTUuLjYx
YjhmMzZlZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JU
YXJnZXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFy
Z2V0UHJveHkuY3BwCkBAIC01MCwxOSArNTAsMTkgQEAgSW5zcGVjdG9yVGFyZ2V0UHJveHk6Oklu
c3BlY3RvclRhcmdldFByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0YXIK
IHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJ
bnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBl
KCkpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJikKIHsKICAgICBpZiAobV9w
YWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLndlYlBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1Rhcmdl
dEJhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChpZGVudGlmaWVyKCksIG1lc3NhZ2Up
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVz
c2FnZSksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uNzQ0Mzk4ODM3ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byBy
ZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90
aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAg
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBh
bGxvd2VkKSwgcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH0pOwogICAgIG1fcGVuZGluZ1JlcXVl
c3RzLmFkZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CiAgICAgcmV0dXJuIHJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDdhM2U5
YjIzYmEuLjc2MDYzMWM0OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAg
dWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlv
bklEKCk7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0
aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+
IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBw
YWdlTm90aWZpY2F0aW9uSUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjpt
YWtlX3BhaXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZp
Y2F0aW9uSURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFp
ciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5
UmVmKCkpKTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0
KCkpOwpAQCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGwKIAogdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoV2ViTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHdl
YlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpKS5zZWNvbmQuZ2V0KCkpCisgICAg
aWYgKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChz
dGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkp
LnNlY29uZC5nZXQoKSkKICAgICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKCpub3RpZmljYXRpb24p
OwogfQogICAgIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lO
b3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0
aW9uSUQpCiB7Ci0gICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNh
dGlvbnMudGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNh
dGlvbklEKSk7CisgICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNh
dGlvbnMudGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3Rp
ZmljYXRpb25JRCkpOwogICAgIGlmICh1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGds
b2JhbElETm90aWZpY2F0aW9uUGFpci5maXJzdCkgewogICAgICAgICBXZWJOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbiA9IGdsb2JhbElETm90aWZpY2F0aW9uUGFpci5zZWNvbmQuZ2V0KCk7CiAg
ICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25J
RCk7CkBAIC0xMTksMTIgKzExOSwxMiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQog
fQogCi1zdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCwgUGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpCitzdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJ
RDsKIH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBQYWdlSWRlbnRpZmll
ciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0g
ZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdl
Tm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDE1ICsxNDEsMTUgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBh
Z2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0
aW9uKQogewotICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAg
YXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKIAogICAgIFZl
Y3Rvcjx1aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNh
dGlvbklEcy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsK
IAogICAgIGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25v
dGlmaWNhdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIHdlYlBh
Z2VJRCA9IGl0LT5rZXkuZmlyc3Q7CisgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBpdC0+a2V5
LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNl
Y29uZDsKLSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3RpZmlj
YXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYg
KCFmaWx0ZXJGdW5jdGlvbihwYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQ
YWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5maXJz
dDsKQEAgLTE3MCw4ICsxNzAsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAgIGlmIChp
dCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Ci0gICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CisgICAgYXV0byog
d2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOwogICAg
IGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODUsOCArMTg0LDcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRp
b24odWludDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0
LT52YWx1ZS5maXJzdDsKLSAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDEx
NTc4MWU0MzMzLi40OGFiNThlODFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RpZmljYXRpb25DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVk
ZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBh
Z2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRl
ckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5v
dGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAg
ICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudApAQCAtODksOSArODksOSBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7
CiAgICAgLy8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2Vz
cydzIG5vdGlmaWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwg
dWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21w
cmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJ
RDsgdmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5v
dGlmaWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmlj
YXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
Tm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCmluZGV4IGQ3ZjBjM2M5NTAyLi4wYzAzNDA2OTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lv
bmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBzdXNwZW5kZWRQYWdl
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAg
ICAsIG1fd2ViUGFnZUlEKHBhZ2Uud2ViUGFnZUlEKCkpCiAgICAgLCBtX3Byb2Nlc3MoV1RGTW92
ZShwcm9jZXNzKSkKICAgICAsIG1fbmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCkKICAgICAsIG1f
aXNTZXJ2ZXJSZWRpcmVjdChpc1NlcnZlclJlZGlyZWN0KQpAQCAtNjMsMTMgKzY0LDEzIEBAIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBh
Z2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVBy
b3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNw
ZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQs
IHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0
ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3Vz
cGVuZGVkUGFnZTogJXAiLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFn
ZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJv
Y2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFBy
b3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRl
RGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdl
LnBhZ2VJRCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdl
LmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAgLy8g
SWYgd2UgYXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUgV2ViUHJv
Y2VzcycgV2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAvLyBXZWJQYWdlUHJveHk6OmRp
ZENyZWF0ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFsaXplIG1fbWFp
bkZyYW1lLiBJbiBzdWNoCkBAIC05MywxMSArOTQsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6
On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgmbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0
YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFT
dG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7
CiAKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkp
OwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0
ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNsb3NlKCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5r
U3RvcmVVc2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5pZGVudGlmaWVyKCkp
OwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNzLmNv
cHlSZWYoKV0gewogICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKCk7CkBAIC0xMDYsNyAr
MTA3LDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0Rp
ZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJw
cm9jZXNzRGlkVGVybWluYXRlOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50
b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRlKCk7
CiB9CiAKQEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5j
ZWwoKQogICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nl
c3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2Fu
Y2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdl
UHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQo
bV9tYWluRnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1f
cmVxdWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBl
OjpDYW5jZWxsYXRpb24pOwpAQCAtMTM2LDIwICsxMzcsMjAgQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gbV9w
YWdlLmNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKTsKICAgICBw
YXJhbWV0ZXJzLmlzUHJvY2Vzc1N3YXAgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZShtX3BhZ2UucGFnZUlEKCksIHBhcmFtZXRl
cnMpLCAwKTsKLSAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52
aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBwYXJhbWV0
ZXJzKSwgMCk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2Uu
dmlzaXRlZExpbmtTdG9yZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRE
YXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdl
UHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFn
ZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmln
YXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdl
YlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dl
YlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSBy
ZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNz
IHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8v
IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlm
aWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRl
bSB0byBoYXBwZW4gaW4gdGhlCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3Jl
OjpSZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJk
SXRlbTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0Zvcndh
cmRJdGVtOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJl
ZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xNzEsOCAr
MTcyLDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUo
aXRlbVN0YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUo
KSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3Zl
KGl0ZW1TdGF0ZXMpKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgp
LCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwg
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xODcsNyArMTg4LDcgQEAgaW5saW5lIGJvb2wgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1l
SUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJh
bWVQcm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMjUsNyArMjI2LDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2
aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAl
IiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCks
IG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlUHJveHlJRCA9ICUiIFBS
SXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5h
dmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBt
X3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7
CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zp
c2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAtMjQ1LDcgKzI0Niw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmln
YXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJ
dTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2
aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1f
d2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsK
ICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zp
c2lvbmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjYxLDkgKzI2Miw5IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgdWludDY0CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9y
RnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2Uu
aWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQu
dG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsg
fTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9w
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9
IHRydWU7CiAgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0
aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2Fk
VHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJ
bnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGUzZWU2
ODdmYTcuLjViNGM5Y2YyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
dmFsaWRhdGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVp
bnQ2NF90PiYgbmF2aWdhdGlvbklEID0gV1RGOjpudWxsb3B0KTsKIAogICAgIFdlYlBhZ2VQcm94
eSYgbV9wYWdlOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAg
IFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJh
d2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4g
bV9tYWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNGFhMzQ0NDkwZDguLjU3N2M0MzQyMzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29u
c3QgU3RyaW5nJiBkZWJ1Z2dhYmxlVHlwZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dh
YmxlVHlwZSA9IGRlYnVnZ2FibGVUeXBlOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFj
a2VuZENvbW1hbmRzVVJMOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUs
IGJhY2tlbmRDb21tYW5kc1VSTCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpLCBtX2lu
c3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1
ZXN0KFVSTChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwog
fQogCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3co
KQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRl
bmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5k
TWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkp
OwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkK
QEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVG
cm9udGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVj
dG9yUGFnZSwgbnVsbHB0cik7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9y
UGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQog
ICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICB1bnRyYWNr
SW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBjNjRkN2VmMTliZC4uNzkyNGU0ZWYz
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cApAQCAtODAsNiArODAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVy
ZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogCiBTdXNwZW5kZWRQ
YWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgc2hv
dWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQog
ICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3dlYlBhZ2VJRChwYWdlLndlYlBhZ2VJRCgpKQog
ICAgICwgbV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAgICAgLCBtX21haW5GcmFtZUlEKG1h
aW5GcmFtZUlEKQogICAgICwgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQpAQCAtODksMTAgKzkwLDEwIEBAIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm94eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3BlbmRlZFBh
Z2VDb3VudCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhp
cyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAgICAg
bV9zdXNwZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5zaW9uVGltZW91dCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0
cnVlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTE0LDcgQEAgU3Vz
cGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgpOwogCiAg
ICAgaWYgKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZykK
LSAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAogICAgIC8vIFdlIGNhbGwg
bWF5YmVTaHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBTdXNwZW5kZWRQYWdlIGlz
IGN1cnJlbnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sCiAgICAgLy8g
YW5kIHdlIHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vzc1Bvb2wgbWV0aG9kcy4K
QEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkK
ICAgICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5k
ZWQpOwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChm
YWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBT
dXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNjAsNyBAQCB2b2lkIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5n
LCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xv
c2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3Nl
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5
OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTIwMyw3ICsyMDQs
NyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQo
U3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVs
bHB0cjsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgaWYg
KG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQog
ICAgICAgICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZvaWQg
U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dn
aW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBh
Z2VJRCgpLnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5n
KCIoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBXZWJQYWdl
IElEICIsIG1fd2ViUGFnZUlELnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCA5
MTY1M2NjNzhlYS4uN2I5NWI2ZWRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oCkBAIC03NCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94eSYg
bV9wYWdlOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgbV9tYWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDAyMzg3ZDQzYmNjLi5iNjYyMGRjMWYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZChQZXJtaXNzaW9uSW5mCiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTE5
MSw3ICsxOTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpkZW55UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgICAgICBtX2RlbmllZFJl
cXVlc3RzLmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1
ZXN0LnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERv
Y3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCBy
ZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2Fw
dHVyZSgpIH0pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZChyZXF1
ZXN0LnVzZXJNZWRpYUlEKCksIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQocmVxdWVzdC51c2VyTWVkaWFJRCgpLCB0
b1dlYkNvcmUocmVhc29uKSwgaW52YWxpZENvbnN0cmFpbnQpLCBtX3BhZ2Uud2ViUGFnZUlEKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKICAgICBVTlVTRURfUEFSQU0oaW52
YWxpZENvbnN0cmFpbnQpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQ
ZXJtCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IC0tbV9oYXNQZW5kaW5nQ2FwdHVyZTsKLSAgICB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0s
IG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAKICAgICBwcm9jZXNzTmV4dFVzZXJNZWRpYVJlcXVlc3RJ
Zk5lZWRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHAKaW5kZXggMWU5MWFiYjZlZmQuLmI0ODI3NzI5ZDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2
LDEwICs2NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9G
b3JTd2lwZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJl
bmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hN
YXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNv
bnRyb2xsZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JB
bGxQYWdlcygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRl
ZCBwYWdlIElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlm
aWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1
cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtODYsMTQgKzg2LDE0IEBA
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZVByb3h5KQogICAgIGlmICh3ZWJQYWdlUHJveHkuaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgY29ubmVjdFRvUHJvY2VzcygpOwogCi0gICAgdmlld0dlc3R1cmVDb250cm9s
bGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CisgICAg
dmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5pZGVu
dGlmaWVyKCksIHRoaXMpOwogfQogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIoKQogewogICAgIHBsYXRmb3JtVGVhcmRvd24oKTsKIAotICAgIHZpZXdHZXN0
dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQo
KSk7CisgICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkucmVtb3ZlKG1fd2Vi
UGFnZVByb3h5LmlkZW50aWZpZXIoKSk7CiAKICAgICBkaXNjb25uZWN0RnJvbVByb2Nlc3MoKTsK
IH0KQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb21Qcm9jZXNzKCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nlc3MpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJv
Y2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsK
ICAgICBtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gZmFsc2U7CiB9CiAKQEAgLTExMiwxMSArMTEy
LDExIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAg
ICBpZiAobV9pc0Nvbm5lY3RlZFRvUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBh
Z2VJRCgpLCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9pc0Nvbm5l
Y3RlZFRvUHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dl
c3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKK1ZpZXdHZXN0
dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVy
ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpH
ZXN0dXJlSUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0g
dmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlm
IChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBh
Z2VzKCkuZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmZvcmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50
UmVxdWVzdCA9IHRydWU7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAg
IEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdl
UHJveHkuZm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJ
RF0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVy
ZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBA
IC02MTcsNyArNjE3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVlc3RSZW5k
ZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvJiBwcm9jZXNzID0gbV93
ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IG1fd2ViUGFnZVByb3h5LnByb3Zp
c2lvbmFsUGFnZVByb3h5KCktPnByb2Nlc3MoKSA6IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKTsK
ICAgICBhdXRvIHRocmVzaG9sZCA9IG1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5yZW5kZXJUcmVl
U2l6ZVRocmVzaG9sZCgpOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9s
ZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6
ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaAppbmRleCA3Y2Q2ZThmZTA5MS4uMTcxYjViNjg0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yNyw5
ICsyNyw5IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1
cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgR2VzdHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9s
bGVyRm9yR2VzdHVyZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAg
c3RhdGljIEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2lu
R2VzdHVyZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNp
dGVkTGlua1N0b3JlLmNwcAppbmRleCBlYzUzZGQ2YTVkZi4uZDc5ZDdhZDg0NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDIsNiArMTAy
LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGwoKQogCiB2b2lkIFZpc2l0ZWRM
aW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKKyAgICAvLyBGSVhNRTogTmVlZHMgdG8g
bG9vayB1cCBXZWJQYWdlUHJveHkgZnJvbSBXZWJQYWdlSUQuCiAgICAgaWYgKGF1dG8qIHdlYlBh
Z2VQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKSB7CiAgICAgICAgIGlm
ICghd2ViUGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5j
cHAKaW5kZXggYjVhNWM4MjM0ZDguLmM2NWUxNmI5YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC00NSwxMiArNDUsMTIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHkpCiAgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiB7Ci0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgKnRoaXMp
OwogfQogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDgyNzVjZjZlYzk1Li41MzcwMzcxYzRlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlz
dDo6aXRlbUZvcklEKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50CiAgICAgaWYgKCFpdGVtKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChpdGVtLT5wYWdlSUQoKSA9PSBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBBU1NFUlQoaXRlbS0+cGFnZUlEKCkgPT0gbV9wYWdlLT5p
ZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBpdGVtOwogfQogCkBAIC00MzcsNyArNDM3LDcgQEAg
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0ZvcndhcmRMaXN0
U3RhdGUgYmFja0ZvcndhcmRMaXN0U3QKICAgICAvLyBGSVhNRTogRW5hYmxlIHJlc3RvcmluZyBy
ZXNvdXJjZURpcmVjdG9yeVVSTC4KICAgICBmb3IgKGF1dG8mIGJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSA6IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zKSB7CiAgICAgICAgIGJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVj
dElkZW50aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBl
Pjo6Z2VuZXJhdGUoKSB9OwotICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwg
bV9wYWdlLT5wYWdlSUQoKSkpOworICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
KSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpKTsKICAgICB9CiAgICAgbV9jdXJyZW50SW5kZXggPSBi
YWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpiYWNr
Rm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OwogICAgIG1fZW50
cmllcyA9IFdURk1vdmUoaXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJF
ZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4uMGZlNmQ4MzQ5ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYg
KCFtX3BhZ2UgfHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBs
eUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFu
ZChtX2NvbW1hbmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJl
Z2lzdGVyRWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlJlZG8pOwogfQogCkBAIC02NCw3
ICs2NCw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6cmVhcHBseSgpCiAgICAgaWYgKCFt
X3BhZ2UgfHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBseUVk
aXRDb21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZCht
X2NvbW1hbmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lz
dGVyRWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlVuZG8pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGVlMzM3MTA4MTcwLi5kYjIyNGI2
MWNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJM
SW5GcmFtZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFt
ZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAog
dm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBj
b25zdCBVUkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6
bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1J
TUVUCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1F
VHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0
YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlE
KSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExv
YWRpbmcoKSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3Rv
cExvYWRpbmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5n
RnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAgICAgCiBib29sIFdl
YkZyYW1lUHJveHk6OmNhblByb3ZpZGVTb3VyY2UoKSBjb25zdApAQCAtMjYyLDcgKzI2Miw3IEBA
IHZvaWQgV2ViRnJhbWVQcm94eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDAuLjcyMTI1YjBlZTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5LmNwcApAQCAtNDQsMjUgKzQ0LDI1IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGdWxsCiAg
ICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBtX3BhZ2Uu
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsK
KyAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFn
ZUlEKCksICp0aGlzKTsKIH0KIAogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkoKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICAgICBtX2NsaWVudC5j
bG9zZUZ1bGxTY3JlZW5NYW5hZ2VyKCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGll
bnQoKS53aWxsRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4o
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQ
YWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJG
dWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEVudGVyRnVs
bHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIAogICAgIGlm
IChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1
dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtNzMsMTMgKzczLDEzIEBAIHZvaWQg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3Bh
Z2UuZnVsbHNjcmVlbkNsaWVudCgpLndpbGxFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxs
RXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4o
KSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQo
KS5kaWRFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVs
bFNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CiAgICAgCiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAg
ICAgICBpZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdl
LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC04OSwxMiAr
ODksMTIgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVl
bigpCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNj
cmVlbihib29sIGFuaW1hdGluZykKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmltYXRpbmdGdWxsU2NyZWVuKGFuaW1hdGlu
ZyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcp
LCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OnJlcXVlc3RFeGl0RnVsbFNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQ
YWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNG
dWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTA4LDI3ICsxMDgsMjcgQEAgdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQs
IENvbXBsZXRpb24KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzYXZlU2Nyb2xs
UG9zaXRpb24oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVs
bFNjcmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAg
bV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBv
c2l0aW9uKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkluc2V0cyhjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4
dGVudCYgaW5zZXRzKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRzKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGluc2V0cyksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkF1
dG9IaWRlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hp
ZGVEdXJhdGlvbihkdXJhdGlvbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1
dG9IaWRlRHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihi
b29sIGhpZGRlbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9w
YWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpj
bG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAK
aW5kZXggZjkzZmE2NzY4YTIuLmU2MjFhOGZkODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3Rv
clByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiB7
CiAgICAgaWYgKGluc3BlY3RlZFBhZ2UgJiYgaW5zcGVjdGVkUGFnZS0+aGFzUnVubmluZ1Byb2Nl
c3MoKSkgewogICAgICAgICBtX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0ZWRQYWdlOwotICAgICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAg
fQogfQogCkBAIC04OSw3ICs4OSw3IEBAIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmludmFsaWRhdGUoKQogewogICAgIGlmIChtX2luc3BlY3RlZFBhZ2UpCi0gICAgICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250
ZW5kUGFnZUFuZFdpbmRvdygpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwpAQCAtMTAyLDcg
KzEwMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSks
IG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogICAgIGNy
ZWF0ZUZyb250ZW5kUGFnZSgpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Tm90aWZ5TmVlZERl
YnVnZ2VyQnJlYWsoKSwgMCk7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2hvdygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2hvdygpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6Y2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OkNsb3NlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xv
c2UoKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5k
UGFnZUFuZFdpbmRvdygpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnJlc2V0U3RhdGUoKQogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVzZXQoKQogewog
ICAgIGlmIChtX2luc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3Rl
ZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsK
ICAgICB9CiB9CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp1
cGRhdGVGb3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAg
QVNTRVJUKGluc3BlY3RlZFBhZ2UpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVk
UGFnZTsKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsK
IAogICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6VXBkYXRlQ29ubmVjdGlvbigp
LCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllcikKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRG
cm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaQogICAg
IGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5k
Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9p
bnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnNob3dDb25zb2xlKCkKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpzaG93Q29uc29sZSgpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0Nv
bnNvbGUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBt
X2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6c2hvd1Jlc291cmNlcygpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2hvd1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNv
dXJjZXMoKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSkKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJl
c291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAKICAgICBjcmVhdGVGcm9udGVu
ZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yODAsMTkgKzI4MCwx
OSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkK
ICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygp
LnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVl
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9p
bnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNp
ZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVk
Qm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdo
dCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQo
KSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3Bl
Y3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDks
OCArMzA5LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9p
c1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsK
IAogICAgIHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zNDMsOSArMzQzLDkgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBt
X2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdl
UHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFn
ZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlRWxlbWVudFNlbGVjdGlvbigpCkBAIC0zNTUsMTAgKzM1
NSwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKCkK
IAogICAgIGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUpIHsKICAgICAgICAgbV9pZ25vcmVF
bGVtZW50U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlv
bigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVj
dGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBjb25uZWN0KCk7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCBtX2lu
c3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9CiB9CiAKQEAgLTM5MCw3ICszOTAsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAgdHJh
Y2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSwgbV9pbnNwZWN0ZWRQYWdlKTsKIAotICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdl
LT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVj
dG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAg
LTQxMSw3ICs0MTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0
b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAgIGlmICghbV9pbnNw
ZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbiht
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbiht
X2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVs
KCkpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0Fj
dGl2ZUZyb250ZW5kKTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIyLDI2
ICs0MjIsMjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJv
bnRlbmQoYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVk
ID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0
aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVj
dG9yQXR0YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0
YWNoZWQpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgICAgICBpZiAobV9p
c0F0dGFjaGVkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAg
ICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRl
OjpSaWdodDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3Bl
Y3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRMZWZ0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpB
dHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRl
dGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCi0gICAgICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRE
b2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNw
ZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5s
b2FkUmVxdWVzdChVUkwoVVJMKCksIG1fdW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvclRlc3RQYWdlVVJMKCkgOiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVS
TCgpKSk7CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3Blbigp
CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwog
ICAgIG1faXNWaXNpYmxlID0gdHJ1ZTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJs
ZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgaWYgKG1faXNBdHRhY2hl
ZCkKICAgICAgICAgcGxhdGZvcm1BdHRhY2goKTsKQEAgLTQ4NCw4ICs0ODQsOCBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICB1bnRy
YWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZSht
X2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+d2Vi
UGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBpZiAobV9pc0FjdGl2ZUZy
b250ZW5kKSB7CiAgICAgICAgIG1faXNBY3RpdmVGcm9udGVuZCA9IGZhbHNlOwpAQCAtNTQ4LDcg
KzU0OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5n
ZWQoYm9vbCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2luc3BlY3Rv
clBhZ2UgJiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFt
X2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9j
a2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlE
KCkpOwogCiAgICAgcGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2FuQXR0YWNo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIyZTlh
NWFlZWQ2Li5hMDQzZWNiMjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0yNTYsOCArMjU2LDggQEAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhwcm9jZXNz
LCBhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MtPmNvbm5l
Y3Rpb24oKSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdF
X0NIRUNLX0JBU0UoY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nl
c3MocHJvY2VzcywgdXJsKSwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQogCi0jZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5u
ZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lbGx1LCB3ZWJQYWdlSUQ9JWxsdSwgUElEPSVpXSBXZWJQ
YWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJH
U19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hh
bm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0lbGx1LCBQSUQ9JWldIFdl
YlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9B
UkdTX18pCiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2Fu
IGhvbGQgaW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2
ZWx5Lgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQg
PSAxMDsKQEAgLTM5Myw3ICszOTMsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6
OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmCiB9CiAKIFdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJh
dGlvbikKLSAgICA6IG1fcGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgIDog
bV9pZGVudGlmaWVyKElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX3dlYlBhZ2VJRChQ
YWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcGFnZUNsaWVudChtYWtlV2Vha1B0
cihwYWdlQ2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0
aW9uQ2xpZW50PigpKQpAQCAtNDQxLDcgKzQ0Miw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVm
CiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29uc3RydWN0b3I6Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3Jv
dW5kKCkpCiAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFy
ZW50KTsKQEAgLTQ3MCw3ICs0NzEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgIGlm
IChoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNz
KCk7CiAKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9w
cm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5T
aXplT3ZlcnJpZGUocHJlZmVyZW5jZXNTdG9yZSgpLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZUtleSgpKSk7CkBAIC00OTIsOSAr
NDkzLDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFn
ZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVj
dG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKLSAgICBBU1NFUlQobV9wcm9jZXNzLT53
ZWJQYWdlKG1fcGFnZUlEKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdl
KG1faWRlbnRpZmllcikgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGZvciAo
V2ViUGFnZVByb3h5KiBwYWdlIDogbV9wcm9jZXNzLT5wYWdlcygpKQogICAgICAgICBBU1NFUlQo
cGFnZSAhPSB0aGlzKTsKQEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiAgICAg
bV91aUNsaWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9j
ZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2Fu
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xp
ZW50LT5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1fd2ViUGFnZUlEKTsKIAog
ICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5l
ZWRzRm9udEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAg
LTYzNSw3ICs2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29u
TG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2Fk
U3RhdGU6Ok9ic2VydmVyPiYmIG9ic2VydmVyKQpAQCAtNzIzLDEwICs3MjQsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNS
dW5uaW5nUHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiIFBSSXU2NCk7CiAKICAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1Vz
aW5nRGF0YVN0b3JlOjpZZXMpOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgYXV0byYg
cHJvY2Vzc1Bvb2wgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCk7CiAKQEAgLTczOCw3ICs3Mzks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7
CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1By
b3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwg
KnRoaXMpOwogCiAgICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKElzUHJvY2Vzc1N3YXA6
Ok5vKTsKIH0KQEAgLTc3OCw3ICs3NzksNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVp
IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBh
Z2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5
UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2Vz
cyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0
KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDAp
OworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3Jl
YXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBp
dGVtICVzIiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5s
b2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0g
PyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBj
bGllbnQgZm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8g
a2VlcCB0aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4g
b3BlbmVyIGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8v
IGNhbiBkbyBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAtNzk2LDcgKzc5Nyw3IEBAIGJvb2wgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVBy
b3h5PiYmIGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7
CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6Iik7
CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFT
dG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODExLDcgKzgxMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7
CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1By
b3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAq
dGhpcyk7CiAKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoSXNQcm9jZXNzU3dhcDo6
WWVzKTsKIH0KQEAgLTg4MSwxMCArODgyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFBy
b2Nlc3NGb3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdl
IGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBp
cyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODkz
LDcgKzg5NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNo
UHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7
CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6
IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NG
b3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC05MDYsNyArOTA3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKICAgICB9CiAKICAgICAv
LyBXZSBhbGxvdyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5nIGEgV2ViUHJvY2VzcyB0aGF0
J3MgYmVlbiBraWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCks
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlw
ZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBX
VEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBt
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6
OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RG
OjpudWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTkxNCwxMCArOTE1
LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1
bmNoUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2Vk
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nl
c3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NX
aXRoSXRlbTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC05MjksNyArOTMwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogICAgIGF1
dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmln
YXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIEZyYW1lTG9hZFR5
cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCks
IGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6
SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6
Om51bGxvcHQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTYwLDkgKzk2MSw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAgICAgc2V0RHJhd2lu
Z0FyZWEocGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdBcmVhUHJveHkobV9wcm9jZXNzKSk7CiAg
ICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEpOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1ldGVycyht
X3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBjcmVhdGlvblBhcmFt
ZXRlcnMobV9wcm9jZXNzLCAqbV9kcmF3aW5nQXJlYSkpLCAwKTsKIAotICAgIG1fcHJvY2Vzcy0+
YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIodmlzaXRlZExpbmtTdG9yZSgpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcih2aXNpdGVkTGlua1N0b3JlKCks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCkBAIC05NzAs
NyArOTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3Nl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsK
IApAQCAtMTAyMSw5ICsxMDIyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2Uo
KnRoaXMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9z
ZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBX
ZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3Mt
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2Vi
UGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsKIAogICAg
IC8vIE51bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgpAQCAtMTA0
MywxNCArMTA0NCwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZToi
KTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0
LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hl
Y2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3VkZGVu
VGVybWluYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0xMTE4LDcgKzExMTksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRSZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAg
LTExMzIsNyArMTEzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJU
KCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b246Iik7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7CiAKQEAgLTExNTQsMTYgKzExNTUsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMK
IAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRl
cnMpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcHJvY2Vzcy0+cmVz
cG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExNzIsNyArMTE3Myw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3Ry
aW5nLCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7
CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC0xMTgyLDcgKzExODMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywg
Y29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwo
KSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGly
ZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwNyw3ICsx
MjA4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJh
bWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVz
dChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xMjE1
LDEwICsxMjE2LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRE
YXRhOiIpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZp
Z2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogCkBAIC0xMjUzLDE5ICsxMjU0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAog
ICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwot
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0
ZXJzKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQYWdlSUQpOwogICAgIHByb2Nlc3MtPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhU
TUwiKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBo
YW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAg
ICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHBy
ZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9w
ZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJp
bmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3Ro
ZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9y
IG90aGVyKSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjk2LDE2ICsxMjk3LDE2
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRB
Y2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgdW5yZWFjaGFibGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
QWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAg
ICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzIzLDE2ICsxMzI0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2Vi
QXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAg
ICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBh
cmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwg
bV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwg
SW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3Nl
ZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
Im5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0MiwyMCArMTM0MywyMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBs
YXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0p
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBv
aW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBv
aW50LCBzY3JlZW5Qb2ludCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRp
bmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5n
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRl
VG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZh
bGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fd2ViUGFnZUlEKTsKICAg
ICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNh
bmNlbCgpOwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0xMzY1LDcg
KzEzNjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVs
b2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM5MCw3ICsxMzkxLDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdl
YkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJDb3Jl
OjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZpZ2F0
aW9uLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRp
b25JRCgpLCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS5zdGFydCgpOwogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCkBAIC0xNDQ2LDcgKzE0
NDcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29U
b0JhY2tGb3J3YXJkSXRlbToiKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBn
b1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0NTksNyAr
MTQ2MCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tG
b3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQ
ZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2Fy
ZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5p
dGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywg
V1RGOjpudWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE0NjcsMTQg
KzE0NjgsMTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFj
a0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3Rv
cmVTY3JvbGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Ny
b2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJl
bW92ZWQpCkBAIC0xNTM2LDcgKzE1MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJv
bGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRC
eUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFTdG9y
ZS0+c2Vzc2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0xNTYx
LDcgKzE1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGlj
YXRpbmcpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5k
aWNhdGluZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBX
ZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU5Nyw3ICsx
NTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcg
cGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
KyAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0
b3JUYXJnZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBh
Z2UpOwogfQogCkBAIC0xNjA4LDcgKzE2MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29sb3IpCiAKICAgICBtX2JhY2tn
cm91bmRDb2xvciA9IGNvbG9yOwogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihj
b2xvciksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAt
MTYyNCw5ICsxNjI1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChm
bG9hdCBjb250ZW50SW5zZXQpCiAgICAgTWFjaFNlbmRSaWdodCBmZW5jZSA9IG1fZHJhd2luZ0Fy
ZWEtPmNyZWF0ZUZlbmNlKCk7CiAKICAgICBhdXRvIGZlbmNlQXR0YWNobWVudCA9IElQQzo6QXR0
YWNobWVudChmZW5jZS5sZWFrU2VuZFJpZ2h0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNl
dEZlbmNlZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNl
ZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fd2ViUGFnZUlEKTsKICNlbHNlCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQo
Y29udGVudEluc2V0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCksIG1fd2ViUGFnZUlEKTsK
ICNlbmRpZgogfQogCkBAIC0xNjM4LDcgKzE2MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VW5kZXJsYXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV91bmRlcmxheUNvbG9yID0g
Y29sb3I7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSwgbV9wYWdl
SUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVy
bGF5Q29sb3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2
aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCkBAIC0xNjQ3LDE0ICsxNjQ4LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5kTGl2ZVJl
c2l6ZSgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVS
ZXNpemUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Vmlld1dpbGxFbmRMaXZlUmVzaXplKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUmVnaW9uJiByZWdpb24pCkBAIC0x
NzEyLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4gbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0
YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKIHsKLSAgICBMT0dfV0lUSF9TVFJF
QU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8
PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVD
aGFuZ2VkKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJX
ZWJQYWdlUHJveHkgIiA8PCBpZGVudGlmaWVyKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
IC0gbWF5SGF2ZUNoYW5nZWQgIiA8PCBtYXlIYXZlQ2hhbmdlZCk7CiAKICAgICBtX3BvdGVudGlh
bGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncy5hZGQobWF5SGF2ZUNoYW5nZWQpOwogICAgIG1f
YWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CkBA
IC0xNzQ4LDcgKzE3NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93
KCkKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBwYWdlQ2xpZW50KCku
dmlld0xheWVySG9zdGluZ01vZGUoKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IGxh
eWVySG9zdGluZ01vZGUpIHsKICAgICAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0
aW5nTW9kZTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRM
YXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXll
ckhvc3RpbmdNb2RlKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIH0KIApAQCAtMTc2MSw3ICsxNzYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBw
YWdlSUQoKSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSAtIHBvdGVudGlhbGx5Q2hh
bmdlZEFjdGl2aXR5U3RhdGVGbGFncyAiIDw8IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlT
dGF0ZUZsYWdzKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8
ICJXZWJQYWdlUHJveHkgIiA8PCBpZGVudGlmaWVyKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5U3Rh
dGVDaGFuZ2UgLSBwb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgIiA8PCBtX3Bv
dGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyk7CiAKICAgICAvLyBJZiB0aGUgdmlz
aWJpbGl0eSBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkg
aWRsZSAmIG9jY2x1ZGVkIGFnbm9zdGljIHN0YXRlLgogICAgIGlmIChtX3BvdGVudGlhbGx5Q2hh
bmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKQEAgLTE3
NzQsNyArMTc3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVD
aGFuZ2UoKQogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0
aXZpdHlTdGF0ZTsKIAogICAgIGlmIChjaGFuZ2VkKQotICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
QWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAi
IGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgcHJl
dmlvdXNBY3Rpdml0eVN0YXRlIDw8ICIgdG8gIiA8PCBtX2FjdGl2aXR5U3RhdGUpOworICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkg
IiA8PCBpZGVudGlmaWVyKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2U6IHN0YXRl
IGNoYW5nZWQgZnJvbSAiIDw8IHByZXZpb3VzQWN0aXZpdHlTdGF0ZSA8PCAiIHRvICIgPDwgbV9h
Y3Rpdml0eVN0YXRlKTsKIAogICAgIGlmICgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OldpbmRv
d0lzQWN0aXZlKSAmJiBpc1ZpZXdXaW5kb3dBY3RpdmUoKSkKICAgICAgICAgdXBkYXRlQ3VycmVu
dE1vZGlmaWVyU3RhdGUoKTsKQEAgLTE3OTcsNyArMTc5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNo
YW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFr
ZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKICAgICBpZiAoY2hh
bmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlT
dGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwg
YWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tz
KSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
cy5jbGVhcigpOwogCkBAIC0xODk5LDcgKzE5MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5
ZXJIb3N0aW5nTW9kZURpZENoYW5nZSgpCiAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJI
b3N0aW5nTW9kZTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJI
b3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQpAQCAtMTk0
MSwyMSArMTk0MiwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wg
Zm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwogICAgIH0KIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndh
cmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlh
bEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZWxl
Y3Rpb24oKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24o
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xl
YXJTZWxlY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
dG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50
KCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
c3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJf
dCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTE5NjYsNyAr
MTk2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgfQogCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCkBAIC0x
OTc0LDcgKzE5NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxp
c3RMZXZlbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFz
ZUxpc3RMZXZlbCgpCkBAIC0xOTgyLDcgKzE5ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
cmVhc2VMaXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFz
ZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCkBAIC0xOTkwLDcgKzE5OTEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhbmdlTGlzdFR5cGUoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbikKQEAgLTE5OTgsNyArMTk5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRC
YXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9u
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdl
KCkKQEAgLTIwMjIsNyArMjAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0ZvbnRB
dHRyaWJ1dGVzKGJvb2wgbmVlZHNGb250QXR0cmlidXRlcykKICAgICBtX25lZWRzRm9udEF0dHJp
YnV0ZXMgPSBuZWVkc0ZvbnRBdHRyaWJ1dGVzOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNG
b250QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSwgbV9wYWdlSUQpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMo
bmVlZHNGb250QXR0cmlidXRlcyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJv
eHk6Om1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QKQEAgLTIwNDUsNyArMjA0Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBk
YXRlKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgpCkBAIC0yMDUzLDcgKzIwNTQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VsZWN0QWxsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbGVjdEFsbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3Ry
aW5nJiBhcmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0yMDY0LDcgKzIwNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0
cmluZyYgYQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJndW1l
bnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0
cmluZyYgYXJndW1lbnQpCkBAIC0yMDc3LDcgKzIwNzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgYQogICAgIGlmIChjb21tYW5kTmFtZSA9PSBpZ25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQog
ICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29t
bWFuZE5hbWUsIGFyZ3VtZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmli
dXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250QXR0
cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMjA4OCw3ICsy
MDg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0
aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXR0cmlidXRlc0Nh
bGxiYWNrKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCkBAIC0yMTA5LDcgKzIxMTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0RWRpdGFibGUoZWRpdGFibGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSksIG1fd2ViUGFnZUlEKTsK
IH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZChi
b29sIG11dGVkKQpAQCAtMjE3NCw5ICsyMTc1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcK
IAogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0aW9u
RGF0YSBzZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rp
b24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCks
IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdE
YXRhLmZsYWdzKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGll
bnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwgbV93
ZWJQYWdlSUQpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94
RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fd2ViUGFnZUlEKTsKICNlbmRpZgogfQogCkBAIC0yMjA2
LDcgKzIyMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsbwogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwg
b3BlcmF0aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9u
KSwgbV93ZWJQYWdlSUQpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjIx
OCwxMyArMjIxOSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdPcGVyYXRp
b24oYm9vbCBoYW5kbGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0RHJhZygpCiB7CiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV93ZWJQYWdlSUQp
OwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAgIGlm
IChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQpAQCAtMjMyMyw3ICsyMzI0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCgpCiAg
ICAgfQogCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZl
bnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlw
ZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogI2lmIE1FUkdFX1dIRUVMX0VWRU5UUwpAQCAtMjQzMiw3ICsyNDMzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50
KQogewogICAgIG1fcHJvY2Vzcy0+c2VuZCgKICAgICAgICAgTWVzc2FnZXM6OkV2ZW50RGlzcGF0
Y2hlcjo6V2hlZWxFdmVudCgKLSAgICAgICAgICAgIG1fcGFnZUlELAorICAgICAgICAgICAgbV93
ZWJQYWdlSUQsCiAgICAgICAgICAgICBldmVudCwKICAgICAgICAgICAgIHNob3VsZFVzZUltcGxp
Y2l0UnViYmVyQmFuZENvbnRyb2woKSA/ICFtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKSA6
IHJ1YmJlckJhbmRzQXRMZWZ0KCksCiAgICAgICAgICAgICBzaG91bGRVc2VJbXBsaWNpdFJ1YmJl
ckJhbmRDb250cm9sKCkgPyAhbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCkgOiBydWJi
ZXJCYW5kc0F0UmlnaHQoKSwKQEAgLTI0ODMsNyArMjQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50
KQogCiAgICAgaWYgKG1fa2V5RXZlbnRRdWV1ZS5zaXplKCkgPT0gMSkgeyAvLyBPdGhlcndpc2Us
IHNlbnQgZnJvbSBEaWRSZWNlaXZlRXZlbnQgbWVzc2FnZSBoYW5kbGVyLgogICAgICAgICBMT0co
S2V5SGFuZGxpbmcsICIgVUkgcHJvY2Vzczogc2VudCBrZXlFdmVudCBmcm9tIGhhbmRsZUtleWJv
YXJkRXZlbnQiKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpL
ZXlFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpLZXlFdmVudChldmVudCksIG1fd2ViUGFnZUlEKTsKICAgICB9CiB9CiAK
QEAgLTI2NTYsNyArMjY1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICBlbHNlCiAgICAgICAg
IHJlc3BvbnNpdmVuZXNzVGltZXIuc3RhcnQoKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6RXZlbnREaXNwYXRjaGVyOjpHZXN0dXJlRXZlbnQobV9wYWdlSUQsIGV2ZW50KSwgMCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Okdlc3R1cmVF
dmVudChtX3dlYlBhZ2VJRCwgZXZlbnQpLCAwKTsKIH0KICNlbmRpZgogCkBAIC0yNjg5LDcgKzI2
OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3VzbHko
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wg
cmVwbHlSZWNlaXZlZCA9IG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRv
dWNoRXZlbnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpS
ZXBseShoYW5kbGVkKSwgbV9wYWdlSUQsIDFfcywgSVBDOjpTZW5kU3luY09wdGlvbjo6Rm9yY2VE
aXNwYXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7Cisg
ICAgYm9vbCByZXBseVJlY2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZTo6VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVu
dFN5bmM6OlJlcGx5KGhhbmRsZWQpLCBtX3dlYlBhZ2VJRCwgMV9zLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpGb3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3lu
Y1JlcGx5KTsKICAgICAvLyBJZiB0aGUgc3luYyByZXF1ZXN0IGhhcyB0aW1lZCBvdXQsIHdlIHNo
b3VsZCBjb25zaWRlciB0aGUgZXZlbnQgaGFuZGxlZC4gVGhlIFdlYiBQcm9jZXNzIGlzIHRvbyBi
dXN5IHRvIGFuc3dlciBhbnkgcXVlc3Rpb25zLCBzbyB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgYWxz
byBsaWtlbHkgdG8gaGF2ZSBpc3N1ZXMuCiAgICAgaWYgKCFyZXBseVJlY2VpdmVkKQogICAgICAg
ICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTI3MDgsNyArMjcwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXNldFBvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UmVzZXRQb3RlbnRpYWxUYXBTZWN1cml0eU9yaWdpbigpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXNldFBvdGVudGlhbFRh
cFNlY3VyaXR5T3JpZ2luKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50
JiBldmVudCkKQEAgLTI3MjAsNyArMjcyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVU
b3VjaEV2ZW50QXN5bmNocm9ub3VzbHkoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlCiAg
ICAgaWYgKHRvdWNoRXZlbnRzVHJhY2tpbmdUeXBlID09IFRyYWNraW5nVHlwZTo6Tm90VHJhY2tp
bmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6RXZl
bnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fcGFnZUlELCBldmVudCksIDApOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fd2ViUGFn
ZUlELCBldmVudCksIDApOwogCiAgICAgaWYgKGV2ZW50LmFsbFRvdWNoUG9pbnRzQXJlUmVsZWFz
ZWQoKSkgewogICAgICAgICBtX3RvdWNoQW5kUG9pbnRlckV2ZW50VHJhY2tpbmcucmVzZXQoKTsK
QEAgLTI3NDUsNyArMjc0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICghbV9pc1BhZ2VTdXNw
ZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdl
SUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnQoZXZlbnQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fdG91
Y2hFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxl
ZCA9IGZhbHNlOwpAQCAtMjc2OCwxMiArMjc2OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICNpZiBFTkFC
TEUoUE9JTlRFUl9FVkVOVFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsUG9pbnRlcihXZWJD
b3JlOjpQb2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZG9jdW1l
bnRQb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNl
bFBvaW50ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRlcihwb2ludGVySWQsIGRv
Y3VtZW50UG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3Vj
aFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRp
Zmllcldhc1JlbW92ZWQocG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQocG9pbnRl
cklkKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTI3ODIsNyArMjc4Myw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzY3JvbGxCeShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eSBncmFudWxhCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNj
cm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9u
SW5WaXNpYmxlQXJlYSgpCkBAIC0yNzkwLDcgKzI3OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxl
QXJlYSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6UG9saWN5RGVj
aXNpb25TZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lvblNlbmRlcj4gewpA
QCAtMjkzMyw3ICsyOTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVj
aXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VS
VChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJv
dmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJv
dmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1h
aW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbCht
X21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjk0OSwxNCArMjk1
MCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZwogCiAgICAgcHJvY2Vzc0RpZFRlcm1pbmF0
ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKIAotICAgIG1fcHJv
Y2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlSUQpOwogICAgIGF1dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5u
YXZpZ2F0aW9uKG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBk
aWRTdXNwZW5kUHJldmlvdXNQYWdlID0gbmF2aWdhdGlvbiA/IHN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGUoKm5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJv
dmlzaW9uYWxQYWdlLT5wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkgOiBmYWxzZTsK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5w
dHIoKSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkg
PyBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJv
eHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3
ZSdsbCBiZSBhYmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBz
byBjbG9zZSBpdC4KICAgICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCi0gICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgcGFnZUlEKCkpOworICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fd2ViUGFn
ZUlEKTsKIAogICAgIHN3YXBUb1dlYlByb2Nlc3MobV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3Mo
KSwgbV9wcm92aXNpb25hbFBhZ2UtPnRha2VEcmF3aW5nQXJlYSgpLCBtX3Byb3Zpc2lvbmFsUGFn
ZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yOTczLDcgKzI5NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
bmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
bmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1By
b2Nlc3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbmV3UHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwogICAgIExPRyhMb2FkaW5nLCAi
Q29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nl
c3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmco
KSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKQEAgLTI5OTgsNyArMjk5OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJy
ZW50SXRlbSgpICYmIChuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0
b3J5OjpZZXMpKSB7CiAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0
aGUgaGlzdG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBr
bm93IGFib3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCiAgICAg
ICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgotICAgICAgICBuZXdQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0
dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1
cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpLT5pdGVtU3RhdGUoKSksIG1fd2ViUGFnZUlEKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTog
V29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdh
dGUsIGV0YwpAQCAtMzA0OCw3ICszMDQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJB
Z2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwODUsNyArMzA4Niw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpA
QCAtMzA5NSw3ICszMDk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSwg
bV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2Rp
bmcoKSBjb25zdApAQCAtMzExMiw3ICszMTEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2Rp
bmdOYW1lKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0
aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0z
MTM0LDcgKzMxMzUsNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUo
V1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25T
dGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVz
dG9yZUZyb21TZXNzaW9uU3RhdGU6Iik7CiAKICAgICBtX3Nlc3Npb25SZXN0b3JhdGlvblJlbmRl
clRyZWVTaXplID0gMDsKICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkID0gZmFsc2U7
CkBAIC0zMTUwLDcgKzMxNTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogICAgICAgICBs
YXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICAgICAgICAgbV9iYWNrRm9yd2Fy
ZExpc3QtPnJlc3RvcmVGcm9tU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRM
aXN0U3RhdGUpKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
c3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7
CisgICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lv
bihtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwgbV93ZWJQYWdlSUQpOwogCiAgICAg
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAg
ICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldENhbkdvQmFjayh0cmFuc2FjdGlvbiwgbV9iYWNrRm9y
d2FyZExpc3QtPmJhY2tJdGVtKCkpOwpAQCAtMzE5OCw3ICszMTk5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFRleHRab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Wm9vbUZhY3RvcihtX3RleHRab29tRmFjdG9yKSwg
bV9wYWdlSUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRl
eHRab29tRmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKQEAgLTMy
MTMsNyArMzIxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3Vi
bGUgem9vbUZhY3RvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZVpv
b21GYWN0b3IobV9wYWdlWm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9y
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikK
QEAgLTMyMjksNyArMzIzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpv
b21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRaCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9v
bUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpv
b21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGRvdWJsZSBX
ZWJQYWdlUHJveHk6OnBhZ2Vab29tRmFjdG9yKCkgY29uc3QKQEAgLTMyNTksNyArMzI2MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2lu
dCYgb3JpZ2luKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2Uoc2Nh
bGUsIG9yaWdpbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoZG91YmxlIHNjYWxlLCBj
b25zdCBJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpCkBAIC0zMjcxLDcgKzMyNzIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoZG91Ymxl
IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgY2VudAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRp
bmF0ZXMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0
ZXMpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVZpZXcoZG91
YmxlIHNjYWxlKQpAQCAtMzI4Myw3ICszMjg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxl
Vmlldyhkb3VibGUgc2NhbGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxl
VmlldyhzY2FsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjYWxlVmlldyhzY2FsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQpA
QCAtMzMwMiw3ICszMzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENo
YW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFu
Z2UoZGlzcGxheUlEKSwgbV93ZWJQYWdlSUQpOwogfQogCiBmbG9hdCBXZWJQYWdlUHJveHk6OmRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QKQEAgLTMzNDEsNyArMzM0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0
eVNldHRpbmdzRGlkQ2hhbmdlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCkBAIC0zMzU4LDcgKzMzNTksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExh
eW91dChmaXhlZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZp
eGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMzM3MSw3ICszMzcyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6
ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEZpeGVkTGF5b3V0U2l6ZShzaXplKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hv
cml6b250YWxTY3JvbGxlcikKQEAgLTMzODQsNyArMzM4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpv
bnRhbFNjCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzSG9y
aXpvbnRhbFNjcm9sbGVyKGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NI
b3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Ny
b2xsZXIoYm9vbCBhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIpCkBAIC0zMzk3LDcgKzMzOTgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJv
b2wgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNj
cm9sbGVyKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3Jv
bGxlciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxh
eW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0
b25lcykKQEAgLTM0MTAsNyArMzQxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JM
YXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWls
ZXN0b25lcyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhi
b29sIHN1cHByZXNzQW5pbWF0aW9ucykKQEAgLTM0MjMsNyArMzQyNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1h
dGlvbnMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xs
YmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlv
bnMoc3VwcHJlc3NBbmltYXRpb25zKSwgbV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQ
cm94eTo6cnViYmVyQmFuZHNBdExlZnQoKSBjb25zdApAQCAtMzQ3NSw3ICszNDc2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhib29sIGVuYWJs
ZVZlcnRpY2FsUnViYmVyQmFuZGkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVu
YWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6dmVydGljYWxSdWJiZXJC
YW5kaW5nSXNFbmFibGVkKCkgY29uc3QKQEAgLTM0OTIsNyArMzQ5Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhib29sIGVuYWJsZUhvcml6
b250YWxSdWJiZXJCCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZUhv
cml6b250YWxSdWJiZXJCYW5kaW5nKGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxl
SG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6aG9yaXpvbnRhbFJ1YmJl
ckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzUwOSw3ICszNTEwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShib29sIGJhY2tncm91bmRF
eHRlbmRzQmV5b25kUGEKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dy
b3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBh
Z2UoKSBjb25zdApAQCAtMzUyNiw3ICszNTI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBh
Z2luYXRpb25Nb2RlKFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZSkKIAogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2Rl
KG1vZGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0
aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQpAQCAtMzUzOCw3
ICszNTM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5z
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdl
TGVuZ3RoKQpAQCAtMzU1MCw3ICszNTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VM
ZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdlcyhkb3VibGUg
Z2FwKQpAQCAtMzU2Miw3ICszNTYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdl
ZW5QYWdlcyhkb3VibGUgZ2FwKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRH
YXBCZXR3ZWVuUGFnZXMoZ2FwKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBs
aW5lR3JpZEVuYWJsZWQpCkBAIC0zNTc0LDcgKzM1NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlkRW5hYmxlZCkKICAgICAK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJs
ZWQobGluZUdyaWRFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJs
ZWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlU2NhbGVGYWN0
b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9yKQpAQCAtMzU5OSwzMiArMzYwMCwzMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IEZpbmRPcHRpb25zIG9wdGlvbnMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5n
LCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2go
bWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0RmluZE1h
dGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRl
eCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluZGljYXRlRmlu
ZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbmRpY2F0ZUZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZUZpbmRVSSgpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlRmluZFVJKCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQpAQCAtMzYzMiw3ICszNjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0
Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9u
cywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNo
Q291bnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0
Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTM2NDMsNyArMzY0NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJ
bmRpY2VzLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVu
dFRleHQsIHNlbGVjdGlvbk9ubHksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNo
SW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNz
SWZOZWNlc3NhcnkoKQpAQCAtMzY2OCwxNCArMzY2OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0
dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgp
LT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZv
cmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC0zNjg2LDcgKzM2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdAog
ICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2OTgsNyArMzY5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRk
KGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1l
KGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAg
LTM3MTAsNyArMzcxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhCiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zNzIxLDcgKzM3MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBBdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNB
c0F0dHJpYnV0ZWRTdHJpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTM3MzQsNyAr
MzczNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRl
Y29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAt
Mzc0Niw3ICszNzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJP
dXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIAogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
bG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTM3NTgsNyArMzc1OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0
YSosIENhbGxiYWNrQmFzCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhU
TUxEYXRhKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMzc3MCw3
ICszNzcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0
cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICB9CiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc4MSw3ICszNzgyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGIKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3OTIsNyArMzc5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVu
Y3Rpb248dm9pCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwg
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTM4MDMsNyArMzgwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRS
ZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNv
CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5z
dHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgp
LCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKQEAgLTM4MTQsNyArMzgxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9p
ZCAoQVBJCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdl
YkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxs
YmFjaz4mJiBjYWxsYmFjaykKQEAgLTM4NDgsNyArMzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENh
bGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFp
bnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWlu
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiBz
dGF0aWMgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRpbmdTZW5kT3B0aW9ucyhib29s
IGlzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKQpAQCAtMzg3NCw3ICszODc1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICAvLyBldmVuIGlmIG5v
dGhpbmcgY2hhbmdlZCBpbiBVSSBwcm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3Zl
ZC4KIAogICAgIC8vIFByZWZlcmVuY2VzIG5lZWQgdG8gYmUgdXBkYXRlZCBkdXJpbmcgc3luY2hy
b25vdXMgcHJpbnRpbmcgdG8gbWFrZSAicHJpbnQgYmFja2dyb3VuZHMiIHByZWZlcmVuY2Ugd29y
ayB3aGVuIHRvZ2dsZWQgZnJvbSBhIHByaW50IGRpYWxvZyBjaGVja2JveC4KLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVu
Y2VzU3RvcmUoKSksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIG1fd2ViUGFnZUlE
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKQEAgLTQwMDQsOCArNDAwNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYK
ICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBu
YXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwog
Ci0gICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBw
aWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2
NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUludDY0
KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2
aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRv
VUludDY0KCkpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGlu
IHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJ
RCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAg
ICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBA
IC00MDU4LDcgKzQwNTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0
byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIs
IGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50
NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDg3LDcgKzQwODgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91
YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBm
cmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDEwMCw3ICs0MTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY28KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50
UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAK
QEAgLTQxNDcsOCArNDE0OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0co
TG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nl
c3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVS
TCAlcyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQo
KSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDIy
Niw5ICs0MjI3LDkgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRy
YW5zZmVyOjpGbGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW4KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1Bs
dWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29u
dGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExv
YWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4g
bmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7
CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRp
ZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVy
LnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2sv
Rm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIs
IG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZy
YW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0Niw3ICs0
MjQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWcKICAgICAgICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGN1cnJlbnREb21haW4geyBjdXJyZW50UmVxdWVzdC51cmwoKSB9OwogICAgICAgICAg
ICAgVVJMIHJlcXVlc3RlclVSTCB7IFVSTCgpLCByZXF1ZXN0ZXJPcmlnaW4udG9TdHJpbmcoKSB9
OwogICAgICAgICAgICAgaWYgKCFjdXJyZW50RG9tYWluLm1hdGNoZXMocmVxdWVzdGVyVVJMKSkK
LSAgICAgICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwg
UmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0ZXJVUkwgfSwgY3VycmVudERvbWFpbiwgbmF2aWdh
dGlvbkRhdGFUcmFuc2ZlciwgbV9wYWdlSUQpOworICAgICAgICAgICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5kaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihtX3dl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3Rl
clVSTCB9LCBjdXJyZW50RG9tYWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTQzNDAsNyArNDM0MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNDM2NCw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjQKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExP
RyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdl
UHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRo
aXMsIG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NDA5LDcgKzQ0MTAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4g
PSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFp
biA9ICVzLCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0
ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ0NTEsNyArNDQ1Miw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYm
IHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRv
VUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDYzNyw3ICs0NjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAg
ICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAogICAgIGF1dG8gc2VuZGVyID0gUG9s
aWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vz
cy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVy
SUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogCiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2Vj
dXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKQEAgLTQ5MDgsNyAr
NDkwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1
dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3Rl
bmVySURdIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVy
SUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5l
cklELCBhcmdzLi4uKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICB9KTsKIAogICAgICAgICByZWNl
aXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHNlbmRlcikpOwpAQCAtNDk1Nyw3ICs0OTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJy
b3dzaW5nV2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJv
Y2VzcyldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklE
LCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQs
IGFyZ3MuLi4pLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdU
Rjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTQ5OTQsNyArNDk5NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJZGVudGlmaWVyIHNvdXJjCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZy
YW1lKTsKIAogICAgIG1fZm9ybUNsaWVudC0+d2lsbFN1Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwg
KnNvdXJjZUZyYW1lLCB0ZXh0RmllbGRWYWx1ZXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdKCkgewotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJh
bWVJRCwgbGlzdGVuZXJJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVy
SUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTUwMTAsNyArNTAxMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNv
bnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGFTaGFyZWQ6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCkBAIC01MDMwLDcgKzUwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25z
dAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwNTcsNyArNTA1OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2Vy
dmVyUmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmlu
ZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3Q6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC01MTAwLDcgKzUxMDEsNiBAQCBzdGF0aWMgdm9pZCB0cnlTT0F1
dGhvcml6YXRpb24oUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9u
LCBXZQogI2lmIEhBVkUoQVBQX1NTTykKICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zb0F1
dGhvcml6YXRpb25Db29yZGluYXRvcigpLnRyeUF1dGhvcml6ZShXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb24pLCBwYWdlLCBXVEZNb3ZlKG5ld1BhZ2VDYWxsYmFjayksIFdURk1vdmUodWlDbGllbnRD
YWxsYmFjaykpOwogI2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKHBhZ2UsIHBhZ2UucGFnZUlEKCkp
OwogICAgIHVpQ2xpZW50Q2FsbGJhY2soV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92
ZShuZXdQYWdlQ2FsbGJhY2spKTsKICNlbmRpZgogfQpAQCAtNTEyMCw3ICs1MTIwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLAogCiAgICAgICAgIG5ld1BhZ2UtPnNldE9wZW5lZEJ5RE9NKCk7
CiAKLSAgICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFy
YW1ldGVycyhtX3Byb2Nlc3MsICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CisgICAgICAgIHJl
cGx5KG5ld1BhZ2UtPndlYlBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMobV9w
cm9jZXNzLCAqbmV3UGFnZS0+ZHJhd2luZ0FyZWEoKSkpOwogCiAgICAgICAgIG5ld1BhZ2UtPm1f
c2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhv
c3RzQXJlRXF1YWwoVVJMKHsgfSwgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CiAKQEAg
LTU0NTEsNyArNTQ1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0CiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVE
YXRhLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wgYWNjZXNzKSB7Ci0gICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0
KGFjY2VzcywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNzLCBjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dT
aGFyZVNoZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQ4
Myw3ICs1NDgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZv
bHVtZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1l
KHZvbHVtZSksIG1fcGFnZUlEKTsgICAgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRl
RmxhZ3Mgc3RhdGUpCkBAIC01NDk5LDcgKzU0OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAg
ICAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRp
YVN0cmVhbXNFeGNlcHRJbigqdGhpcyk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0ZSksIG1fd2ViUGFnZUlE
KTsKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxl
LCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NTIxLDcgKzU1
MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAgICAgIHJl
dHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSwgbV93ZWJQ
YWdlSUQpOwogI2VuZGlmCiB9CiAKQEAgLTU1MzAsNyArNTUzMCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKQEAg
LTU1NDIsNyArNTU0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5
YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBs
YXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTU1NCw3ICs1NTU0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlh
UGxheWJhY2soKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CkBAIC01NTYzLDcgKzU1NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVu
dChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBl
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRp
YUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAtNTU3MSw3ICs1
NTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJs
ZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWb2x1bWVPZk1l
ZGlhRWxlbWVudCh2b2x1bWUsIGVsZW1lbnRJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgog
CkBAIC01NTg1LDcgKzU1ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRp
YVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFy
dE1lZGlhV2hlbkluV2luZG93KG1heVN0YXJ0TWVkaWEpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93
bmxvYWQpCkBAIC01NjMyLDcgKzU2MzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3Nl
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDaG9vc2VDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQpAQCAt
NTY0MSw3ICs1NjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNrZXIoKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29s
b3JQaWNrZXIoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTU2NzUsNyArNTY3NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24gPSBudWxscHRyOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2xvc2VTdWdnZXN0aW9ucygp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
bG9zZVN1Z2dlc3Rpb25zKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQpAQCAtNTY4Myw3
ICs1NjgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJp
bmcmIHNlbGVjdGVkT3B0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRT
ZWxlY3REYXRhTGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbiksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNl
bGVjdGVkT3B0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTU3MzYsNyArNTcz
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxh
eWJhY2soYm9vbCBhbGxvd3MpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjayA9IGFsbG93czsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93
cyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAjZW5kaWYKIApAQCAtNTc2NCw3ICs1NzY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwg
Y28KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmJiBpdGVtU3RhdGUpCiB7Ci0gICAgYXV0byBpdGVtID0gV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoaXRlbVN0YXRlKSwgcGFnZUlEKCkpOworICAgIGF1
dG8gaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGl0ZW1TdGF0
ZSksIGlkZW50aWZpZXIoKSk7CiAgICAgaXRlbS0+c2V0UmVzb3VyY2VEaXJlY3RvcnlVUkwoY3Vy
cmVudFJlc291cmNlRGlyZWN0b3J5VVJMKCkpOwogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJ
dGVtKFdURk1vdmUoaXRlbSkpOwogfQpAQCAtNTkxOCwxNyArNTkxOCwxNyBAQCBJUEM6OkNvbm5l
Y3Rpb24qIFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1
aW50NjRfdCBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdl
SUQudG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVk
SW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5k
ZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1
cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGluZGV4KSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2
ZVBvcHVwTWVudShpbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6
OmlzUHJvY2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkgY29uc3QKQEAgLTU5NjMsMTMgKzU5NjMsMTMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJp
bGl0eSwgbWFrZSBzdXJlIHdlIGxhdW5jaCB0aGUgaW5pdGlhbCBwcm9jZXNzIGlmIHRoZSBjbGll
bnQgYXNrcyB0byBwb3N0IGEgbWVzc2FnZSB0byBpdHMgaW5qZWN0ZWQgYnVuZGxlIGJlZm9yZSBk
b2luZyBhIGxvYWQuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCi0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1l
c3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5h
bWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VC
b2R5KS5nZXQoKSkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGYWlsZWRUb1Nob3dQ
b3B1cE1lbnUoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTYwMzYsNyArNjAzNiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0
RGF0YSYmIGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hv
dygpOwogCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4
dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRk
ZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlk
ZGVuKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MTE0
LDEyICs2MTE0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlv
bigpID09IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9
PSBDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdM
ZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2Vs
ZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRl
eHRNZW51Rm9yS2V5RXZlbnQoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShD
T05URVhUX01FTlVTKQogCkBAIC02MTM1LDEwICs2MTM1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25z
dCBWZWN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0p
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94
Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZv
ckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyksIG1fd2ViUGFnZUlE
KTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywg
ZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBD
OjpEYXRhUmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5n
QW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0
YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3dlYlBhZ2VJRCk7CiAKICAg
ICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTYzLDEwICs2MTYzLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzKSwgbV93ZWJQYWdlSUQpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZp
bGVVUkxzKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpLCBtX3dlYlBhZ2VJRCk7CiAK
ICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTc3LDcgKzYxNzcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgp
LCBtX3dlYlBhZ2VJRCk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52
YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAt
NjE4NSw3ICs2MTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5l
bCgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VU
b05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYg
d29yZCkKQEAgLTYxOTMsNyArNjE5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVs
bGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29yZCh3b3JkKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8
V2ViRWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVk
bykKQEAgLTYyMTIsNyArNjIxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29t
bWFuZChXZWJFZGl0Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3Zl
RWRpdENvbW1hbmQoY29tbWFuZC5jb21tYW5kSUQoKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9v
bCBXZWJQYWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjMwMSwxMiArNjMwMSwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBUZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdU
ZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3VsdCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5n
VGV4dChyZXF1ZXN0SUQsIHJlc3VsdCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQo
cmVxdWVzdElEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IC8vIE90aGVyCiAKQEAgLTY0MzUsNyArNjQzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBi
b29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7
CiAgICAgICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cykgewogICAgICAgICAgICAgTE9H
KEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZl
RXZlbnQiKTsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KG1fa2V5RXZlbnRR
dWV1ZS5maXJzdCgpKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhl
IGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAtNjc5
OSw3ICs2Nzk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hh
bmdlZChjb25zdCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+JgogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3Ms
ICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC02ODExLDcgKzY4MTEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
LCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY5MDYsNyArNjkwNiw3IEBAIHN0YXRpYyBi
b29sIHNob3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiByZWFzb24pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFByb2Nlc3NEaWRU
ZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGU6IHdl
YlBJRCA9ICVpLCByZWFzb24gPSAlZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
cmVhc29uKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFBy
b2Nlc3NEaWRUZXJtaW5hdGU6IHJlYXNvbiA9ICVkIiwgcmVhc29uKTsKIAogICAgIGJvb2wgaGFu
ZGxlZEJ5Q2xpZW50ID0gZmFsc2U7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQpAQCAtNzMyOSw3
ICs3MzI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4m
IGdhbWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWRE
YXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdhbWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0YXMs
IHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpA
QCAtNzYzNCw3ICs3NjM0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9u
dGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNp
dGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVz
KHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZv
ckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03NjQ0LDcgKzc2NDQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRSZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNr
Rm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVu
TW9kYWwpCkBAIC03NjU3LDcgKzc2NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVu
TW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCkBAIC03
NjcxLDcgKzc2NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAgICByZXR1cm47
CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludElu
Zm8pLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50
T3BlcmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdp
blByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbyksIG1fd2ViUGFnZUlELCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc2ODAsNyArNzY4MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
aXNJblByaW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9p
c1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNh
bGxiYWNrKQpAQCAtNzY5Myw3ICs3NjkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1
ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFn
ZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzcwNiw3ICs3NzA2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFj
ay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2Uo
ZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVj
dFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWlu
Z0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNU
b1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFj
aykKQEAgLTc3MTgsNyArNzcxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BE
RihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBm
aXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyht
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludElu
Zm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlELCBwcmludGluZ1NlbmRP
cHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRG
T1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlz
aGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NzMxLDcgKzc3MzEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0
IFByaW50SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5Q
cmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Q
cmludE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Q
cmludE9wZXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc3NzYsNyArNzc3Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVNpemVGb3JB
dXRvTGF5b3V0KHNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoc2l6ZSksIG1fd2ViUGFnZUlE
KTsKICAgICBtX2RyYXdpbmdBcmVhLT5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXREaWRDaGFuZ2Uo
KTsKIAogI2lmIFVTRShBUFBLSVQpCkBAIC03Nzk1LDcgKzc3OTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChib29sIHNob3VsZEV4
cGFuZCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXV0b1NpemluZ1Nob3Vs
ZEV4cGFuZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9W
aWV3SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXplKQpAQCAtNzgwOCw3ICs3ODA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXoKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cyh2aWV3cG9ydFNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KHZpZXdwb3J0U2l6ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFVTRShBVVRPTUFUSUNfVEVY
VF9SRVBMQUNFTUVOVCkKQEAgLTc4NzksNyArNzg3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2UsIGNvbnN0IFN0cmlu
ZyYKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25z
dCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBpZiAoIWlzQ2xvc2VkKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQocmVzdWx0KSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpAQCAtNzkyMCw3ICs3
OTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
dGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwg
c2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQp
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENv
bXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQs
IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNl
bGVjdGlvbkxlbmd0aCkKQEAgLTc5MjgsNyArNzkyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRf
dCBzCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNv
bXBvc2l0aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdl
SUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlv
bigpCkBAIC03OTM2LDcgKzc5MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9z
aXRpb24oKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9u
KCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2Fu
Y2VsQ29tcG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdU
SykKIApAQCAtNzk1Myw3ICs3OTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBp
bm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICBtX3Njcm9s
bFBpbm5pbmdCZWhhdmlvciA9IHBpbm5pbmc7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQ
aW5uaW5nQmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxi
YXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJh
clN0eWxlKQpAQCAtNzk3MSw3ICs3OTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJs
YXlTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3QKICAg
ICAgICAgc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKIAogICAgIGlmIChoYXNSdW5uaW5n
UHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSksIG1fd2ViUGFnZUlEKTsK
IH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtODAxNiw3ICs4MDE2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBr
ZXlTaXplSW5kZXgsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1
c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVu
dFByb3ZpZGVyKG1pbWVUeXBlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVU
eXBlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0
dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtODAy
NCw3ICs4MDI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdl
YkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250
QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCkBA
IC04MDMyLDcgKzgwMzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3Jl
OjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwNDAsNyArODA0MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hh
bmdlcykKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
KQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwg
SW5zZXJ0VGV4dE9wdGlvbnMmJiBvcHRpb25zKQpAQCAtODA0OCw3ICs4MDQ4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRU
ZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSksIG1fcGFn
ZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFz
eW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC04MDU3LDcgKzgwNTcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjayksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RG
OjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCkBAIC04MDY4LDcgKzgwNjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2Fs
bGJhYwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRNYXJrZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VB
c3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTgwNzksNyArODA3OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5n
UmFuZ2UsIENhbGxiCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMo
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJh
Y3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdU
Rjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC04MDkwLDcgKzgwOTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
VwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9p
bnRBc3luYyhwb2ludCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1Jh
bmdlJiByYW5nZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKQEAgLTgxMDEsNyArODEwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdUCiAgICAg
fQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdl
KQpAQCAtODExMiw3ICs4MTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9u
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCByZXBs
YWNlbWVudFJhbmdlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJh
bmdlLCByZXBsYWNlbWVudFJhbmdlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAtODEyMCw3ICs4MTIwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFz
eW5jKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBl
cmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTgxNDUsNyAr
ODE0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJ
bnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9uCiAgICAgfQogCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYWtlU25hcHNob3QocmVjdCwgYml0bWFwU2l6
ZSwgb3B0aW9ucywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25z
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2
aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpCkBAIC04MzAzLDcgKzgzMDMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhSZWY8Tm93UGxheWlu
Z0luZm9DYWxsYmFjawogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNz
aW9uSW5mbyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bm93UGxheWluZ0lu
Zm9DYWxsYmFjayhib29sIGhhc0FjdGl2ZVNlc3Npb24sIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRv
dWJsZSBlbGFwc2VkVGltZSwgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQpAQCAtODM0NiwyMiArODM0NiwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8
QQogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtSW1tZWRpYXRl
QWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oRmxvYXRQb2ludCBwb2ludCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
QXRMb2NhdGlvbihwb2ludCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihwb2lu
dCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlv
bkRpZFVwZGF0ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rp
b25EaWRDYW5jZWwoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENvbXBs
ZXRlKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdlYkhp
dFRlc3RSZXN1bHREYXRhJiByZXN1bHQsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtODM3Niw3ICs4Mzc2LDcgQEAgTlNPYmplY3QgKldl
YlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RS
ZXN1bHQoUmVmUHQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
KFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
KGFjY2VwdGVkQ2FuZGlkYXRlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRIYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZSgpCkBAIC04Mzk0LDE3ICs4Mzk0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1B
cHBlYXJhbmNlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSwgbV93ZWJQ
YWdlSUQpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEhlYWRlckJhbm5lckhlaWdo
dEZvclRlc3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEhlYWRlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFu
bmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb290ZXJCYW5uZXJI
ZWlnaHRGb3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0
KSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTg0MzAsNyArODQzMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRE
aXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZUF1dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtODQ3
OSw3ICs4NDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KHVpbnQ2
NF90IGNvbnRleHRJZCwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+
dGFyZ2V0Q29udGV4dCgpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+dGFy
Z2V0Q29udGV4dCgpKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBi
b29sIGF2YWlsYWJsZSkKQEAgLTg0ODcsNyArODQ4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0SWQs
IGJvCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RGlkQ2hhbmdlKGNvbnRleHRJZCwgYXZhaWxhYmxlKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlEaWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgc2hvdWxkUGxheSkKQEAgLTg0OTUsNyArODQ5NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgc2hvdWxkCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSksIG1fd2ViUGFnZUlEKTsKIH0KICNl
bmRpZgogCkBAIC04NTIxLDcgKzg1MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJXaGVl
bEV2ZW50VGVzdFRyaWdnZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbEFmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrKQpAQCAtODU0NCw3ICs4NTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3Vs
ZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3UKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudChzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudChzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKQEAgLTg1NjQsNyAr
ODU2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgIGJvb2wgZGVjaXNpb24g
PSAoYm9vbCljYWxsYmFja0Z1bmN0aW9uOwogICAgICAgICBhdXRvIG5ld0NhbGxiYWNrSWRlbnRp
ZmllciA9IGRlY2lzaW9uID8gT3B0aW9uYWxDYWxsYmFja0lEKG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwogCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSWRlbnRpZmllciksIG1fcGFnZUlE
KTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVu
dGlmaWVyKSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogfQogCkBAIC04NTgzLDcgKzg1ODMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNh
YmxlZCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWQoZGlzYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJQ
YWdlUHJveHk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQpAQCAtODU5Niw3ICs4NTk2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
V2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dEQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJf
dD4odXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVWYWxpZGF0aW9uTWVz
c2FnZSgpCkBAIC04NjQzLDE0ICs4NjQzLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBbGxv
d1BvaW50ZXJMb2NrKCkKICAgICBDR0Rpc3BsYXlIaWRlQ3Vyc29yKENHTWFpbkRpc3BsYXlJRCgp
KTsKICAgICBDR0Fzc29jaWF0ZU1vdXNlQW5kTW91c2VDdXJzb3JQb3NpdGlvbihmYWxzZSk7CiAj
ZW5kaWYKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZERlbnlQb2ludGVyTG9jaygpCiB7CiAgICAgQVNTRVJUKG1f
aXNQb2ludGVyTG9ja1BlbmRpbmcgJiYgIW1faXNQb2ludGVyTG9ja2VkKTsKICAgICBtX2lzUG9p
bnRlckxvY2tQZW5kaW5nID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5s
b2NrKCkKQEAgLTg2NjEsMTIgKzg2NjEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQ
b2ludGVyVW5sb2NrKCkKICAgICAgICAgQ0dEaXNwbGF5U2hvd0N1cnNvcihDR01haW5EaXNwbGF5
SUQoKSk7CiAjZW5kaWYKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRo
aXMpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQ
b2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fd2ViUGFnZUlEKTsKICAgICB9CiAK
ICAgICBpZiAobV9pc1BvaW50ZXJMb2NrUGVuZGluZykgewogICAgICAgICBtX3VpQ2xpZW50LT5k
aWRMb3NlUG9pbnRlckxvY2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIAogICAgIG1faXNQb2ludGVyTG9ja2VkID0g
ZmFsc2U7CkBAIC04Njg3LDcgKzg2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJMU2No
ZW1lSGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbAogICAg
IGF1dG8gaWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIu
YWRkKGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoaWRl
bnRpZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlk
ZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxl
cihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIFdlYlVSTFNjaGVtZUhhbmRsZXIqIFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxl
ckZvclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKQEAgLTg3MzUsNyArODczNSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oldh
c0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2FzTG9hZGVkV2l0aERh
dGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5k
aWYKIApAQCAtODc1NCw3ICs4NzU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVmZmVjdGl2ZUFw
cGVhcmFuY2VEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFZmZl
Y3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNlKCksIHVzZUVsZXZhdGVk
VXNlckludGVyZmFjZUxldmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBl
YXJhbmNlKCksIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKCkpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTg3OTMsNyArODc5Myw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNo
bWVudCwgRnVuY3Rpb248CiAKICAgICBhdXRvIGF0dGFjaG1lbnRJZGVudGlmaWVyID0gYXR0YWNo
bWVudC0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oklu
c2VydEF0dGFjaG1lbnQoYXR0YWNobWVudElkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXpl
Rm9yRGlzcGxheSgpLCBhdHRhY2htZW50LT5maWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50
VHlwZSgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0
YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0
dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAg
bV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoYXR0YWNobWVudElkZW50
aWZpZXIsIFdURk1vdmUoYXR0YWNobWVudCkpOwogfQogCkBAIC04ODA5LDcgKzg4MDksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpB
dHRhY2htZW50JiBhdHRhY2htZW50LAogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAqZGF0YSB9
OwogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JE
aXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgp
LCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5
KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZN
b3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpA
QCAtODk2OSw3ICs4OTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFu
aWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjoKIAogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
bG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
ICNlbmRpZgogCkBAIC05MDMzLDcgKzkwMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwb3J0
UGFnZUxvYWRSZXN1bHQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXREZWZlcnNMb2FkaW5nRm9yVGVzdGluZyhib29sIGRlZmVyc0xvYWRpbmcpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5n
KGRlZmVyc0xvYWRpbmcpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJc1ZpZXdWaXNpYmxlKGJvb2wmIHJlc3VsdCkK
QEAgLTkwNDUsNyArOTA0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVDdXJyZW50TW9k
aWZpZXJTdGF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19X
SU5ET1dTRVJWRVJfQkxPQ0tJTkcpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBt
b2RpZmllcnMgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRTdGF0ZU9mTW9kaWZpZXJL
ZXlzKCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJy
ZW50TW9kaWZpZXJTdGF0ZShtb2RpZmllcnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShtb2RpZmll
cnMpLCBtX3dlYlBhZ2VJRCk7CiAjZW5kaWYKIH0KIApAQCAtOTA4NywxOSArOTA4NywxOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24oV2ViUHJvY2Vzc1Byb3h5JgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2ltdWxhdGVEZXZp
Y2VPcmllbnRhdGlvbkNoYW5nZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2Ft
bWEpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaW11bGF0ZURl
dmljZU9yaWVudGF0aW9uQ2hhbmdlKGFscGhhLCBiZXRhLCBnYW1tYSksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50
YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUlu
QWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHR5cGVzKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAg
LTkyNjksNyArOTI2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0lu
UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRD
b250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25z
dCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTI3OSw3ICs5Mjc5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250
ZXh0LCBDb21wbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4
dElucHV0Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIExvZ2dlciYgV2ViUGFnZVBy
b3h5Ojpsb2dnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
ODdhZWE4NWNhYi4uYzlmODExZmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVz
c2FnZXMuaCIKQEAgLTM5Miw3ICszOTMsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0OwogCi0gICAgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICB1
c2luZyBJZGVudGlmaWVyID0gV2ViUGFnZVByb3h5SWRlbnRpZmllcjsKKworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZUlE
OyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMjExMyw3
ICsyMTE3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3Qo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0
X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlEOworICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFdlYWtQdHI8UGFn
ZUNsaWVudD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBt
X2NvbmZpZ3VyYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZmNhMGJiMzJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBlPjsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDQ1OWE5ZDNh
NGE4Li42YjgyMjZkNjNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtMzA5LDYgKzMwOSw5IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9v
bChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICBub3Rp
ZnlUaGlzV2ViUHJvY2Vzc1Bvb2xXYXNDcmVhdGVkKCk7CiAKICAgICB1cGRhdGVNYXhTdXNwZW5k
ZWRQYWdlQ291bnQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuIFRoaXMgaXMg
bWVyZWx5IHVzZWQgdG8gbWFrZSB0aGUgV2ViUGFnZVByb3h5ICYgdGhlIFdlYlBhZ2UgaWRlbnRp
ZmllcnMgZGlmZmVyZW50LCB0byBoZWxwIGNhdGNoIGJ1Z3MuCisgICAgUGFnZUlkZW50aWZpZXI6
OmdlbmVyYXRlKCk7IFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOyBQYWdlSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKTsgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKIFdlYlByb2Nlc3NQ
b29sOjp+V2ViUHJvY2Vzc1Bvb2woKQpAQCAtMTMwNyw5ICsxMzEwLDkgQEAgYm9vbCBXZWJQcm9j
ZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0
YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5V
c2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNp
dGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3Rv
cmUmIGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01h
cC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPigpKS5p
dGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIGF1dG8gc2Vzc2lvbklE
ID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwpAQCAtMTMyNyw3ICsxMzMwLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2Vic2kKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRV
c2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklE
KCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Np
b25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBhZjE2
Y2VmOGQyOC4uMDg2ZTM4NmE2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtMjA5LDggKzIwOSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKTsKIAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0
b3JlJik7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVuZFVzaW5n
V2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3Jl
Jik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAg
LTc4Myw3ICs3ODMsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBh
dGhzOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJ
RHNNYXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2EzNjI0
OGZlYTYuLjY0YjMxZjc1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTM1MSwxMSArMzUxLDIyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
aHV0RG93bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9
CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCkuZ2V0
KHBhZ2VJRCk7CiB9CiAKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKK3sKKyAgICAvLyBGSVhNRTogRG8gYmV0
dGVyLgorICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKS52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAocGFnZS0+d2ViUGFnZUlEKCkgPT0gd2ViUGFnZUlEKQorICAgICAgICAgICAg
cmV0dXJuIHBhZ2U7CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpu
b3RpZnlQYWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKCkKIHsKQEAgLTM5Mywx
NiArNDA0LDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJCiAKIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBCZWdpbnNVc2lu
Z0RhdGFTdG9yZSBiZWdpbnNVc2luZ0RhdGFTdG9yZSkKIHsKLSAgICBBU1NFUlQoIW1fcGFnZU1h
cC5jb250YWlucyh3ZWJQYWdlLnBhZ2VJRCgpKSk7Ci0gICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFw
KCkuY29udGFpbnMod2ViUGFnZS5wYWdlSUQoKSkpOworICAgIEFTU0VSVCghbV9wYWdlTWFwLmNv
bnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFw
KCkuY29udGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9pc0luUHJvY2Vzc0NhY2hlKTsKICAgICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBt
X3dlYnNpdGVEYXRhU3RvcmUgPT0gJndlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAg
IGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKQot
ICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2Vi
UGFnZS5wYWdlSUQoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3By
b2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlm
aWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAotICAgIG1fcGFnZU1hcC5zZXQo
d2ViUGFnZS5wYWdlSUQoKSwgJndlYlBhZ2UpOwotICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQod2Vi
UGFnZS5wYWdlSUQoKSwgJndlYlBhZ2UpOworICAgIG1fcGFnZU1hcC5zZXQod2ViUGFnZS5pZGVu
dGlmaWVyKCksICZ3ZWJQYWdlKTsKKyAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHdlYlBhZ2UuaWRl
bnRpZmllcigpLCAmd2ViUGFnZSk7CiAKICAgICB1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0
b3JlKCk7CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKQEAgLTQy
MSwxNSArNDMyLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXJrSXNOb0xvbmdlckluUHJl
d2FybWVkUG9vbCgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuZHNVc2luZ0RhdGFTdG9yZSkK
IHsKLSAgICBhdXRvKiByZW1vdmVkUGFnZSA9IG1fcGFnZU1hcC50YWtlKHdlYlBhZ2UucGFnZUlE
KCkpOworICAgIGF1dG8qIHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2Uod2ViUGFnZS5pZGVu
dGlmaWVyKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92ZWRQYWdlID09
ICZ3ZWJQYWdlKTsKLSAgICByZW1vdmVkUGFnZSA9IGdsb2JhbFBhZ2VNYXAoKS50YWtlKHdlYlBh
Z2UucGFnZUlEKCkpOworICAgIHJlbW92ZWRQYWdlID0gZ2xvYmFsUGFnZU1hcCgpLnRha2Uod2Vi
UGFnZS5pZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92
ZWRQYWdlID09ICZ3ZWJQYWdlKTsKIAogICAgIGlmIChlbmRzVXNpbmdEYXRhU3RvcmUgPT0gRW5k
c1VzaW5nRGF0YVN0b3JlOjpZZXMpCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2lu
Z1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5wYWdlSUQoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0
b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CiAK
LSAgICByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcih3ZWJQYWdlLnZpc2l0ZWRMaW5rU3RvcmUo
KSwgd2ViUGFnZS5wYWdlSUQoKSk7CisgICAgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIod2Vi
UGFnZS52aXNpdGVkTGlua1N0b3JlKCksIHdlYlBhZ2UuaWRlbnRpZmllcigpKTsKICAgICB1cGRh
dGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7CiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVz
cG9uc2l2ZW5lc3NUaW1lcigpOwpAQCAtNDM3LDEwICs0NDgsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRh
U3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlz
aXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYXV0byYgdXNlcnMgPSBtX3Zpc2l0
ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuc3VyZSgmdmlzaXRlZExpbmtTdG9yZSwgW10gewotICAg
ICAgICByZXR1cm4gSGFzaFNldDxQYWdlSWRlbnRpZmllcj4geyB9OworICAgICAgICByZXR1cm4g
SGFzaFNldDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQ1MCw3ICs0
NjEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlz
aXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3Jl
LmFkZFByb2Nlc3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlz
aXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRM
aW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3Rv
cmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zp
c2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTYzLDEwICs1NzQsMTAgQEAgYm9v
bCBXZWJQcm9jZXNzUHJveHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2VuZGlm
CiAKLWJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lv
bmFsUGFnZVdpdGhJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAg
ICBmb3IgKGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewotICAg
ICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQorICAg
ICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkuaWRlbnRpZmllcigpID09IHBhZ2VJRCkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC01
ODAsNyArNTkxLDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFj
a0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGkKICAgICBpZiAoaGFzUHJvdmlz
aW9uYWxQYWdlV2l0aElEKGl0ZW0ucGFnZUlEKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGlmIChpdGVtLnN1c3BlbmRlZFBhZ2UoKSAmJiBpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cGFn
ZSgpLnBhZ2VJRCgpID09IGl0ZW0ucGFnZUlEKCkgJiYgJml0ZW0uc3VzcGVuZGVkUGFnZSgpLT5w
cm9jZXNzKCkgPT0gdGhpcykKKyAgICBpZiAoaXRlbS5zdXNwZW5kZWRQYWdlKCkgJiYgaXRlbS5z
dXNwZW5kZWRQYWdlKCktPnBhZ2UoKS5pZGVudGlmaWVyKCkgPT0gaXRlbS5wYWdlSUQoKSAmJiAm
aXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTMsNyArMTE2NCw3IEBAIFJlZlB0cjxB
UEk6Ok9iamVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQ
STo6T2JqZWN0KiBvYmplCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6RnJhbWVIYW5kbGU6
OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHN0YXRpY19jYXN0PGNvbnN0IFdlYkZyYW1lUHJveHkmPihv
YmplY3QpLmZyYW1lSUQoKSk7CiAKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6
OlBhZ2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUhhbmRsZTo6Y3JlYXRlQXV0
b2NvbnZlcnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZVByb3h5Jj4ob2JqZWN0KS5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUhhbmRsZTo6Y3JlYXRlQXV0
b2NvbnZlcnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZVByb3h5Jj4ob2JqZWN0KS53ZWJQ
YWdlSUQoKSk7CiAKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91
cDoKICAgICAgICAgICAgICAgICByZXR1cm4gQVBJOjpQYWdlR3JvdXBIYW5kbGU6OmNyZWF0ZShX
ZWJQYWdlR3JvdXBEYXRhKHN0YXRpY19jYXN0PGNvbnN0IFdlYlBhZ2VHcm91cCY+KG9iamVjdCku
ZGF0YSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4
IGJmM2NkMmFkMTNmLi40N2EyNDNkOTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZXNwb25zaXZlbmVz
c1RpbWVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmgiCiAjaW5jbHVkZSAi
V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oPgpAQCAtOTksNyArMTAwLDcgQEAgZW51bSBjbGFzcyBBbGxvd1By
b2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGlj
IEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVu
dCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94eU1hcDsKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eSo+IFdlYlBh
Z2VQcm94eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rp
b25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEzMSw2ICsxMzIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUm
KTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdl
YlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
IApAQCAtMTU0LDggKzE1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFn
ZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7Ci0gICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3Jl
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9y
ZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOworICAgIHZv
aWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKICAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMzUxLDcgKzM1Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBt
ZXNzYWdlQmF0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoZWNrUHJvY2Vzc0xvY2FsUG9y
dEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlS
ZWFjaGFibGUpOwogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpIGNvbnN0OworICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQYWdlV2l0aElE
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGJvb2wgaXNBbGxvd2VkVG9VcGRh
dGVCYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNvbnN0OwogCiAgICAg
Ly8gUGx1Z2lucwpAQCAtNDQ2LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxQcm92
aXNpb25hbFBhZ2VQcm94eSo+IG1fcHJvdmlzaW9uYWxQYWdlczsKICAgICBVc2VySW5pdGlhdGVk
QWN0aW9uTWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAotICAgIEhhc2hNYXA8VmlzaXRl
ZExpbmtTdG9yZSosIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Zpc2l0ZWRM
aW5rU3RvcmVzV2l0aFVzZXJzOworICAgIEhhc2hNYXA8VmlzaXRlZExpbmtTdG9yZSosIEhhc2hT
ZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7
CiAgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5U
ZXJtaW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmNwcAppbmRleCA3ZDU3NWE0MDRiMC4uNWE2Y2M5NWQwZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgYXV0byByZXN1bHQgPSBt
X3Rhc2tzLmFkZCh0YXNrSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKCp0aGlz
LCBwYWdlLCBwcm9jZXNzLCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwog
Ci0gICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5hZGQocGFnZS5w
YWdlSUQoKSwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rh
c2tzQnlQYWdlSWRlbnRpZmllci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0
X3Q+KCkpOwogICAgIEFTU0VSVCghcGFnZUVudHJ5Lml0ZXJhdG9yLT52YWx1ZS5jb250YWlucyh0
YXNrSWRlbnRpZmllcikpOwogICAgIHBhZ2VFbnRyeS5pdGVyYXRvci0+dmFsdWUuYWRkKHRhc2tJ
ZGVudGlmaWVyKTsKIApAQCAtNzAsNyArNzAsNyBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlVSTFNj
aGVtZUhhbmRsZXI6OnByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCB0YXNrSWRlbgog
CiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFnZVBy
b3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7Ci0gICAgYXV0byBpdGVyYXRv
ciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5wYWdlSUQoKSk7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5pZGVudGlmaWVy
KCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlcjo6c3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
cikKICAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3AoKTsKICAgICBwbGF0Zm9ybVN0b3BUYXNrKHBh
Z2UsIGl0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICByZW1vdmVUYXNrRnJvbVBhZ2VNYXAocGFnZS5w
YWdlSUQoKSwgdGFza0lkZW50aWZpZXIpOworICAgIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChwYWdl
LmlkZW50aWZpZXIoKSwgdGFza0lkZW50aWZpZXIpOwogICAgIG1fdGFza3MucmVtb3ZlKGl0ZXJh
dG9yKTsKIH0KIApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6
dGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRmb3JtVGFza0Nv
bXBsZXRlZCh0YXNrKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNr
RnJvbVBhZ2VNYXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCit2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJh
dG9yICE9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCAwOGY4ZjViYTQyMy4uZDU4Yzdl
NTY3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmgKQEAgLTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwog
Ci0gICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lEKTsKICAgICBXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCkgY29uc3Q7CiAKICAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXI7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1l
VGFzaz4+IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFz
aFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOworICAgIEhhc2hNYXA8V2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVu
dGlmaWVyOwogICAgIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENv
bXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IDAzNjIxYzBiYjM3Li5kNjFmMTM2MjI2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgV2Vi
VVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5k
bGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcGFnZSgmcGFnZSkKICAgICAsIG1fcHJvY2Vz
cyhtYWtlUmVmKHByb2Nlc3MpKQogICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmll
cikKLSAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZS5wYWdlSUQoKSkKKyAgICAsIG1fcGFnZUlk
ZW50aWZpZXIocGFnZS5pZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1
ZXN0KSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRp
b25IYW5kbGVyKSkKIHsKQEAgLTgyLDcgKzgyLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnMK
ICAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24o
bV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2Us
IHJlcXVlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3Qp
LCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25l
OwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYg
KGlzU3luYygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJl
c3BvbnNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFu
ZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT53ZWJQ
YWdlSUQoKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTEzNCw3
ICsxMzQsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlk
UmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmll
ciwgeyBidWZmZXIgfSksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpOb25lOwogfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9u
VHlwZQogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3Vy
bFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBlcnJvciksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X2lkZW50aWZpZXIsIGVycm9yKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV91cmxTY2hl
bWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmlu
ZGV4IDc2NzMzZjc0Y2Y2Li4zOWIyZmViNDNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfldlYlVS
TFNjaGVtZVRhc2soKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3Bh
Z2VJZGVudGlmaWVyOyB9CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSB7IEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIApAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0
cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7
Ci0gICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBtdXRhYmxlIExvY2sgbV9yZXF1ZXN0TG9jazsKICAg
ICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGUyZGY0MTdk
MmU4Li45NWFlZGZlMTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2Fw
dHVyZWQoYm9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vz
c2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsK
ICAgICBpZiAoIXdlYlBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2NmYzNTZhYmQ4Ni4uZjUyZmFk
ZWU4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgpAQCAtMTM5
LDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9u
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKKyAgICB2b2lkIGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAgdm9pZCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RS
ZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1t
CmluZGV4IDYxZTg1OTRkNWI3Li41NTNhM2FjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtNDYsMTMg
KzQ2LDEzIEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpFZGl0YWJsZUltYWdlQ29udHJvbGxl
cihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICA6IG1fd2ViUGFnZVByb3h5KG1ha2VX
ZWFrUHRyKHdlYlBhZ2VQcm94eSkpCiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IG1f
d2ViUGFnZVByb3h5LmdldCgpKQotICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICAgICAg
d2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0
YWJsZUltYWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHkt
PndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjp+RWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBt
X3dlYlBhZ2VQcm94eS5nZXQoKSkKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKKyAgICAgICAgd2Vi
UGFnZVByb3h5LT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0
YWJsZUltYWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHkt
PndlYlBhZ2VJRCgpKTsKIH0KIAogRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRW
aWV3SUQgZW1iZWRkZWRWaWV3SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCmluZGV4IGMwZTQzZGNi
MTI2Li44MDhmN2Y3MjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KQEAgLTU4LDE3ICs1OCwx
NyBAQCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyKFdLQ29udGVudFZpZXcgKmNvbnRlbgogICAgIDogbV93ZWJQYWdlUHJveHkoKmNvbnRl
bnRWaWV3LnBhZ2UpCiAgICAgLCBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQogewotICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdl
UHJveHkucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7
CiB9CiAKIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6On5TbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyKCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQ
cm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5
LndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpo
YW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogewotICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KG9yaWdpbiksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29s
bGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBh
Z2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6aGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250
cm9sbGVySU9TLm1tCmluZGV4IGNlZmRlNjFjNDliLi5lNGY3NTdjZGYyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2lu
U3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAg
aWYgKGZpbmlzaCkKICAgICAgICAgICAgIG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0
Rm9yQ3VycmVudFN3aXBlLT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNvbXBs
ZXRlZCwgKnRhcmdldEl0ZW0pOwogICAgIH1dOwotICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdl
UHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5pZGVudGlm
aWVyKCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAg
ICBbbV9zd2lwZVRyYW5zaXRpb25Db250ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFnZUlE
LCBnZXN0dXJlSUQsIHRhcmdldEl0ZW1dIChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250
ZXh0ICpjb250ZXh0LCBCT09MIGRpZENvbXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1
cmVDb250cm9sbGVyID0gY29udHJvbGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpA
QCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdl
c3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93ZWJQ
YWdlUHJveHkuZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgYXV0byBw
YWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2Vi
UGFnZVByb3h5LmlkZW50aWZpZXIoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJy
ZW50R2VzdHVyZUlEOwogICAgIG1fbG9hZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2VzdHVy
ZUlEXSB7CiAgICAgICAgIGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNp
b25hbERyYXdpbmdBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tCmluZGV4IDA0ZjljNmUyNzAyLi5hZjkyZGQyMDAxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTc0NSw3ICs3NDUsNyBAQCAt
IChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVyICopcHJpbnRGbwogLSAoQ0dQREZEb2N1bWVudFJlZilfd2tfcHJpbnRlZERv
Y3VtZW50CiB7CiAgICAgaWYgKF9pc1ByaW50aW5nVG9QREYpIHsKLSAgICAgICAgaWYgKCFfcGFn
ZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2s+KF9wYWdlLT5wYWdlSUQo
KSwgU2Vjb25kczo6aW5maW5pdHkoKSkpIHsKKyAgICAgICAgaWYgKCFfcGFnZS0+cHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2s+KF9wYWdlLT53ZWJQYWdlSUQoKSwgU2Vjb25k
czo6aW5maW5pdHkoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGU0
NDg1YTlmMGM5Li43MTFiZDE1ODQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xOTk4LDkgKzE5OTgs
OSBAQCAtIChCT09MKWVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOihXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBp
ZiAoW3NlbGYgX2hhc1ZhbGlkT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdDpy
ZXF1ZXN0XSkKLSAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9y
bWF0aW9uPihfcGFnZS0+cGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgICAgICByZXR1cm4gY29ubmVjdGlv
bi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24+KF9wYWdlLT53ZWJQYWdlSUQoKSwgMV9zLCBJ
UEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7
CiAKLSAgICBib29sIHJlY2VpdmVkUmVzcG9uc2UgPSBfcGFnZS0+cHJvY2VzcygpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpLCBNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbjo6UmVwbHkoX3Bvc2l0aW9uSW5m
b3JtYXRpb24pLCBfcGFnZS0+cGFnZUlEKCksIDFfcywgSVBDOjpTZW5kU3luY09wdGlvbjo6Rm9y
Y2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7
CisgICAgYm9vbCByZWNlaXZlZFJlc3BvbnNlID0gX3BhZ2UtPnByb2Nlc3MoKS5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb246OlJlcGx5KF9wb3NpdGlvbkluZm9y
bWF0aW9uKSwgX3BhZ2UtPndlYlBhZ2VJRCgpLCAxX3MsIElQQzo6U2VuZFN5bmNPcHRpb246OkZv
cmNlRGlzcGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkp
OwogICAgIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSByZWNlaXZlZFJlc3BvbnNlICYm
IF9wb3NpdGlvbkluZm9ybWF0aW9uLmNhbkJlVmFsaWQ7CiAgICAgCiAgICAgLy8gRklYTUU6IFdl
IG5lZWQgdG8gY2xlYW4gdXAgdGhlc2UgaGFuZGxlcnMgaW4gdGhlIGV2ZW50IHRoYXQgd2UgYXJl
IG5vdCBhYmxlIHRvIGNvbGxlY3QgZGF0YSwgb3IgaWYgdGhlIFdlYlByb2Nlc3MgY3Jhc2hlcy4K
QEAgLTM5NTMsNyArMzk1Myw3IEBAIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyCiAgICAgX3BhZ2Ut
PnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsKIAogICAgIGlmICh1c2VTeW5jUmVxdWVz
dCkgewotICAgICAgICBfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERp
c3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJl
Y3Rpb25Db250ZXh0PihfcGFnZS0+cGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJ
bnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgICAgICBfcGFnZS0+cHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0PihfcGFnZS0+d2Vi
UGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5j
TWVzc2FnZUFycml2ZXMpOwogICAgICAgICBbc2VsZiBfY2FuY2VsUGVuZGluZ0F1dG9jb3JyZWN0
aW9uQ29udGV4dEhhbmRsZXJdOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAzNDlj
ZWQzZTE4MC4uNjg2YTFmMTZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTE2OSw3ICsxNjks
NyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlk
U2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSks
IG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNl
U2F2ZURpYWxvZykgewpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBT
CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQ
YWdlID0gd2ViVmlldygpLT5fcGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6
OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPndl
YlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1T
ZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbQppbmRleCAyMTM1YmYxMTg4ZS4uY2E3YjZjNTEzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVHZW9tZXRyeSgpCiB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkKIHsKICAgICBTZWNvbmRzIGFjdGl2aXR5U3RhdGVV
cGRhdGVUaW1lb3V0ID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygyNTApOwotICAgIHByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGU+KG1fd2ViUGFnZVByb3h5LnBh
Z2VJRCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJ
bnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIHByb2Nlc3MoKS5jb25u
ZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGU+KG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgp
LCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5kVXBkYXRlR2VvbWV0cnkoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMu
bW0KaW5kZXggNTAyNDFkOGJmNjIuLjQyM2EwNmFhYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTE0
NCw3ICsxNDQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNh
dGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxvYQogCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJl
Y2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCiAgICAg
ICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwot
ICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1
cmUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29s
bGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkud2Vi
UGFnZUlEKCkpOwogICAgICAgICBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFn
bmlmaWNhdGlvbiA9IGZhbHNlOwogCiAgICAgICAgIHJldHVybjsKQEAgLTE5Niw3ICsxOTYsNyBA
QCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShGbG9hdFBvaW50IG9yaWdpbikKICAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBW
aWV3R2VzdHVyZVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZVBy
b3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
OjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiksIG1f
d2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS53ZWJQ
YWdlSUQoKSk7CiB9CiAKIHN0YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVs
dGEoRmxvYXRSZWN0IGEsIEZsb2F0UmVjdCBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMjE1
MTY2MmQzNDcuLmFlODdhYTljYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTE5Myw3ICsx
OTMsNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsQmVnaW5BbmltYXRp
b246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlYwogICAgIC8vIEZJWE1FOiBDb25uZWN0aW9u
IGNhbiBiZSBudWxsIGlmIHRoZSBwcm9jZXNzIGlzIGNsb3NlZDsgd2Ugc2hvdWxkIGNsZWFuIHVw
IGJldHRlciBpbiB0aGF0IGNhc2UuCiAgICAgaWYgKF9zdGF0ZSA9PSBXZWJLaXQ6OkltbWVkaWF0
ZUFjdGlvblN0YXRlOjpQZW5kaW5nKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
X3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGJvb2wgcmVjZWl2
ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0PihfcGFn
ZS0+cGFnZUlEKCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwKSk7CisgICAgICAgICAg
ICBib29sIHJlY2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdD4oX3BhZ2UtPndlYlBhZ2VJRCgpLCBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDUw
MCkpOwogICAgICAgICAgICAgaWYgKCFyZWNlaXZlZFJlcGx5KQogICAgICAgICAgICAgICAgIF9z
dGF0ZSA9IFdlYktpdDo6SW1tZWRpYXRlQWN0aW9uU3RhdGU6OlRpbWVkT3V0OwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KaW5kZXggMjljNjE0MGIyMDkuLmU1Mzc5NzQwOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC00ODIsNyAr
NDgyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGMKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNh
dmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3Bl
Y3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFs
b2cpIHsKQEAgLTUyNyw3ICs1MjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgIFto
YW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0
dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2Ut
PndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVE
aWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggYzMyNTY3OGYzOGMuLjdkNDExZTgwODhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgRmxvYXRS
ZWN0JiB2aWV3RnJhbWVJbldpbmRvdwogICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVudCBvdmVy
cmlkZXMgZ2V0V2luZG93RnJhbWUoKSwgd2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBz
ZW5kIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+d2luZG93
RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHZpZXdG
cmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNdIChG
bG9hdFJlY3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZsb2F0
UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xpZW50
KCkuY29udmVydFRvVXNlclNwYWNlKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7Ci0g
ICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJh
bWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5V
bmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywg
YWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdp
bmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVl
bkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5
Vmlld0Nvb3JkaW5hdGVzKSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogfQogCkBAIC0xODEsNyAr
MTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29s
IGlzU2Nyb2xsYWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJh
bWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxh
YmxlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxh
Y2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCkBAIC0y
MDYsNyArMjA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmcKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0
YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2
ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVu
dFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSwgbV93ZWJQ
YWdlSUQpOwogI2Vsc2UKICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlv
bnMucmVnaXN0ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKQEAgLTIyNCw3ICsyMjQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5
bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmli
dXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvbnRBdFNlbGVjdGlvbihGdW5jdGlvbjx2b2lkKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBi
b29sLAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2Vs
ZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgRm9u
dEluZm8mIGZvbnRJbmZvLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlw
bGVGb250cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjcwLDcgKzI3MCw3IEBAIFN0cmlu
ZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgICAgICBy
ZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7
Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7
CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fd2ViUGFnZUlELCBtZXNzYWdlVGltZW91
dCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHIKICAgICB1aW50NjRfdCBzaXplID0gMDsKICAgICBjb25zdCBTZWNvbmRz
IG1lc3NhZ2VUaW1lb3V0KDIwKTsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXpl
KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6
OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3dl
YlBhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CkBAIC0yOTYsMTQgKzI5NiwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRp
bWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBh
Z2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQs
IG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHJlc3VsdCksIG1f
d2ViUGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lm
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxl
Y3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRh
dGEpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAjZW5kaWYKIApAQCAtMzMzLDIyICszMzMsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJ
bnB1dEkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0
SW5wdXRUb1BsdWdpbihwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0
KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5k
Q29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVy
LCB0ZXh0SW5wdXQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cHBl
cmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBw
ZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwcGVyY2FzZVdvcmQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG93ZXJjYXNlV29yZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb3dlcmNhc2VXb3JkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNhcGl0YWxpemVXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRhbGl6ZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
Ym9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgaXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQpCiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lzU21hcnRJbnNl
cnREZWxldGVFbmFibGVkID0gaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChp
c1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYg
ZGljdGlvbmFyeVBvcHVwSW5mbykKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV9wYWdlSUQp
OworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0No
YW5nZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1
Z2luSGFzRm9jdXNBbmRXaW5kb3dIYXNGb2N1cykKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIFdl
YlBhZ2VQcm94eTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KGNvbnN0IFdlYktp
dDo6V2ViTW91c2VFdmVudAogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBT
ZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDMpOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGV2ZW50KSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudDo6UmVwbHkocmVzdWx0
KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJl
c3VsdCksIG1fd2ViUGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RN
b3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7
Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RN
b3VzZShldmVudE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0
TW91c2U6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgcHJv
Y2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVu
dE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJl
cGx5KHJlc3VsdCksIG1fd2ViUGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDI2Zjg1N2FmZDMuLjQzYTBhZDE3YWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxNyw2ICs5MTcsNyBAQAog
CQk0NkJFQjZEQjIyRkI5RDQ4MDAyNjk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZEOTIyRkI5
RDQ4MDAyNjk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkRG
MjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQyMkZCQjE2QjAwMjY5
ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkUzMjJGQkIy
MUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2
OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKKwkJNDZDMzky
MjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhF
RUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1
RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBC
QiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIw
NjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5
QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmggKi87IH07CkBAIC0zMjI4LDYgKzMyMjksNyBAQAogCQk0NkJFQjZERTIyRkJC
MTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFMjIyRkJCMjFBMDAyNjk4
NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQx
MEYzNTE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NTksNiArNzg2
MSw3IEBACiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAg
Ki8sCiAJCQkJQkMwMzJEQ0IxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oICovLAog
CQkJCUJDQkQzOEZBMTI1QkFCOUEwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCAqLywKIAkJCQk3QzQ2OTRDRDFBNTFFMzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFBy
b3h5LmNwcCAqLywKIAkJCQk3QzQ2OTRDRTFBNTFFMzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2Fy
ZFByb3h5LmggKi8sCiAJCQkJN0M0Njk0Q0YxQTUxRTM2ODAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9h
cmRQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTEwMDI1LDYgKzEwMDI4LDcgQEAKIAkJCQlDNUZB
MUVEMzE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEMTJEQUI1MjA2NjJDNzMwMDZGMDBGQiAvKiBXS0FuaW1hdGlvbkRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElD
YXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRTM0RTUxMzBCNEQw
NTAwQUJEMTlBIC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExM0RDNjgyMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2lu
Z1ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAvKiBX
S0FycmF5LmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377485</attachid>
            <date>2019-08-28 14:17:51 -0700</date>
            <delta_ts>2019-08-28 14:29:48 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>201233_wip.patch</filename>
            <type>text/plain</type>
            <size>326331</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5k
ZXggZGI3MmNhMTY1ODcuLmRhZjRkYTIyNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQorUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6
IG1faXRlbVN0YXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyKG1faXRlbVN0YXRl
LmlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggM2E0NWUxY2I3YTcuLjZkNjdlYzBiMmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJTZXNzaW9u
U3RhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
YWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGlj
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
KyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZv
aWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsg
fQpAQCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVt
b3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJMOwot
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA2MWE2OWIxZjNhNi4uMmY1ZjgwYzA3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcApAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRC
YXNlKgogICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQpOwogCiAgICAgaWYgKG1pbGVzdG9uZXMpCi0gICAgICAgIHdlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXMobWlsZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgICAgICB3ZWJQ
YWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPndlYlBhZ2VJRCgpKTsKIAog
ICAgIHdlYlBhZ2VQcm94eS0+c2V0TG9hZGVyQ2xpZW50KFdURk1vdmUobG9hZGVyQ2xpZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0OTY3Nzg4YTEwNS4uMTEw
MDMzYmE2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNzIwLDcgKzcy
MCw3IEBAIC0gKE5TVUludGVnZXIpcGFnZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlICopaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFs
bG9jXSBfaW5pdFdpdGhQYWdlSUQ6X3BhZ2UtPnBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6
X3BhZ2UtPndlYlBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZjQ0MTE0MzU1ZC4uY2M3ZjZjOTYy
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtODc3LDcgKzg3Nyw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtfY29udGVudFZpZXcg
X3dlYlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1vdGVPYmplY3RSZWdpc3RyeSkKLSAg
ICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICNlbmRpZgogCiAgICAg
X3BhZ2UtPmNsb3NlKCk7CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCAtICh2b2lkKV9kaWRDb21taXRM
YXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVy
VHJlZQogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1b
V0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2RpZENvbW1pdExheWVyVHJlZTpd
IHRyYW5zYWN0aW9uSUQgIiA8PCAgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgp
IDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9kaWRDb21taXRM
YXllclRyZWU6XSB0cmFuc2FjdGlvbklEICIgPDwgIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5z
YWN0aW9uSUQoKSA8PCAiIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBib29sIG5lZWRVcGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzID0gX3BhZ2UtPnVwZGF0ZUxheW91dFZpZXdwb3J0UGFyYW1ldGVycyhsYXllclRy
ZWVUcmFuc2FjdGlvbik7CiAKQEAgLTI5MDgsNyArMjkwOCw3IEBAIC0gKHZvaWQpX2Rpc3BhdGNo
U2V0Vmlld0xheW91dFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0U2l6ZQogICAg
IGlmIChfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShfbGFzdFNl
bnRWaWV3TGF5b3V0U2l6ZS52YWx1ZSgpLCB2aWV3TGF5b3V0U2l6ZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZGlzcGF0Y2hTZXRWaWV3TGF5b3V0U2l6
ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9vbVNjYWxlICIgPDwgY29udGVu
dFpvb21TY2FsZShzZWxmKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfZGlzcGF0
Y2hTZXRWaWV3TGF5b3V0U2l6ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9v
bVNjYWxlICIgPDwgY29udGVudFpvb21TY2FsZShzZWxmKSk7CiAgICAgX3BhZ2UtPnNldFZpZXdw
b3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBfcGFnZS0+bGF5
b3V0U2l6ZVNjYWxlRmFjdG9yKCksIF9wYWdlLT5taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgo
KSk7CiAgICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSB2aWV3TGF5b3V0U2l6ZTsKIH0KQEAg
LTMyMTIsNyArMzIxMiw3IEBAIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9yaWVudGF0aW9uKFdLV2Vi
VmlldyAqd2ViVmlldykKIAogLSAodm9pZClfY2FuY2VsQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwg
X3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2NhbmNlbEFuaW1hdGVkUmVzaXplOl0gIiA8PCAiIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2Vi
VmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfY2FuY2VsQW5pbWF0ZWRSZXNpemU6
XSAiIDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlKTsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykKICAgICAgICAg
cmV0dXJuOwogCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogI2Vsc2UKICAgICBpZiAoIV9yZW1vdGVPYmplY3RS
ZWdpc3RyeSkgewogICAgICAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBhZG9wdE5TKFtbX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0aFdlYlBhZ2VQcm94eToqX3BhZ2Vd
KTsKLSAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgX3BhZ2UtPnBhZ2VJRCgpLCBbX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJl
Z2lzdHJ5XSk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIF9wYWdlLT53ZWJQYWdlSUQoKSwgW19yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1v
dGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAogICAgIHJldHVybiBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkuZ2V0KCk7CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxs
b2NdIF9pbml0V2l0aFBhZ2VJRDpfcGFnZS0+cGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpf
cGFnZS0+d2ViUGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoX1dLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHMpX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMKQEAgLTUwMTcsNyAr
NTAxNyw3IEBAIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29u
dGV4dCAqKXRleHRJbnB1dENvbnRleHQgY29tcGxldGlvCiAjZW5kaWYKIAogICAgIGF1dG8gd2Vi
Q29udGV4dCA9IFt0ZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5wdXRDb250ZXh0XTsKLSAgICBpZiAo
d2ViQ29udGV4dC53ZWJQYWdlSWRlbnRpZmllciAhPSBfcGFnZS0+cGFnZUlEKCkpCisgICAgaWYg
KHdlYkNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgIT0gX3BhZ2UtPndlYlBhZ2VJRCgpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiVGhlIHByb3ZpZGVkIF9XS1RleHRJbnB1dENvbnRleHQgd2FzIG5vdCBjcmVhdGVkIGJ5IHRo
aXMgV0tXZWJWaWV3LiJdOwogCiAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwpAQCAt
NjIzMyw3ICs2MjMzLDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6
ZQogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZW5kQW5pbWF0ZWRSZXNpemU6XSAiIDw8
ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
Ii1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9lbmRBbmltYXRlZFJl
c2l6ZTpdICIgPDwgIiBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAiIDw8IChpbnQpX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIHVw
LXRvLWRhdGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAvLyB0aGUgcmVz
aXplLiBPdGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3ZSBkby4KQEAg
LTYyNDQsNyArNjI0NCw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAKIC0gKHZvaWQp
X3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAi
LVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfcmVzaXplV2hpbGVIaWRpbmdD
b250ZW50V2l0aFVwZGF0ZXM6XSIpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMs
IHN0cmVhbSA8PCAiLVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+aWRlbnRpZmllcigpIDw8ICIgX3Jl
c2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iKTsKICAgICBbc2VsZiBfYmVnaW5B
bmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOnVwZGF0ZUJsb2NrXTsKICAgICBpZiAoX2R5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpS
ZXNpemluZ1dpdGhBbmltYXRpb24pIHsKICAgICAgICAgW19jb250ZW50VmlldyBzZXRIaWRkZW46
WUVTXTsKQEAgLTYzNDUsNyArNjM0NSw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0
KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAKIC0g
KHZvaWQpX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTooQ0dT
aXplKW1pbmltdW1MYXlvdXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1Np
emUpbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgp
IDw8ICIgX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZToiIDw8
IFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSkgPDwgIiBtYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZToiIDw8IFdlYkNvcmU6OkZsb2F0U2l6ZShtYXhpbXVtVW5vYnNjdXJl
ZFNpemVPdmVycmlkZSkgPDwgIl0iKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3Rz
LCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9v
dmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6IiA8PCBXZWJDb3Jl
OjpGbG9hdFNpemUobWluaW11bUxheW91dFNpemUpIDw8ICIgbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU6IiA8PCBXZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVVub2JzY3VyZWRTaXplT3Zl
cnJpZGUpIDw8ICJdIik7CiAKICAgICBbc2VsZiBfc2V0Vmlld0xheW91dFNpemVPdmVycmlkZTpt
aW5pbXVtTGF5b3V0U2l6ZV07CiAgICAgW3NlbGYgX3NldE1heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlOm1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IGFjN2U0OWFiMDI1Li4zZGQxMGU1ZjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC01MDksNyArNTA5
LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5wYWdlSUQoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
b21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5z
OwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDIyYTg2NDU5MWRmLi42MzVmN2RhNWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE3NzUsNSArMTc3NSw1
IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyoKIAogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29u
dGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gcGFnZSA/IGNvbnRleHQtPnByaXYtPndlYlZpZXdz
LmdldChwYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHBh
Z2UgPyBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggM2E1MjE0MmVkNzUuLjNmYjkwY2IxODgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bh
Z2VfaWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uo
d2ViVmlldykucGFnZUlEKCkudG9VSW50NjQoKTsKKyAgICByZXR1cm4gZ2V0UGFnZSh3ZWJWaWV3
KS5pZGVudGlmaWVyKCkudG9VSW50NjQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IGJlYWE4OThiYWRiLi40N2Y5MTc0MDUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
QEAgLTE4NywxNiArMTg3LDE2IEBAIFdlYlBhZ2VQcm94eSogV2ViQXV0b21hdGlvblNlc3Npb246
OndlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSkKIAogU3RyaW5nIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCiB7Ci0gICAgYXV0byBpdGVyID0gbV93ZWJQYWdlSGFuZGxlTWFw
LmZpbmQod2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBhdXRvIGl0ZXIgPSBtX3dlYlBhZ2VI
YW5kbGVNYXAuZmluZCh3ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpKTsKICAgICBpZiAoaXRlciAh
PSBtX3dlYlBhZ2VIYW5kbGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsK
IAogICAgIFN0cmluZyBoYW5kbGUgPSAicGFnZS0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAKLSAgICBhdXRvIGZpcnN0QWRkUmVzdWx0
ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJveHkucGFnZUlEKCksIGhhbmRsZSk7
CisgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5hZGQod2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKSwgaGFuZGxlKTsKICAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0gbV9oYW5k
bGVXZWJQYWdlTWFwLmFkZChoYW5kbGUsIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgYXV0
byBzZWNvbmRBZGRSZXN1bHQgPSBtX2hhbmRsZVdlYlBhZ2VNYXAuYWRkKGhhbmRsZSwgd2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0
LmlzTmV3RW50cnkpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dAogCiAgICAgbV9jbGllbnQtPnJlcXVlc3RTd2l0Y2hUb1Bh
Z2UoKnRoaXMsICpwYWdlLCBbZnJhbWVJRCwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKICAgICAgICAgcGFnZS0+c2V0Rm9jdXModHJ1ZSk7
Ci0gICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CisgICAg
ICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CiAKICAgICAg
ICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CkBAIC00OTcsMTAgKzQ5NywxMCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVP
blBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCh0
aW1lb3V0KTsKICAgICBzd2l0Y2ggKGxvYWRTdHJhdGVneSkgewogICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAg
ICBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQ
YWdlLnNldChwYWdlLnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIG1fcGVu
ZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2Uuc2V0
KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgIG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlclBhZ2Uuc2V0KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
UGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmln
YXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNh
bGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKIHsKICAgICBJbnNwZWN0
b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJvciA9IFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJP
Ul9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAoYXV0byBpZCA6IGNvcHlUb1ZlY3RvcihtYXAua2V5
cygpKSkgewpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5h
dmlnYXRpb25PY2N1cnJlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lCiAgICAg
ICAgIC8vIE5ldyBwYWdlIGxvYWRlZCwgY2xlYXIgZnJhbWUgaGFuZGxlcyBwcmV2aW91c2x5IGNh
Y2hlZC4KICAgICAgICAgbV9oYW5kbGVXZWJGcmFtZU1hcC5jbGVhcigpOwogICAgICAgICBtX3dl
YkZyYW1lSGFuZGxlTWFwLmNsZWFyKCk7Ci0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50
YWtlKGZyYW1lLnBhZ2UoKS0+cGFnZUlEKCkpKSB7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZS50YWtlKGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9s
b2FkVGltZXIuc3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046
Ok9iamVjdDo6Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGlvbk9jY3VycmVkRm9yRnJhbWUoY29uc3QgV2Vi
RnJhbWVQcm94eSYgZnJhbWUKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRvY3VtZW50TG9h
ZGVkRm9yRnJhbWUoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1l
LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2UudGFrZShmcmFt
ZS5wYWdlKCktPnBhZ2VJRCgpKSkgeworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVu
ZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtl
KGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9sb2FkVGltZXIu
c3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046Ok9iamVjdDo6
Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03OTIsMTQgKzc5MiwxNCBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpkb2N1bWVudExvYWRlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkm
IGZyYW1lKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExv
YWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sg
PSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkp
CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQog
ewogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRv
IGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkK
ICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBX
ZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRF
UkFDVElPTlMpCi0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC04MjQsMTcgKzgyNCwxNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQ
cm94eSYgcGFnZSkKICAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFjdGlvbnMgb24gdGhpcyBw
YWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVzZSBzdWJzZXF1ZW50CiAg
ICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgogI2lmIEVOQUJMRShXRUJEUklW
RVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
TW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQor
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKICAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRp
bmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlm
aWVyKCkpKQogICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9O
QU1FKFdpbmRvd05vdEZvdW5kKSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNU
SU9OU19BUEkpCiAgICAgLy8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNl
bCBzbyB0aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgotICAg
IE9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIg
PSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBPcHRp
b25hbDxSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gaW5wdXREaXNwYXRjaGVyID0gbV9p
bnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpOwogICAgIGlmIChp
bnB1dERpc3BhdGNoZXIuaGFzVmFsdWUoKSkKICAgICAgICAgaW5wdXREaXNwYXRjaGVyLnZhbHVl
KCktPmNhbmNlbCgpOwogI2VuZGlmCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnQKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZhbHVhdGVKYXZhU2Ny
aXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbihwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgZnVuY3Rpb24sIGFyZ3Vt
ZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1l
b3V0LCBjYWxsYmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja1RpbWVvdXQsIGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtOTg3LDE3ICs5ODcsMTcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHQKICAgICB9OwogCiAgICAgaWYgKG9wdGlvbmFsTm9kZUhhbmRsZSkgewotICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHBhZ2Ut
PnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFu
ZGxlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG9wdGlvbmFsTmFtZSkgewotICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNv
bHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxO
YW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAq
b3B0aW9uYWxOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsT3JkaW5hbCkgewotICAgICAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBhZ2VJRCgpLCBmcmFt
ZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPndl
YlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDI0LDcgKzEwMjQsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleAogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3Mo
aGFuZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlEKSk7CiAgICAgfTsKIAotICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OlJlc29sdmVQYXJlbnRGcmFtZShwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlUGFyZW50RnJh
bWUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBwcm90b2NvbFN0cmlu
Z1RvQ29vcmRpbmF0ZVN5c3RlbShjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW1TdHJpbmcp
CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRl
RWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbgogICAgIH07CiAK
ICAgICBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSBvcHRpb25hbFNjcm9sbEludG9WaWV3
SWZOZWVkZWQgPyAqb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkIDogZmFsc2U7Ci0gICAg
cGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFnZS0+cGFnZUlEKCksIGZyYW1l
SUQsIG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvb3JkaW5hdGVTeXN0ZW0u
dmFsdWUoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhh
bmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29vcmRpbmF0ZVN5c3RlbS52YWx1ZSgpKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUs
IFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0xMTA5LDcg
KzExMDksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50
KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZAogICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6U2VsZWN0T3B0aW9uRWxl
bWVudChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50KHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1Nob3dpbmdKYXZh
U2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgYm9vbCogcmVzdWx0KQpAQCAtMTI3OSw3ICsx
Mjc5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgUmUKICAgICAgICAgY2FsbGJhY2stPnNlbmRT
dWNjZXNzKGJ1aWxkQXJyYXlGb3JDb29raWVzKGNvb2tpZXMpKTsKICAgICB9OwogCi0gICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6R2V0Q29va2llc0ZvckZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxv
cHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6R2V0
Q29va2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRl
bGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpkZWxldGVTaW5nbGVDb29raWUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbAog
ICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6RGVsZXRlQ29va2llKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5h
bWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVs
ZXRlQ29va2llKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluQnlB
ZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChTdHJpbmcgZG9tYWluKQpAQCAtMTQ0NSw3ICsxNDQ1LDcg
QEAgYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3QKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQogU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFn
ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXREaXNwYXRjaGVyc0J5
UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICByZXR1cm4gbV9pbnB1dERpc3Bh
dGNoZXJzQnlQYWdlLmVuc3VyZShwYWdlLmlkZW50aWZpZXIoKSwgWyZdIHsKICAgICAgICAgcmV0
dXJuIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQ
cm94eSYgcGFnZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQb2ludCwg
V1RGOjpudWxsb3B0KTsKICAgICB9OwogCi0gICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVu
dExheW91dChwYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRp
bmF0ZVN5c3RlbTo6TGF5b3V0Vmlld3BvcnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVtZW50TGF5
b3V0SGFuZGxlcikpOworICAgIHBhZ2UucHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFn
ZS53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgZmFsc2UsIENvb3JkaW5hdGVTeXN0
ZW06OkxheW91dFZpZXdwb3J0KSwgV1RGTW92ZShkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRs
ZXIpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQpAQCAt
MTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxs
YmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5h
ZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0
byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1Bl
clBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxi
YWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE1MDcs
NyArMTUwNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50CiAKICAgICAgICAgLy8gSWYgdGhl
IGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQg
bWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAm
JiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewotICAgICAgICAgICAgYXV0byBj
YWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0Nh
bmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShw
YWdlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51
bGxvcHQpOwogICAgICAgICB9CiAKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBh
Z2UsIEtleWJvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICB9OwogCi0g
ICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS5pZGVudGlmaWVyKCksIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgY2FsbGJhY2tJbk1h
cChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICBjYWxs
YmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CkBAIC0x
NTUzLDcgKzE1NTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlibwogICAgIC8vIElmIHRoZSBp
bnRlcmFjdGlvbiBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzLCB0aGVuIGRvIG5vdCB3YWl0
IGZvciBldmVudHMgdG8gYmUgZmx1c2hlZC4KICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gc29tZSBj
b3JuZXIgY2FzZXMgb24gbWFjT1MsIHN1Y2ggYXMgcmVsZWFzaW5nIGEga2V5IHdoaWxlIENvbW1h
bmQgaXMgcHJlc3NlZC4KICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS5pc1Byb2Nlc3Np
bmdLZXlib2FyZEV2ZW50cygpKSB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1f
cGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBh
Z2VJRCgpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nS2V5Ym9h
cmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKTsK
ICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOwogICAgIH0KIApAQCAtMTYz
Nyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VF
dmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIo
KSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkK
ICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhf
TkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZl
bnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBKCiAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVczQyBkcml2
ZXIgaW1wbGVtZW50YXRpb25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBqdXN0IGRv
IG5vdGhpbmcgc2lsZW50bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0aHMsIHdl
IGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBhcmUgb3V0
c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KICAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXAgJiYgIXBh
Z2UtPmlzUHJvY2Vzc2luZ01vdXNlRXZlbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FsbGJh
Y2tUb0NhbmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwg
PSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS0+
aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpudWxsb3B0
KTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb24KICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgIH07
CiAKLSAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+aWRlbnRpZmllcigpLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNhbGxiYWNrSW5NYXApCiAgICAgICAgIGNhbGxi
YWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAg
ICAgY2FsbGJhY2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sp
OwpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3AKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0U2NyZWVuc2hvdENhbGxiYWNrSUQrKzsKICAgICBtX3Nj
cmVlbnNob3RDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAot
ICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpUYWtlU2NyZWVuc2hvdChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIGNhbGxiYWNrSUQpLCAwKTsK
KyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6VGFrZVNjcmVlbnNob3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5k
bGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNsaXBUb1ZpZXdwb3J0LCBjYWxsYmFja0lEKSwg
MCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURh
dGFIYW5kbGUsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4
IGViNGJkMmJhNTNjLi5kY2Y5ZjRkMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsOCAr
MzQsOCBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAgICB2b2lk
IHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VO
YXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGlt
ZXJGaXJlZCgpOwogCkBAIC0yODIsMjIgKzI4MiwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXI+IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOworICAgIEhh
c2hNYXA8U3RyaW5nLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7
CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYkZy
YW1lSGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZp
Z2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAg
IEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlckZyYW1lOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJ
bnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+
IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZF
Ul9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBt
X3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElP
TlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3Bl
bmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1
aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzIx
LDcgKzMyMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQ
SXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAg
IC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlh
bCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5w
dXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJz
QnlQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmPFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJh
Y2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9r
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCmluZGV4IGRmMjZhY2RiMWNhLi41
MGY0MjdlZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAgLTUwLDkg
KzUwLDkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4
dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgYm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0lu
c3BlY3RvckNhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkpKQogICAgICAg
ICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUo
VGltZW91dCkpOwotICAgIG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2Uuc2V0KHBh
Z2UtPnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9wZW5kaW5nSW5zcGVjdG9y
Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAKICAgICAvLyBEb24ndCBicmluZyB0aGUgaW5zcGVjdG9yIHRvIGZyb250IHNpbmNlIHRo
aXMgbWF5IGJlIGRvbmUgYXV0b21hdGljYWxseS4KICAgICAvLyBXZSBqdXN0IHdhbnQgaXQgbG9h
ZGVkIHNvIGl0IGNhbiBwYXVzZSBpZiBhIGJyZWFrcG9pbnQgaXMgaGl0IGR1cmluZyBhIGNvbW1h
bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZTU5YmU5MWE0MjAuLjkyY2YyMDhhYTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmPFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVh
dGUoV2ViUGFnZVByb3gKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZSgmcGFnZSkK
IHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQogCiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQpAQCAtMzE0LDcg
KzMxNCw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6flBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSgpCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGlk
YXRlKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRy
OwogCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXIubW0KaW5kZXggZjAyMDgzZGNlYzcuLmFkNGI2MWVjMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KQEAg
LTQ0LDcgKzQ0LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZXBsYWNlUmVsYXRp
dmVUb1NlbGVjdGlvbihOU0F0dHJpYnV0ZWRTdHJpbmcgKmFubm8KICAgICBpZiAoIW1fcGFnZS5o
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJl
bGF0aXZlVG9TZWxlY3Rpb24oYW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0
aCwgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3Ro
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24o
YW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCwgcmVsYXRpdmVSZXBsYWNl
bWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKSwgbV9wYWdlLndlYlBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZW1vdmVBbm5vdGF0aW9u
UmVsYXRpdmVUb1NlbGVjdGlvbihOU1N0cmluZyAqYW5ub3RhdGlvbk5hbWUsIGludDY0X3Qgc2Vs
ZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgpCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgVGV4
dENoZWNraW5nQ29udHJvbGxlcjo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24o
TlNTdHJpbmcgKmFubm90CiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0
aW9uKGFubm90YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9uKGFubm90
YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4
IGY3OGE4MDRiMjM1Li43YWIzNGUwYmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAt
MzI1LDcgKzMyNSw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAgICAgOiBtX3BhZ2UoJnBh
Z2UpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAog
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KCkKQEAgLTMzNyw3ICszMzcsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6On5WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV9w
YWdlID0gbnVsbHB0cjsKIAogICAgIGF1dG8gY29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0
TWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggOGEzOTRhZmU3MzguLjJhMjhiMTU5MjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjEwLDcg
KzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigp
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV9wYWdl
SUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIGNvbnN0IFN0cmluZyYg
V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKIHsKLSAgICBwcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIG1fcGFnZUlELCBtZXNzYWdlUmVjZWl2ZXIpOworICAgIHByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQsIG1l
c3NhZ2VSZWNlaXZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25z
dCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlE
KTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1fd2ViUGFnZUlEKTsKIH0KIAogI2VuZGlmCkBAIC0yODUsMTcgKzI4NSwxNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtpbmdFcnJvck9j
Y3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVk
KCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Bl
YWtpbmdFcnJvck9jY3VycmVkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5IHNwZWVjaEJvdW5kYXJ5LCB1bnNp
Z25lZCBjaGFySW5kZXgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hC
b3VuZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChz
cGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5k
YXJ5LCBjaGFySW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2
b2ljZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDhkZjRkYTdiMzIwLi5mNDA0MmZlNzBkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzNjIs
NyArMTM2Miw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBs
RGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6fldlYlZp
ZXdJbXBsKCkKIHsKICAgICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgW21fcmVtb3Rl
T2JqZWN0UmVnaXN0cnkgX2ludmFsaWRhdGVdOwogICAgICAgICBtX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5ID0gbmlsOwogICAgIH0KQEAgLTE5NzksMTMgKzE5NzksMTMgQEAgZmxvYXQgV2ViVmlld0lt
cGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1w
bDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwg
IldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMs
IG1fcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNTMsNyArMjA1
Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAK
IHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0Rp
ZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdp
bmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIyMTYsMTkgKzIyMTYsMTkgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkKIAogdm9p
ZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBh
Z2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwg
JXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0Rp
ZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFn
ZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZp
ZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2Uo
KQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkg
YWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkp
OworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0
aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMzgyMyw3ICszODIzLDcgQEAgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgKldlYlZpZXdJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB7CiAgICAg
aWYgKCFtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7CiAgICAgICAgIG1fcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBhZG9wdE5TKFtbX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0
aFdlYlBhZ2VQcm94eTptX3BhZ2VdKTsKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIFttX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmpl
Y3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpLCBb
bV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAog
ICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjYTc2ODdmNmI1Mi4uMWU4MGZmNTI4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShH
RU9MT0NBVElPTikKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBh
bGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihn
ZW9sb2NhdGlvbklELCBhbGxvd2VkKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGFsbG93ZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKaW5kZXggNjJiMDcyOWY4YTUuLjYxYjhmMzZl
ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuY3BwCkBAIC01MCwxOSArNTAsMTkgQEAgSW5zcGVjdG9yVGFyZ2V0UHJveHk6Okluc3BlY3Rv
clRhcmdldFByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0YXIKIHZvaWQg
SW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwm
IGNoYW5uZWwpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0
b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNv
bm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBt
X3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpkaXNj
b25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJikKIHsKICAgICBpZiAobV9wYWdlLmhh
c1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChpZGVudGlmaWVyKCksIG1lc3NhZ2UpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSks
IG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAppbmRleCBmODc2MWIxZjNmNC4uNzQ0Mzk4ODM3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byByZXF1ZXN0
ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90aWZpY2F0
aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAgICAgICBt
X3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJt
aXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBhbGxvd2Vk
KSwgcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH0pOwogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFk
ZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDdhM2U5YjIzYmEu
Ljc2MDYzMWM0OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAgdWludDY0
X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7
CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwg
Ym9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZp
Y2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+IG5vdGlm
aWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90
aWZpY2F0aW9uSUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3Bh
aXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkp
KTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwpA
QCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGwKIAogdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoV2ViTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpKS5zZWNvbmQuZ2V0KCkpCisgICAgaWYgKFdl
Yk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1h
a2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29u
ZC5nZXQoKSkKICAgICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKCpub3RpZmljYXRpb24pOwogfQog
ICAgIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQp
CiB7Ci0gICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMu
dGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KSk7CisgICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMu
dGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRp
b25JRCkpOwogICAgIGlmICh1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdsb2JhbElE
Tm90aWZpY2F0aW9uUGFpci5maXJzdCkgewogICAgICAgICBXZWJOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9IGdsb2JhbElETm90aWZpY2F0aW9uUGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25JRCk7CkBA
IC0xMTksMTIgKzExOSwxMiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQogfQogCi1z
dGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCwg
UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCitz
dGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0K
IAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBQYWdlSWRlbnRpZmllciBkZXNp
cmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRl
c2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJl
ZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZp
Y2F0aW9uSUQpOwogfQpAQCAtMTQxLDE1ICsxNDEsMTUgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3Rp
ZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQog
ewotICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgYXV0byB0
YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKIAogICAgIFZlY3Rvcjx1
aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklE
cy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAg
IGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNh
dGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9
IGl0LT5rZXkuZmlyc3Q7CisgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBpdC0+a2V5LmZpcnN0
OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsK
LSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25J
RCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYgKCFmaWx0
ZXJGdW5jdGlvbihwYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJv
eHlJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5maXJzdDsKQEAg
LTE3MCw4ICsxNzAsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAgIGlmIChpdCA9PSBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Ci0gICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CisgICAgYXV0byogd2ViUGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOwogICAgIGlmICgh
d2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODUsOCArMTg0LDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1
ZS5maXJzdDsKLSAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2Uod2ViUGFnZUlEKTsKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDExNTc4MWU0
MzMzLi40OGFiNThlODFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9v
bCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3Rp
ZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0
aW9uKShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdl
Tm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBX
ZWJDb250ZXh0U3VwcGxlbWVudApAQCAtODksOSArODksOSBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAg
Ly8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5v
dGlmaWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0
X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQg
b2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFs
dWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNh
dGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+
Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZp
Y2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmlu
ZGV4IGQ3ZjBjM2M5NTAyLi4wYzAzNDA2OTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBzdXNwZW5kZWRQYWdlLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1f
d2ViUGFnZUlEKHBhZ2Uud2ViUGFnZUlEKCkpCiAgICAgLCBtX3Byb2Nlc3MoV1RGTW92ZShwcm9j
ZXNzKSkKICAgICAsIG1fbmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCkKICAgICAsIG1faXNTZXJ2
ZXJSZWRpcmVjdChpc1NlcnZlclJlZGlyZWN0KQpAQCAtNjMsMTMgKzY0LDEzIEBAIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJl
ZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3Bl
bmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2Vi
UGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3VzcGVuZGVk
UGFnZTogJXAiLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJ
RCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50
aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAgLy8gSWYgd2Ug
YXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUgV2ViUHJvY2Vzcycg
V2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAvLyBXZWJQYWdlUHJveHk6OmRpZENyZWF0
ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFsaXplIG1fbWFpbkZyYW1l
LiBJbiBzdWNoCkBAIC05MywxMSArOTQsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92
aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgmbV9wcm9jZXNz
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAg
ICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSht
X3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0ZWRMaW5r
U3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3Nl
KCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVV
c2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogCiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYo
KV0gewogICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKCk7CkBAIC0xMDYsNyArMTA3LDcg
QEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1p
bmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNz
RGlkVGVybWluYXRlOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAK
QEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQog
ICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94
eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBT
aW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9tYWlu
RnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVz
dCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOwpAQCAtMTM2LDIwICsxMzcsMjAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gbV9wYWdlLmNy
ZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKTsKICAgICBwYXJhbWV0
ZXJzLmlzUHJvY2Vzc1N3YXAgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZShtX3BhZ2UucGFnZUlEKCksIHBhcmFtZXRlcnMpLCAw
KTsKLSAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVk
TGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBwYXJhbWV0ZXJzKSwg
MCk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2UudmlzaXRl
ZExpbmtTdG9yZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24s
IGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykp
OwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVj
dCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwg
b3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFz
IHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBo
YXBwZW4gaW4gdGhlCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMK
IAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTog
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVt
OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1T
dGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xNzEsOCArMTcyLDgg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1cm4gJml0
ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0
YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBp
dGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1T
dGF0ZXMpKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVt
Lml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS5zdGFydCgpOwogfQogCkBAIC0xODcsNyArMTg4LDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKICAg
ICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMjUsNyArMjI2LDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlv
bklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmln
YXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAi
IHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHVybDsKIApAQCAtMjQ1LDcgKzI0Niw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25J
RCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIg
d2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBB
U1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHsgfTsKIApAQCAtMjYxLDkgKzI2Miw5IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50
b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6
IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRp
ZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50
NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9IHRydWU7
CiAgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGUzZWU2ODdmYTcu
LjViNGM5Y2YyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFsaWRh
dGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90
PiYgbmF2aWdhdGlvbklEID0gV1RGOjpudWxsb3B0KTsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9w
YWdlOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9tYWlu
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5jcHAKaW5kZXggNGFhMzQ0NDkwZDguLjU3N2M0MzQyMzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29uc3QgU3Ry
aW5nJiBkZWJ1Z2dhYmxlVHlwZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dhYmxlVHlw
ZSA9IGRlYnVnZ2FibGVUeXBlOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENv
bW1hbmRzVVJMOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tl
bmRDb21tYW5kc1VSTCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJ
bml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpLCBtX2luc3BlY3Rv
clBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVz
c2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkKQEAgLTE1
Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVu
ZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFn
ZSwgbnVsbHB0cik7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+
d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JCYXNlVVJMKCkpOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIGlm
ICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICB1bnRyYWNrSW5zcGVj
dG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBjNjRkN2VmMTliZC4uNzkyNGU0ZWYzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAt
ODAsNiArODAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4m
IG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogCiBTdXNwZW5kZWRQYWdlUHJv
eHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX3dlYlBhZ2VJRChwYWdlLndlYlBhZ2VJRCgpKQogICAgICwg
bV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAgICAgLCBtX21haW5GcmFtZUlEKG1haW5GcmFt
ZUlEKQogICAgICwgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKQpAQCAtODksMTAgKzkwLDEwIEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6
U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3Vu
dCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cisg
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAgICAgbV9zdXNw
ZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5zaW9uVGltZW91dCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTE0LDcgQEAgU3VzcGVuZGVk
UGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgpOwogCiAgICAgaWYg
KG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZykKLSAgICAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3By
b2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAogICAgIC8vIFdlIGNhbGwgbWF5YmVT
aHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBTdXNwZW5kZWRQYWdlIGlzIGN1cnJl
bnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sCiAgICAgLy8gYW5kIHdl
IHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vzc1Bvb2wgbWV0aG9kcy4KQEAgLTE0
Nyw3ICsxNDgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKICAgICBB
U1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kZWQpOwog
CiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBTdXNwZW5k
ZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNjAsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAg
LSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0g
dHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpwYWdl
RW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTIwMyw3ICsyMDQsNyBAQCB2
b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVu
c2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0cjsK
ICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgaWYgKG1fc3Vz
cGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQogICAgICAg
ICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgi
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBXZWJQYWdlIElEICIs
IG1fd2ViUGFnZUlELnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCA5MTY1M2Nj
NzhlYS4uN2I5NWI2ZWRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5oCkBAIC03NCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdl
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9t
YWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDAyMzg3ZDQzYmNjLi5iNjYyMGRjMWYwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZChQZXJtaXNzaW9uSW5mCiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZCgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTE5MSw3ICsx
OTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZW55
UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgICAgICBtX2RlbmllZFJlcXVlc3Rz
LmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
IH0pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZChyZXF1ZXN0LnVz
ZXJNZWRpYUlEKCksIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQocmVxdWVzdC51c2VyTWVkaWFJRCgpLCB0b1dlYkNv
cmUocmVhc29uKSwgaW52YWxpZENvbnN0cmFpbnQpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKICAgICBVTlVTRURfUEFSQU0oaW52YWxpZENv
bnN0cmFpbnQpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC0tbV9o
YXNQZW5kaW5nQ2FwdHVyZTsKLSAgICB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0sIG1fcGFn
ZS53ZWJQYWdlSUQoKSk7CiAKICAgICBwcm9jZXNzTmV4dFVzZXJNZWRpYVJlcXVlc3RJZk5lZWRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKaW5kZXggMWU5MWFiYjZlZmQuLmI0ODI3NzI5ZDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2
NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lw
ZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRy
ZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xs
ZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwg
Vmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdl
cygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdl
IElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmll
d0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtODYsMTQgKzg2LDE0IEBAIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5KQogICAgIGlmICh3ZWJQYWdlUHJveHkuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgY29ubmVjdFRvUHJvY2VzcygpOwogCi0gICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CisgICAgdmlld0dl
c3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5pZGVudGlmaWVy
KCksIHRoaXMpOwogfQogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNvbnRy
b2xsZXIoKQogewogICAgIHBsYXRmb3JtVGVhcmRvd24oKTsKIAotICAgIHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnNGb3JBbGxQYWdlcygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkucmVtb3ZlKG1fd2ViUGFnZVBy
b3h5LmlkZW50aWZpZXIoKSk7CiAKICAgICBkaXNjb25uZWN0RnJvbVByb2Nlc3MoKTsKIH0KQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
b21Qcm9jZXNzKCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKICAgICBt
X2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gZmFsc2U7CiB9CiAKQEAgLTExMiwxMSArMTEyLDExIEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAgICBpZiAo
bV9pc0Nvbm5lY3RlZFRvUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgp
LCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9pc0Nvbm5lY3RlZFRv
UHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVD
b250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKK1ZpZXdHZXN0dXJlQ29u
dHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gdmlld0dl
c3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlmIChnZXN0
dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCku
ZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmZv
cmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVz
dCA9IHRydWU7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAgIEdlc3R1
cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdlUHJveHku
Zm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRy
b2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC02MTcs
NyArNjE3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVlc3RSZW5kZXJUcmVl
U2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvJiBwcm9jZXNzID0gbV93ZWJQYWdl
UHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFs
UGFnZVByb3h5KCktPnByb2Nlc3MoKSA6IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKTsKICAgICBh
dXRvIHRocmVzaG9sZCA9IG1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5yZW5kZXJUcmVlU2l6ZVRo
cmVzaG9sZCgpOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh0aHJl
c2hvbGQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaAppbmRleCA3Y2Q2ZThmZTA5MS4uMTcxYjViNjg0ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yNyw5ICsyNyw5
IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01v
bm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250
cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgR2Vz
dHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9y
R2VzdHVyZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGlj
IEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVy
ZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1N0b3JlLmNwcAppbmRleCBlYzUzZGQ2YTVkZi4uZDc5ZDdhZDg0NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDIsNiArMTAyLDcgQEAg
dm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGwoKQogCiB2b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hh
cmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKKyAgICAvLyBGSVhNRTogTmVlZHMgdG8gbG9vayB1
cCBXZWJQYWdlUHJveHkgZnJvbSBXZWJQYWdlSUQuCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94
eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKSB7CiAgICAgICAgIGlmICghd2Vi
UGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5k
ZXggYjVhNWM4MjM0ZDguLmM2NWUxNmI5YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAg
ICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQog
CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDgyNzVjZjZlYzk1Li41MzcwMzcxYzRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRl
bUZvcklEKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50CiAgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChpdGVtLT5wYWdlSUQoKSA9PSBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBBU1NFUlQoaXRlbS0+cGFnZUlEKCkgPT0gbV9wYWdlLT5pZGVudGlm
aWVyKCkpOwogICAgIHJldHVybiBpdGVtOwogfQogCkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBX
ZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0ZvcndhcmRMaXN0U3RhdGUg
YmFja0ZvcndhcmRMaXN0U3QKICAgICAvLyBGSVhNRTogRW5hYmxlIHJlc3RvcmluZyByZXNvdXJj
ZURpcmVjdG9yeVVSTC4KICAgICBmb3IgKGF1dG8mIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSA6
IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zKSB7CiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVjdElkZW50
aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPjo6Z2Vu
ZXJhdGUoKSB9OwotICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9wYWdl
LT5wYWdlSUQoKSkpOworICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9w
YWdlLT5pZGVudGlmaWVyKCkpKTsKICAgICB9CiAgICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9y
d2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpiYWNrRm9yd2Fy
ZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OwogICAgIG1fZW50cmllcyA9
IFdURk1vdmUoaXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29t
bWFuZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4uMGZlNmQ4MzQ5ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRD
b21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2Nv
bW1hbmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hN
ZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVy
RWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlJlZG8pOwogfQogCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6cmVhcHBseSgpCiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBseUVkaXRDb21t
YW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1h
bmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRp
dENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlVuZG8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGVlMzM3MTA4MTcwLi5kYjIyNGI2MWNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFt
ZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmws
IHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwg
ZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJh
bWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSwgbV9w
YWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmco
KSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRp
bmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUo
bV9mcmFtZUlEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1l
UHJveHk6OmNhblByb3ZpZGVTb3VyY2UoKSBjb25zdApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQg
V2ViRnJhbWVQcm94eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29sbGFw
c2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDAuLjcyMTI1YjBlZTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmNwcApAQCAtNDQsMjUgKzQ0LDI1IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGdWxsCiAgICAgOiBt
X3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBt
X3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCks
ICp0aGlzKTsKIH0KIAogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkoKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICAgICBtX2NsaWVudC5jbG9zZUZ1
bGxTY3JlZW5NYW5hZ2VyKCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53
aWxsRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4oKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2Ny
ZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEVudGVyRnVsbHNjcmVl
bigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpE
aWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIAogICAgIGlmIChtX3Bh
Z2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRp
b25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtNzMsMTMgKzczLDEzIEBAIHZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVs
bHNjcmVlbkNsaWVudCgpLndpbGxFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1
bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSwgbV9w
YWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpk
aWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRF
eGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAgICAg
CiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBp
ZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC04OSwxMiArODksMTIg
QEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAK
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihi
b29sIGFuaW1hdGluZykKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmltYXRpbmdGdWxsU2NyZWVuKGFuaW1hdGluZyksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3Bh
Z2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJl
cXVlc3RFeGl0RnVsbFNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2Ny
ZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTA4LDI3ICsxMDgsMjcgQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBs
ZXRpb24KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzYXZlU2Nyb2xsUG9zaXRp
b24oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVT
Y3JvbGxQb3NpdGlvbigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0aW9u
KCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c2V0RnVsbHNjcmVlbkluc2V0cyhjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYg
aW5zZXRzKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRzKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGluc2V0cyksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9
CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJh
dGlvbihkdXJhdGlvbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihib29sIGhp
ZGRlbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLndl
YlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
ZjkzZmE2NzY4YTIuLmU2MjFhOGZkODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3RvclByb3h5
OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiB7CiAgICAg
aWYgKGluc3BlY3RlZFBhZ2UgJiYgaW5zcGVjdGVkUGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewogICAgICAgICBtX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0ZWRQYWdlOwotICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgfQogfQog
CkBAIC04OSw3ICs4OSw3IEBAIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
dmFsaWRhdGUoKQogewogICAgIGlmIChtX2luc3BlY3RlZFBhZ2UpCi0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwpAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5z
cGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogICAgIGNyZWF0ZUZy
b250ZW5kUGFnZSgpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Tm90aWZ5TmVlZERlYnVnZ2Vy
QnJlYWsoKSwgMCk7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2hvdygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvdygpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OkNsb3NlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnJlc2V0U3RhdGUoKQogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVzZXQoKQogewogICAgIGlm
IChtX2luc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9p
bnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PndlYlBhZ2VJRCgpKTsKICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsKICAgICB9
CiB9CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp1cGRhdGVG
b3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgQVNTRVJU
KGluc3BlY3RlZFBhZ2UpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVkUGFnZTsK
LSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIAogICAg
IGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6VXBkYXRlQ29ubmVjdGlvbigpLCBtX2lu
c3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
cikKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVu
ZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaQogICAgIGlmICgh
bV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9pbnNwZWN0
ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dD
b25zb2xlKCkKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93
Q29uc29sZSgpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d1Jlc291cmNlcygpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jl
c291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2Uo
KTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yODAsMTkgKzI4MCwxOSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBp
ZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldElu
c3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9p
bnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9pbnNwZWN0
ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsK
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRv
bSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9t
KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9p
bnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDksOCArMzA5
LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2li
bGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAg
IHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zNDMsOSArMzQzLDkgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmls
aW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2Zp
bGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6dG9nZ2xlRWxlbWVudFNlbGVjdGlvbigpCkBAIC0zNTUsMTAgKzM1NSwxMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAg
IGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUpIHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50
U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigp
LCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBj
b25uZWN0KCk7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3Rl
ZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9CiB9CiAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAgdHJhY2tJbnNw
ZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSwgbV9pbnNwZWN0ZWRQYWdlKTsKIAotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFn
ZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTQxMSw3
ICs0MTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9u
dGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAgIGlmICghbV9pbnNwZWN0b3JQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBt
X2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0FjdGl2ZUZy
b250ZW5kKTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIyLDI2ICs0MjIs
MjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQo
Ym9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVkID0gc2hv
dWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2Fz
dDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0
YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQp
LCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFj
aGVkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAg
ICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdo
dDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
Y2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFj
aGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVk
KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCi0gICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5n
VW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQ
YWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIG1fdW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clRlc3RQYWdlVVJMKCkgOiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7
CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKICAg
ICBTZXRGb3JTY29wZTxib29sPiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwogICAgIG1f
aXNWaXNpYmxlID0gdHJ1ZTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1f
aW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAg
ICAgICAgcGxhdGZvcm1BdHRhY2goKTsKQEAgLTQ4NCw4ICs0ODQsOCBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICB1bnRyYWNrSW5z
cGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlz
aWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
bnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBpZiAobV9pc0FjdGl2ZUZyb250ZW5k
KSB7CiAgICAgICAgIG1faXNBY3RpdmVGcm9udGVuZCA9IGZhbHNlOwpAQCAtNTQ4LDcgKzU0OCw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9v
bCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2Ug
JiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0
dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1Vu
YXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwog
CiAgICAgcGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2FuQXR0YWNoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIyZTlhNWFlZWQ2
Li5hMDQzZWNiMjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0yNTYsOCArMjU2LDggQEAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBhc3Nl
cnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24o
KSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdFX0NIRUNL
X0JBU0UoY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJv
Y2VzcywgdXJsKSwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQogCi0jZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNo
YW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIl
cCAtIFtwYWdlUHJveHlJRD0lbGx1LCB3ZWJQYWdlSUQ9JWxsdSwgUElEPSVpXSBXZWJQYWdlUHJv
eHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQor
I2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwg
IiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0lbGx1LCBQSUQ9JWldIFdlYlBhZ2VQ
cm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18p
CiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQg
aW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsK
QEAgLTM5Myw3ICszOTMsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmCiB9CiAKIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikK
LSAgICA6IG1fcGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgIDogbV9pZGVu
dGlmaWVyKElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX3dlYlBhZ2VJRChQYWdlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdl
Q2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQog
ICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xp
ZW50PigpKQpAQCAtNDQxLDcgKzQ0Miw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAjZW5k
aWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3Ry
dWN0b3I6Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkp
CiAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsK
QEAgLTQ3MCw3ICs0NzEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCk7CiAK
LSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3Zl
cnJpZGUocHJlZmVyZW5jZXNTdG9yZSgpLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZUtleSgpKSk7CkBAIC00OTIsOSArNDkzLDkg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKLSAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdl
KG1fcGFnZUlEKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1faWRl
bnRpZmllcikgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGZvciAoV2ViUGFn
ZVByb3h5KiBwYWdlIDogbV9wcm9jZXNzLT5wYWdlcygpKQogICAgICAgICBBU1NFUlQocGFnZSAh
PSB0aGlzKTsKQEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiAgICAgbV91aUNs
aWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1fd2ViUGFnZUlEKTsKIAogICAgIHNl
dENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5lZWRzRm9u
dEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAgLTYzNSw3
ICs2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGlu
Z0NsaWVudChoYXNDbGllbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6
Ok9ic2VydmVyPiYmIG9ic2VydmVyKQpAQCAtNzIzLDEwICs3MjQsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5n
UHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiIFBSSXU2NCk7CiAKICAgICBtX3By
b2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0
YVN0b3JlOjpZZXMpOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgYXV0byYgcHJvY2Vz
c1Bvb2wgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCk7CiAKQEAgLTczOCw3ICs3MzksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpC
ZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMp
OwogCiAgICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKElzUHJvY2Vzc1N3YXA6Ok5vKTsK
IH0KQEAgLTc3OCw3ICs3NzksNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQ
b3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBt
YWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCks
ICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1
c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBz
dXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVz
IiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5n
U3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9t
SXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQg
Zm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0
aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVy
IGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBk
byBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAtNzk2LDcgKzc5Nyw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYm
IGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6Iik7CiAKICAg
ICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9
IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODExLDcgKzgxMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2Vzcywgc3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpC
ZWdpbnNVc2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7
CiAKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoSXNQcm9jZXNzU3dhcDo6WWVzKTsK
IH0KQEAgLTg4MSwxMCArODgyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NG
b3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNs
b3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9z
ZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODkzLDcgKzg5
NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7CiAKICAg
ICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1
cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxv
YWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC05MDYsNyArOTA3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKICAgICB9CiAKICAgICAvLyBXZSBh
bGxvdyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5nIGEgV2ViUHJvY2VzcyB0aGF0J3MgYmVl
biBraWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5k
ZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51
bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4
ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxs
b3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTkxNCwxMCArOTE1LDEwIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJv
Y2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRo
SXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRl
bTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC05MjksNyArOTMwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogICAgIGF1dG8gbmF2
aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24o
aXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIEZyYW1lTG9hZFR5cGU6Oklu
ZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIGl0ZW0u
aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhl
ZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxv
cHQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTYwLDkgKzk2MSw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAgICAgc2V0RHJhd2luZ0FyZWEo
cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdBcmVhUHJveHkobV9wcm9jZXNzKSk7CiAgICAgQVNT
RVJUKG1fZHJhd2luZ0FyZWEpOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nl
c3MsICptX2RyYXdpbmdBcmVhKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBjcmVhdGlvblBhcmFtZXRlcnMo
bV9wcm9jZXNzLCAqbV9kcmF3aW5nQXJlYSkpLCAwKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkVmlz
aXRlZExpbmtTdG9yZVVzZXIodmlzaXRlZExpbmtTdG9yZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcih2aXNpdGVkTGlua1N0b3JlKCksIG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCkBAIC05NzAsNyArOTcx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xv
c2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAt
MTAyMSw5ICsxMDIyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBt
X3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9j
ZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlE
KTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsKIAogICAgIC8vIE51
bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgpAQCAtMTA0MywxNCAr
MTA0NCwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZToiKTsKIAog
ICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIg
Z29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBw
ZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3VkZGVuVGVybWlu
YXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC0xMTE4LDcgKzExMTksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwog
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRS
ZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVu
Y2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTExMzIs
NyArMTEzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lz
Q2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246Iik7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAKQEAgLTExNTQsMTYgKzExNTUsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAg
IGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBt
X3BhZ2VJRCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVl
c3QobG9hZFBhcmFtZXRlcnMpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTExNzIsNyArMTE3Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAg
aWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xMTgyLDcgKzExODMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVz
b3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5
VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwNyw3ICsxMjA4LDcg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2Fk
UGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xMjE1LDEwICsx
MjE2LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiIp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQoIW1faXND
bG9zZWQpOwogCkBAIC0xMjUzLDE5ICsxMjU0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIHBy
b2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwotICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwg
bV9wYWdlSUQpOworICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQYWdlSUQpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUwiKTsK
IAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGlu
ZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBz
dGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQg
dGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4K
ICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JG
YWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVy
KSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjk2LDE2ICsxMjk3LDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCgqdGhpcywgdW5yZWFjaGFibGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJu
YXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2Vi
QXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdl
YkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzIzLDE2ICsxMzI0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQ
YWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9p
bnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0MiwyMCArMTM0MywyMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQ
cm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBz
Y3JlZW5Qb2ludCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInN0b3BMb2FkaW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fd2ViUGFnZUlEKTsKICAgICBpZiAo
bV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgp
OwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0xMzY1LDcgKzEzNjYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0
aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
bG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM5MCw3ICsxMzkxLDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6
OlJlbG9hZE9wdGlvbj4gb3AKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJDb3JlOjpSZWxv
YWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZpZ2F0aW9uLT5z
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSks
IG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCkBAIC0xNDQ2LDcgKzE0NDcsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRl
bSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tG
b3J3YXJkSXRlbToiKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFj
a0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0NTksNyArMTQ2MCw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5n
QVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0o
bmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQo
KSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpu
dWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE0NjcsMTQgKzE0Njgs
MTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9z
aXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQp
CkBAIC0xNTM2LDcgKzE1MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9t
YXRpb24oY29udHJvbGxlZCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0xNTYxLDcgKzE1
NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGlu
ZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU5Nyw3ICsxNTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRh
cmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBT
dHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJn
ZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwog
fQogCkBAIC0xNjA4LDcgKzE2MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29sb3IpCiAKICAgICBtX2JhY2tncm91bmRD
b2xvciA9IGNvbG9yOwogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvciks
IG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTYyNCw5
ICsxNjI1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBj
b250ZW50SW5zZXQpCiAgICAgTWFjaFNlbmRSaWdodCBmZW5jZSA9IG1fZHJhd2luZ0FyZWEtPmNy
ZWF0ZUZlbmNlKCk7CiAKICAgICBhdXRvIGZlbmNlQXR0YWNobWVudCA9IElQQzo6QXR0YWNobWVu
dChmZW5jZS5sZWFrU2VuZFJpZ2h0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNl
ZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNlZChjb250
ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fd2ViUGFnZUlEKTsKICNlbHNlCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVu
dEluc2V0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCksIG1fd2ViUGFnZUlEKTsKICNlbmRp
ZgogfQogCkBAIC0xNjM4LDcgKzE2MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5kZXJs
YXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV91bmRlcmxheUNvbG9yID0gY29sb3I7
CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29s
b3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2ls
bFN0YXJ0TGl2ZVJlc2l6ZSgpCkBAIC0xNjQ3LDE0ICsxNjQ4LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNs
b3NlT3ZlcmxheWVkVmlld3MoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUo
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmll
d1dpbGxFbmRMaXZlUmVzaXplKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUmVnaW9uJiByZWdpb24pCkBAIC0xNzEyLDcg
KzE3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5
SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hh
bmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oQWN0
aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2Vk
KTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdl
UHJveHkgIiA8PCBpZGVudGlmaWVyKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlIC0gbWF5
SGF2ZUNoYW5nZWQgIiA8PCBtYXlIYXZlQ2hhbmdlZCk7CiAKICAgICBtX3BvdGVudGlhbGx5Q2hh
bmdlZEFjdGl2aXR5U3RhdGVGbGFncy5hZGQobWF5SGF2ZUNoYW5nZWQpOwogICAgIG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZVdhbnRzU3luY2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CkBAIC0xNzQ4
LDcgKzE3NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAg
ICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBwYWdlQ2xpZW50KCkudmlld0xh
eWVySG9zdGluZ01vZGUoKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IGxheWVySG9z
dGluZ01vZGUpIHsKICAgICAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5nTW9k
ZTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhv
c3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3Rp
bmdNb2RlKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIH0KIApAQCAtMTc2MSw3ICsxNzYyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0dfV0lUSF9T
VFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQo
KSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSAtIHBvdGVudGlhbGx5Q2hhbmdlZEFj
dGl2aXR5U3RhdGVGbGFncyAiIDw8IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZs
YWdzKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQ
YWdlUHJveHkgIiA8PCBpZGVudGlmaWVyKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFu
Z2UgLSBwb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgIiA8PCBtX3BvdGVudGlh
bGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyk7CiAKICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0
eSBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkgaWRsZSAm
IG9jY2x1ZGVkIGFnbm9zdGljIHN0YXRlLgogICAgIGlmIChtX3BvdGVudGlhbGx5Q2hhbmdlZEFj
dGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKQEAgLTE3NzQsNyAr
MTc3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2Uo
KQogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0aXZpdHlT
dGF0ZTsKIAogICAgIGlmIChjaGFuZ2VkKQotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZp
dHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgcHJldmlvdXNB
Y3Rpdml0eVN0YXRlIDw8ICIgdG8gIiA8PCBtX2FjdGl2aXR5U3RhdGUpOworICAgICAgICBMT0df
V0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBp
ZGVudGlmaWVyKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2U6IHN0YXRlIGNoYW5n
ZWQgZnJvbSAiIDw8IHByZXZpb3VzQWN0aXZpdHlTdGF0ZSA8PCAiIHRvICIgPDwgbV9hY3Rpdml0
eVN0YXRlKTsKIAogICAgIGlmICgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKSAmJiBpc1ZpZXdXaW5kb3dBY3RpdmUoKSkKICAgICAgICAgdXBkYXRlQ3VycmVudE1vZGlm
aWVyU3RhdGUoKTsKQEAgLTE3OTcsNyArMTc5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNw
YXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
ID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKICAgICBpZiAoY2hhbmdlZCB8
fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91
cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZSht
X2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSwgbV93
ZWJQYWdlSUQpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVh
cigpOwogCkBAIC0xODk5LDcgKzE5MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJIb3N0
aW5nTW9kZURpZENoYW5nZSgpCiAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5n
TW9kZTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5n
TW9kZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQpAQCAtMTk0MSwyMSAr
MTk0MiwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwogICAgIH0KIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlz
S2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3Vz
KGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZWxlY3Rpb24o
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxl
Y3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVNl
bGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVT
ZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTE5NjYsNyArMTk2Nyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTc0LDcg
KzE5NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZl
bCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RM
ZXZlbCgpCkBAIC0xOTgyLDcgKzE5ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVhc2VM
aXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RM
ZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VMaXN0VHlwZSgpCkBAIC0xOTkwLDcgKzE5OTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2hhbmdlTGlzdFR5cGUoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
aGFuZ2VMaXN0VHlwZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikKQEAgLTE5OTgsNyArMTk5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCkKQEAg
LTIwMjIsNyArMjAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0ZvbnRBdHRyaWJ1
dGVzKGJvb2wgbmVlZHNGb250QXR0cmlidXRlcykKICAgICBtX25lZWRzRm9udEF0dHJpYnV0ZXMg
PSBuZWVkc0ZvbnRBdHRyaWJ1dGVzOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNGb250QXR0
cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMobmVlZHNG
b250QXR0cmlidXRlcyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Om1h
aW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QKQEAgLTIwNDUsNyArMjA0Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVk
dWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdEFsbCgpCkBAIC0yMDUzLDcgKzIwNTQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0
QWxsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbGVjdEFsbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC0yMDY0LDcgKzIwNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYg
YQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJndW1lbnQsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYg
YXJndW1lbnQpCkBAIC0yMDc3LDcgKzIwNzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQog
ICAgIGlmIChjb21tYW5kTmFtZSA9PSBpZ25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQogICAgICAg
ICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5h
bWUsIGFyZ3VtZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRl
cyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMjA4OCw3ICsyMDg5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3Rh
cnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXR0cmlidXRlc0NhbGxiYWNr
KGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCkBAIC0yMTA5LDcgKzIxMTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRp
dGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RWRpdGFibGUoZWRpdGFibGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KICAg
ICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZChib29sIG11
dGVkKQpAQCAtMjE3NCw5ICsyMTc1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKIAogICAg
IEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0aW9uRGF0YSBz
ZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRy
YWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdEYXRhLmZs
YWdzKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3Np
dGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwgbV93ZWJQYWdl
SUQpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5z
aW9uc0ZvclVwbG9hZCksIG1fd2ViUGFnZUlEKTsKICNlbmRpZgogfQogCkBAIC0yMjA2LDcgKzIy
MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsbwogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0
aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSwgbV93
ZWJQYWdlSUQpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjIxOCwxMyAr
MjIxOSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9v
bCBoYW5kbGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0RHJhZygpCiB7CiAgICAgaWYg
KGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV93ZWJQYWdlSUQpOwogfQog
ICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYWdDYW5jZWxsZWQoKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQpAQCAtMjMyMyw3ICsyMzI0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCgpCiAgICAgfQog
CiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMg
KHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1f
bW91c2VFdmVudFF1ZXVlLnNpemUoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogI2lmIE1FUkdFX1dIRUVMX0VWRU5UUwpAQCAtMjQzMiw3ICsyNDMzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQogewog
ICAgIG1fcHJvY2Vzcy0+c2VuZCgKICAgICAgICAgTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6
V2hlZWxFdmVudCgKLSAgICAgICAgICAgIG1fcGFnZUlELAorICAgICAgICAgICAgbV93ZWJQYWdl
SUQsCiAgICAgICAgICAgICBldmVudCwKICAgICAgICAgICAgIHNob3VsZFVzZUltcGxpY2l0UnVi
YmVyQmFuZENvbnRyb2woKSA/ICFtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKSA6IHJ1YmJl
ckJhbmRzQXRMZWZ0KCksCiAgICAgICAgICAgICBzaG91bGRVc2VJbXBsaWNpdFJ1YmJlckJhbmRD
b250cm9sKCkgPyAhbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCkgOiBydWJiZXJCYW5k
c0F0UmlnaHQoKSwKQEAgLTI0ODMsNyArMjQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAg
ICAgaWYgKG1fa2V5RXZlbnRRdWV1ZS5zaXplKCkgPT0gMSkgeyAvLyBPdGhlcndpc2UsIHNlbnQg
ZnJvbSBEaWRSZWNlaXZlRXZlbnQgbWVzc2FnZSBoYW5kbGVyLgogICAgICAgICBMT0coS2V5SGFu
ZGxpbmcsICIgVUkgcHJvY2Vzczogc2VudCBrZXlFdmVudCBmcm9tIGhhbmRsZUtleWJvYXJkRXZl
bnQiKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVu
dChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpLZXlFdmVudChldmVudCksIG1fd2ViUGFnZUlEKTsKICAgICB9CiB9CiAKQEAgLTI2
NTYsNyArMjY1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICBlbHNlCiAgICAgICAgIHJlc3Bv
bnNpdmVuZXNzVGltZXIuc3RhcnQoKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
RXZlbnREaXNwYXRjaGVyOjpHZXN0dXJlRXZlbnQobV9wYWdlSUQsIGV2ZW50KSwgMCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Okdlc3R1cmVFdmVudCht
X3dlYlBhZ2VJRCwgZXZlbnQpLCAwKTsKIH0KICNlbmRpZgogCkBAIC0yNjg5LDcgKzI2OTAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3VzbHkoTmF0aXZl
V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGlt
ZXIoKS5zdGFydCgpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgcmVwbHlS
ZWNlaXZlZCA9IG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpSZXBseSho
YW5kbGVkKSwgbV9wYWdlSUQsIDFfcywgSVBDOjpTZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRj
aFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7CisgICAgYm9v
bCByZXBseVJlY2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6
OlJlcGx5KGhhbmRsZWQpLCBtX3dlYlBhZ2VJRCwgMV9zLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpG
b3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5
KTsKICAgICAvLyBJZiB0aGUgc3luYyByZXF1ZXN0IGhhcyB0aW1lZCBvdXQsIHdlIHNob3VsZCBj
b25zaWRlciB0aGUgZXZlbnQgaGFuZGxlZC4gVGhlIFdlYiBQcm9jZXNzIGlzIHRvbyBidXN5IHRv
IGFuc3dlciBhbnkgcXVlc3Rpb25zLCBzbyB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgYWxzbyBsaWtl
bHkgdG8gaGF2ZSBpc3N1ZXMuCiAgICAgaWYgKCFyZXBseVJlY2VpdmVkKQogICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKQEAgLTI3MDgsNyArMjcwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dFBvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVzZXRQb3RlbnRpYWxUYXBTZWN1cml0eU9yaWdpbigpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXNldFBvdGVudGlhbFRhcFNlY3Vy
aXR5T3JpZ2luKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVu
dCkKQEAgLTI3MjAsNyArMjcyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2
ZW50QXN5bmNocm9ub3VzbHkoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlCiAgICAgaWYg
KHRvdWNoRXZlbnRzVHJhY2tpbmdUeXBlID09IFRyYWNraW5nVHlwZTo6Tm90VHJhY2tpbmcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6RXZlbnREaXNw
YXRjaGVyOjpUb3VjaEV2ZW50KG1fcGFnZUlELCBldmVudCksIDApOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fd2ViUGFnZUlELCBl
dmVudCksIDApOwogCiAgICAgaWYgKGV2ZW50LmFsbFRvdWNoUG9pbnRzQXJlUmVsZWFzZWQoKSkg
ewogICAgICAgICBtX3RvdWNoQW5kUG9pbnRlckV2ZW50VHJhY2tpbmcucmVzZXQoKTsKQEAgLTI3
NDUsNyArMjc0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQp
IHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9w
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZl
bnQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fdG91Y2hFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZh
bHNlOwpAQCAtMjc2OCwxMiArMjc2OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoUE9J
TlRFUl9FVkVOVFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsUG9pbnRlcihXZWJDb3JlOjpQ
b2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZG9jdW1lbnRQb2lu
dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50
ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRlcihwb2ludGVySWQsIGRvY3VtZW50
UG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaFdpdGhJ
ZGVudGlmaWVyV2FzUmVtb3ZlZChXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldh
c1JlbW92ZWQocG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQocG9pbnRlcklkKSwg
bV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTI3ODIsNyArMjc4Myw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzY3JvbGxCeShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNp
YmxlQXJlYSgpCkBAIC0yNzkwLDcgKzI3OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVy
U2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25T
ZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lvblNlbmRlcj4gewpAQCAtMjkz
Myw3ICsyOTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3By
b3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29t
bWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9u
YWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAKICAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5G
cmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjk0OSwxNCArMjk1MCwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZwogCiAgICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9j
ZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKIAotICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlSUQpOwogICAgIGF1dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0
aW9uKG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBkaWRTdXNw
ZW5kUHJldmlvdXNQYWdlID0gbmF2aWdhdGlvbiA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoKm5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkgOiBmYWxzZTsKICAgICBt
X3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9
PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQ
cm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVu
ZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBi
ZSBhYmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9z
ZSBpdC4KICAgICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCi0gICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgcGFnZUlEKCkpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fd2ViUGFnZUlEKTsK
IAogICAgIHN3YXBUb1dlYlByb2Nlc3MobV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKSwgbV9w
cm92aXNpb25hbFBhZ2UtPnRha2VEcmF3aW5nQXJlYSgpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+bWFp
bkZyYW1lKCkpOwogCkBAIC0yOTczLDcgKzI5NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29t
bWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZp
ZwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJv
Y2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJv
Y2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQ
SUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGlu
dWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBu
YXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CiAK
ICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKQEAgLTI5OTgsNyArMjk5OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpICYmIChuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0b3J5OjpZ
ZXMpKSB7CiAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlz
dG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFi
b3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCiAgICAgICAgIC8v
IGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgotICAgICAgICBuZXdQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaCht
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpLCBtX3BhZ2VJRCk7
CisgICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRI
aXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5p
dGVtU3RhdGUoKSksIG1fd2ViUGFnZUlEKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV29yayBv
dXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0
YwpAQCAtMzA0OCw3ICszMDQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChT
dHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVz
ZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwODUsNyArMzA4Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAg
ICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzA5
NSw3ICszMDk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBj
b25zdApAQCAtMzExMiw3ICszMTEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1l
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJv
b2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMTM0LDcg
KzMxMzUsNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpG
dW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBz
ZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZy
b21TZXNzaW9uU3RhdGU6Iik7CiAKICAgICBtX3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVT
aXplID0gMDsKICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkID0gZmFsc2U7CkBAIC0z
MTUwLDcgKzMxNTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogICAgICAgICBsYXVuY2hJ
bml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3Qt
PnJlc3RvcmVGcm9tU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3Rh
dGUpKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVT
ZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbihtX2Jh
Y2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgICAgIGF1
dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICAgICAg
bV9wYWdlTG9hZFN0YXRlLnNldENhbkdvQmFjayh0cmFuc2FjdGlvbiwgbV9iYWNrRm9yd2FyZExp
c3QtPmJhY2tJdGVtKCkpOwpAQCAtMzE5OCw3ICszMTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFRleHRab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRUZXh0Wm9vbUZhY3RvcihtX3RleHRab29tRmFjdG9yKSwgbV9wYWdl
SUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRab29t
RmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKQEAgLTMyMTMsNyAr
MzIxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9v
bUZhY3RvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZVpvb21GYWN0
b3IobV9wYWdlWm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFj
dG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikKQEAgLTMy
MjksNyArMzIzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRaCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9vbUZhY3Rv
ciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0
b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGRvdWJsZSBXZWJQYWdl
UHJveHk6OnBhZ2Vab29tRmFjdG9yKCkgY29uc3QKQEAgLTMyNTksNyArMzI2MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3Jp
Z2luKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2Uoc2NhbGUsIG9y
aWdpbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoZG91YmxlIHNjYWxlLCBjb25zdCBJ
bnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpCkBAIC0zMjcxLDcgKzMyNzIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoZG91YmxlIHNjYWxl
LCBjb25zdCBJbnRQb2ludCYgY2VudAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
Y2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2Fs
ZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVZpZXcoZG91YmxlIHNj
YWxlKQpAQCAtMzI4Myw3ICszMjg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlVmlldyhk
b3VibGUgc2NhbGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlVmlldyhz
Y2FsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjYWxlVmlldyhzY2FsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQpAQCAtMzMw
Miw3ICszMzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlz
cGxheUlEKSwgbV93ZWJQYWdlSUQpOwogfQogCiBmbG9hdCBXZWJQYWdlUHJveHk6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKQEAgLTMzNDEsNyArMzM0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRp
bmdzRGlkQ2hhbmdlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCkBAIC0zMzU4LDcgKzMzNTksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChm
aXhlZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5
b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMzM3MSw3ICszMzcyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6ZSksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVk
TGF5b3V0U2l6ZShzaXplKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250
YWxTY3JvbGxlcikKQEAgLTMzODQsNyArMzM4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRB
bHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzSG9yaXpvbnRh
bFNjcm9sbGVyKGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIo
Ym9vbCBhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIpCkBAIC0zMzk3LDcgKzMzOTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVy
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykK
QEAgLTM0MTAsNyArMzQxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlvdXRN
aWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25l
cyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1
cHByZXNzQW5pbWF0aW9ucykKQEAgLTM0MjMsNyArMzQyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5p
bWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3Vw
cHJlc3NBbmltYXRpb25zKSwgbV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
cnViYmVyQmFuZHNBdExlZnQoKSBjb25zdApAQCAtMzQ3NSw3ICszNDc2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhib29sIGVuYWJsZVZlcnRp
Y2FsUnViYmVyQmFuZGkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxl
VmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZl
cnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6dmVydGljYWxSdWJiZXJCYW5kaW5n
SXNFbmFibGVkKCkgY29uc3QKQEAgLTM0OTIsNyArMzQ5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhib29sIGVuYWJsZUhvcml6b250YWxS
dWJiZXJCCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZUhvcml6b250
YWxSdWJiZXJCYW5kaW5nKGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlSG9yaXpv
bnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6aG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzUwOSw3ICszNTEwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShib29sIGJhY2tncm91bmRFeHRlbmRz
QmV5b25kUGEKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4
dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoKSBj
b25zdApAQCAtMzUyNiw3ICszNTI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRp
b25Nb2RlKFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZSkKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVo
YXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQpAQCAtMzUzOCw3ICszNTM5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMo
Ym9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3Ro
KQpAQCAtMzU1MCw3ICszNTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VMZW5ndGgo
ZG91YmxlIHBhZ2VMZW5ndGgpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBh
Z2VMZW5ndGgocGFnZUxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdlcyhkb3VibGUgZ2FwKQpA
QCAtMzU2Miw3ICszNTYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdl
cyhkb3VibGUgZ2FwKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3
ZWVuUGFnZXMoZ2FwKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBsaW5lR3Jp
ZEVuYWJsZWQpCkBAIC0zNTc0LDcgKzM1NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFn
aW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlkRW5hYmxlZCkKICAgICAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQobGlu
ZUdyaWRFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlU2NhbGVGYWN0b3JEaWRD
aGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9yKQpAQCAtMzU5OSwzMiArMzYwMCwzMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRP
cHRpb25zIG9wdGlvbnMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9u
cywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hD
b3VudCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5k
U3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRp
b25zLCBtYXhNYXRjaENvdW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJ
bmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0RmluZE1hdGNoKG1h
dGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluZGljYXRlRmluZE1hdGNo
KG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbmRpY2F0ZUZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZUZpbmRVSSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlRmluZFVJKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQpAQCAt
MzYzMiw3ICszNjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhW
ZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTM2NDMsNyArMzY0NCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2Vz
LCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQs
IHNlbGVjdGlvbk9ubHksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNl
cyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNl
c3NhcnkoKQpAQCAtMzY2OCwxNCArMzY2OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3
b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFt
ZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCkBAIC0zNjg2LDcgKzM2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdAogICAgIH0K
ICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTM2OTgsNyArMzY5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRT
b3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxi
YWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNl
Rm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1l
LT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3MTAs
NyArMzcxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhCiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0zNzIxLDcgKzM3MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBB
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc0F0dHJp
YnV0ZWRTdHJpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTM3MzQsNyArMzczNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50
U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVBy
b2ZpbGUoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Niw3
ICszNzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTM3NTgsNyArMzc1OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRh
KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMzc3MCw3ICszNzcx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc4MSw3ICszNzgyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGIKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKQEAgLTM3OTIsNyArMzc5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248
dm9pCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9t
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKQEAgLTM4MDMsNyArMzgwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAgICAg
fQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmco
KSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNv
dXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwg
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTM4MTQsNyArMzgxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJ
CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hp
dmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4m
JiBjYWxsYmFjaykKQEAgLTM4NDgsNyArMzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3Jj
ZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiBzdGF0aWMg
T3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRpbmdTZW5kT3B0aW9ucyhib29sIGlzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKQpAQCAtMzg3NCw3ICszODc1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICAvLyBldmVuIGlmIG5vdGhpbmcg
Y2hhbmdlZCBpbiBVSSBwcm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KIAog
ICAgIC8vIFByZWZlcmVuY2VzIG5lZWQgdG8gYmUgdXBkYXRlZCBkdXJpbmcgc3luY2hyb25vdXMg
cHJpbnRpbmcgdG8gbWFrZSAicHJpbnQgYmFja2dyb3VuZHMiIHByZWZlcmVuY2Ugd29yayB3aGVu
IHRvZ2dsZWQgZnJvbSBhIHByaW50IGRpYWxvZyBjaGVja2JveC4KLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3Rv
cmUoKSksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIG1fd2ViUGFnZUlELCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKQEAgLTQwMDQsOCArNDAwNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0
aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBu
YXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlv
bklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nl
c3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQ
Ukl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRC50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC00MDU4
LDcgKzQwNTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFt
ZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1l
SUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZy
YW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MDg3LDcgKzQwODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRl
bGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQu
dG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNDEwMCw3ICs0MTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY28K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQx
NDcsOCArNDE0OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBX
aWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGlu
ZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlk
ICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIs
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBw
cm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDIyNiw5ICs0
MjI3LDkgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
OjpGbGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRv
Y3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcp
IFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdh
dGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAg
TE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1p
dExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2Fy
ZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFj
a0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBm
cmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0Niw3ICs0MjQ3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWcKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IGN1cnJlbnREb21haW4geyBjdXJyZW50UmVxdWVzdC51cmwoKSB9OwogICAgICAgICAgICAgVVJM
IHJlcXVlc3RlclVSTCB7IFVSTCgpLCByZXF1ZXN0ZXJPcmlnaW4udG9TdHJpbmcoKSB9OwogICAg
ICAgICAgICAgaWYgKCFjdXJyZW50RG9tYWluLm1hdGNoZXMocmVxdWVzdGVyVVJMKSkKLSAgICAg
ICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZGlkQ29tbWl0Q3Jvc3NTaXRlTG9h
ZFdpdGhEYXRhVHJhbnNmZXIobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgUmVnaXN0
cmFibGVEb21haW4geyByZXF1ZXN0ZXJVUkwgfSwgY3VycmVudERvbWFpbiwgbmF2aWdhdGlvbkRh
dGFUcmFuc2ZlciwgbV9wYWdlSUQpOworICAgICAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5kaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihtX3dlYnNpdGVE
YXRhU3RvcmUtPnNlc3Npb25JRCgpLCBSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RlclVSTCB9
LCBjdXJyZW50RG9tYWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBtX3dlYlBhZ2VJRCk7CiAg
ICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTQzNDAsNyArNDM0MSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDM2
NCw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjQKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkg
JXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5h
dmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmlu
aXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQs
IGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC00NDA5LDcgKzQ0MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywg
Y29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVz
LCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ0NTEsNyArNDQ1Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDYzNyw3ICs0NjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAgICBNRVNT
QUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAogICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVj
aXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5
UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFy
Z3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4u
KSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogCiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlP
cmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZN
b3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKQEAgLTQ5MDgsNyArNDkwOSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8gc2Vu
ZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURd
IChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFy
Z3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICB9KTsKIAogICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3Zl
KHNlbmRlcikpOwpAQCAtNDk1Nyw3ICs0OTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5n
V2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyld
IChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdz
Li4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3Mu
Li4pLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTQ5OTQsNyArNDk5NSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsU3VibWl0Rm9ybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJZGVu
dGlmaWVyIHNvdXJjCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZyYW1lKTsK
IAogICAgIG1fZm9ybUNsaWVudC0+d2lsbFN1Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwgKnNvdXJj
ZUZyYW1lLCB0ZXh0RmllbGRWYWx1ZXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdKCkgewotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwg
bGlzdGVuZXJJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVySUQpLCBt
X3dlYlBhZ2VJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTUwMTAsNyArNTAxMSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFT
aGFyZWQ6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50
KCkpOwogCkBAIC01MDMwLDcgKzUwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJhbWVJRCA9ICUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwNTcsNyArNTA1OCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3Q6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC01MTAwLDcgKzUxMDEsNiBAQCBzdGF0aWMgdm9pZCB0cnlTT0F1dGhvcml6
YXRpb24oUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBXZQog
I2lmIEhBVkUoQVBQX1NTTykKICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zb0F1dGhvcml6
YXRpb25Db29yZGluYXRvcigpLnRyeUF1dGhvcml6ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24p
LCBwYWdlLCBXVEZNb3ZlKG5ld1BhZ2VDYWxsYmFjayksIFdURk1vdmUodWlDbGllbnRDYWxsYmFj
aykpOwogI2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKHBhZ2UsIHBhZ2UucGFnZUlEKCkpOwogICAg
IHVpQ2xpZW50Q2FsbGJhY2soV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShuZXdQ
YWdlQ2FsbGJhY2spKTsKICNlbmRpZgogfQpAQCAtNTEyMCw3ICs1MTIwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLAogCiAgICAgICAgIG5ld1BhZ2UtPnNldE9wZW5lZEJ5RE9NKCk7CiAKLSAg
ICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVy
cyhtX3Byb2Nlc3MsICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CisgICAgICAgIHJlcGx5KG5l
d1BhZ2UtPndlYlBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMobV9wcm9jZXNz
LCAqbmV3UGFnZS0+ZHJhd2luZ0FyZWEoKSkpOwogCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxk
U3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJl
RXF1YWwoVVJMKHsgfSwgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CiAKQEAgLTU0NTEs
NyArNTQ1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0CiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBT
aGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wgYWNjZXNzKSB7Ci0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2Vz
cywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNzLCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dTaGFyZVNo
ZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQ4Myw3ICs1
NDgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVt
ZSksIG1fcGFnZUlEKTsgICAgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mg
c3RhdGUpCkBAIC01NDk5LDcgKzU0OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQo
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVh
bXNFeGNlcHRJbigqdGhpcyk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0ZSksIG1fd2ViUGFnZUlEKTsKICAg
ICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rp
dml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NTIxLDcgKzU1MjEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSwgbV93ZWJQYWdlSUQp
OwogI2VuZGlmCiB9CiAKQEAgLTU1MzAsNyArNTUzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
dG9wQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU1NDIs
NyArNTU0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNr
KCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTU1NCw3ICs1NTU0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC01
NTYzLDcgKzU1NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRp
YUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1l
bnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAtNTU3MSw3ICs1NTcxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1
bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWb2x1bWVPZk1lZGlhRWxl
bWVudCh2b2x1bWUsIGVsZW1lbnRJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC01
NTg1LDcgKzU1ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQp
OworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlh
V2hlbkluV2luZG93KG1heVN0YXJ0TWVkaWEpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQp
CkBAIC01NjMyLDcgKzU2MzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlQ29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDaG9vc2VDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQpAQCAtNTY0MSw3
ICs1NjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNrZXIoKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNr
ZXIoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTU2NzUsNyArNTY3NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24gPSBudWxscHRyOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2xvc2VTdWdnZXN0aW9ucygpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1
Z2dlc3Rpb25zKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNl
bGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQpAQCAtNTY4Myw3ICs1Njgz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNl
bGVjdGVkT3B0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RE
YXRhTGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVk
T3B0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTU3MzYsNyArNTczNiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2so
Ym9vbCBhbGxvd3MpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjayA9IGFsbG93czsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93cyksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93
c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3dlYlBhZ2VJRCk7CiB9CiAj
ZW5kaWYKIApAQCAtNTc2NCw3ICs1NzY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY28KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmJiBpdGVtU3RhdGUpCiB7Ci0gICAgYXV0byBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKFdURk1vdmUoaXRlbVN0YXRlKSwgcGFnZUlEKCkpOworICAgIGF1dG8gaXRl
bSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGl0ZW1TdGF0ZSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgaXRlbS0+c2V0UmVzb3VyY2VEaXJlY3RvcnlVUkwoY3VycmVudFJl
c291cmNlRGlyZWN0b3J5VVJMKCkpOwogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJdGVtKFdU
Rk1vdmUoaXRlbSkpOwogfQpAQCAtNTkxOCwxNyArNTkxOCwxNyBAQCBJUEM6OkNvbm5lY3Rpb24q
IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRf
dCBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlSUQudG9V
SW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVu
dShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhG
b3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JB
Y3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQ
cm94eSosIGludDMyX3QgaW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGluZGV4KSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBvcHVw
TWVudShpbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmlzUHJv
Y2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkgY29uc3QKQEAgLTU5NjMsMTMgKzU5NjMsMTMgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSwg
bWFrZSBzdXJlIHdlIGxhdW5jaCB0aGUgaW5pdGlhbCBwcm9jZXNzIGlmIHRoZSBjbGllbnQgYXNr
cyB0byBwb3N0IGEgbWVzc2FnZSB0byBpdHMgaW5qZWN0ZWQgYnVuZGxlIGJlZm9yZSBkb2luZyBh
IGxvYWQuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2Uo
bWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVz
ZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5n
ZXQoKSkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGYWlsZWRUb1Nob3dQb3B1cE1l
bnUoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTYwMzYsNyArNjAzNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYm
IGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvdygpOwog
CiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUs
IGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28g
aXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MTE0LDEyICs2
MTE0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25z
dCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9y
SWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRl
bUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51
Rm9yS2V5RXZlbnQoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQogCkBAIC02MTM1LDEwICs2MTM1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmls
ZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVz
RnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyksIG1fd2ViUGFnZUlEKTsKICNl
bmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxh
eVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRh
UmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNv
bihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVy
ZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX29w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTYzLDEwICs2MTYzLDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRl
bnNpb25IYW5kbGVzKSwgbV93ZWJQYWdlSUQpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxz
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBt
X29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTc3LDcgKzYxNzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpLCBtX3dl
YlBhZ2VJRCk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0
ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjE4NSw3
ICs2MTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkK
QEAgLTYxOTMsNyArNjE5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1Rv
V29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5n
ZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29yZCh3b3JkKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRp
dENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKQEAg
LTYyMTIsNyArNjIxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFuZChX
ZWJFZGl0Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlRWRpdENv
bW1hbmQoY29tbWFuZC5jb21tYW5kSUQoKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQ
YWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjMwMSwxMiArNjMwMSwxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBU
ZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChy
ZXF1ZXN0SUQsIHJlc3VsdCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVz
dElEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCksIG1fd2ViUGFnZUlEKTsKIH0KIC8vIE90
aGVyCiAKQEAgLTY0MzUsNyArNjQzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
RXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNh
blByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAg
ICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhh
bmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQi
KTsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZl
bnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5m
aXJzdCgpKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGNhbGwg
dG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAtNjc5OSw3ICs2
Nzk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hhbmdlZChj
b25zdCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+JgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CkBAIC02ODExLDcgKzY4MTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJv
Y2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY5MDYsNyArNjkwNiw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
biByZWFzb24pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5h
dGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGU6IHdlYlBJRCA9
ICVpLCByZWFzb24gPSAlZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29u
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NE
aWRUZXJtaW5hdGU6IHJlYXNvbiA9ICVkIiwgcmVhc29uKTsKIAogICAgIGJvb2wgaGFuZGxlZEJ5
Q2xpZW50ID0gZmFsc2U7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQpAQCAtNzMyOSw3ICs3MzI5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVw
YWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRhcywg
c2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdhbWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0YXMsIHNob3Vs
ZE1ha2VHYW1lcGFkc1Zpc2libGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtNzYz
NCw3ICs3NjM0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Ny
b2xsRXZlbnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNp
dGVQb2xpY2llcyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03NjQ0LDcgKzc2NDQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRS
ZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2Fy
ZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwp
CkBAIC03NjU3LDcgKzc2NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwo
Ym9vbCBjYW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2Fu
UnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCkBAIC03NjcxLDcg
Kzc2NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBt
X3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0
aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbyksIG1fd2ViUGFnZUlELCBwcmludGluZ1Nl
bmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc2ODAsNyArNzY4MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblBy
aW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNr
KQpAQCAtNzY5Myw3ICs3NjkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzcwNiw3ICs3NzA2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUt
PmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9u
KSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1h
Z2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAg
LTc3MTgsNyArNzcxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwg
Y291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZp
cnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25z
KG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdU
SykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2Fs
bGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NzMxLDcgKzc3MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50
SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAg
ICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGlu
Z01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
d1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc3NzYsNyArNzc3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVNpemVGb3JBdXRvTGF5
b3V0KHNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoc2l6ZSksIG1fd2ViUGFnZUlEKTsKICAg
ICBtX2RyYXdpbmdBcmVhLT5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXREaWRDaGFuZ2UoKTsKIAog
I2lmIFVTRShBUFBLSVQpCkBAIC03Nzk1LDcgKzc3OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChib29sIHNob3VsZEV4cGFuZCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXV0b1NpemluZ1Nob3VsZEV4cGFu
ZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVp
Z2h0KHNob3VsZEV4cGFuZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplKQpAQCAtNzgwOCw3ICs3ODA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXoKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyh2aWV3cG9ydFNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdw
b3J0U2l6ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBM
QUNFTUVOVCkKQEAgLTc4NzksNyArNzg3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYKIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIHJlc3VsdCkKIHsKICAgICBpZiAoIWlzQ2xvc2VkKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVz
dWx0KSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpAQCAtNzkyMCw3ICs3OTIwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0
aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0
aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNv
bXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlv
bkxlbmd0aCkKQEAgLTc5MjgsNyArNzkyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJt
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0
aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24o
Y29tcG9zaXRpb25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCkBA
IC03OTM2LDcgKzc5MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24o
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCksIG1f
cGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29t
cG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIApA
QCAtNzk1Myw3ICs3OTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICBtX3Njcm9sbFBpbm5p
bmdCZWhhdmlvciA9IHBpbm5pbmc7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHls
ZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxl
KQpAQCAtNzk3MSw3ICs3OTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3Jv
bGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3QKICAgICAgICAg
c2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0
eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2Vz
cygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9s
bGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
I2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtODAxNiw3ICs4MDE2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbUNv
bnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKG1pbWVUeXBlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0
ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtODAyNCw3ICs4
MDI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQp
OworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250QXR0cmli
dXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCkBAIC04MDMy
LDcgKzgwMzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250
Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdl
Rm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwNDAsNyArODA0MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQogewog
ICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0
VGV4dE9wdGlvbnMmJiBvcHRpb25zKQpAQCAtODA0OCw3ICs4MDQ4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmVwbGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5
bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSksIG1fcGFnZUlEKTsK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRl
eHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC04MDU3LDcgKzgwNTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjayksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5j
dGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC04MDY4LDcgKzgwNjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFy
a2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJr
ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhX
VEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKQEAgLTgwNzksNyArODA3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2Us
IENhbGxiCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdURjo6RnVu
Y3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCkBAIC04MDkwLDcgKzgwOTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgVwogICAg
IH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3lu
Yyhwb2ludCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBy
YW5nZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
QEAgLTgxMDEsNyArODEwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdUCiAgICAgfQogCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBz
ZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKQpAQCAt
ODExMiw3ICs4MTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21w
b3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCByZXBsYWNlbWVu
dFJhbmdlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCBy
ZXBsYWNlbWVudFJhbmdlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAtODEyMCw3ICs4MTIwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTgxNDUsNyArODE0NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXpl
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9uCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYWtlU25hcHNob3QocmVjdCwgYml0bWFwU2l6ZSwgb3B0
aW9ucywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlv
bkdlc3R1cmVEaWRCZWdpbigpCkBAIC04MzAzLDcgKzgzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhSZWY8Tm93UGxheWluZ0luZm9D
YWxsYmFjawogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAg
ICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5m
byhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxs
YmFjayhib29sIGhhc0FjdGl2ZVNlc3Npb24sIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBl
bGFwc2VkVGltZSwgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpAQCAtODM0NiwyMiArODM0NiwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0
b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8QQogI2lm
IFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdEF0TG9jYXRpb24oRmxvYXRQb2ludCBwb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2Nh
dGlvbihwb2ludCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihwb2ludCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZFVw
ZGF0ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlh
dGVBY3Rpb25EaWRVcGRhdGUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRD
YW5jZWwoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVk
aWF0ZUFjdGlvbkRpZENvbXBsZXRlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RS
ZXN1bHREYXRhJiByZXN1bHQsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQpAQCAtODM3Niw3ICs4Mzc2LDcgQEAgTlNPYmplY3QgKldlYlBhZ2VQ
cm94eTo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQo
UmVmUHQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGFjY2Vw
dGVkQ2FuZGlkYXRlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRIYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZSgpCkBAIC04Mzk0LDE3ICs4Mzk0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VT
eXN0ZW1BcHBlYXJhbmNlKGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJh
bmNlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSwgbV93ZWJQYWdlSUQp
OwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEhlYWRlckJhbm5lckhlaWdodEZvclRl
c3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEhlYWRlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVySGVp
Z2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb290ZXJCYW5uZXJIZWlnaHRG
b3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV93
ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTg0MzAsNyArODQzMCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIG5ld1NpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMoYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1
dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtODQ3OSw3ICs4
NDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNv
bnRleHRJZCwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0
Q29udGV4dCgpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29u
dGV4dCgpKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBib29sIGF2
YWlsYWJsZSkKQEAgLTg0ODcsNyArODQ4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RGlkQ2hhbmdlKGNvbnRleHRJZCwgYXZhaWxhYmxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRD
aGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgc2hvdWxkUGxheSkKQEAgLTg0OTUsNyArODQ5NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgc2hvdWxkCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgog
CkBAIC04NTIxLDcgKzg1MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJXaGVlbEV2ZW50
VGVzdFRyaWdnZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJX
aGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
KQpAQCAtODU0NCw3ICs4NTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxl
Vmlld1RvRml0RG9jdW1lbnQoYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3UKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChz
aG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChz
aG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKQEAgLTg1NjQsNyArODU2NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNv
cmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAoYm9v
bCljYWxsYmFja0Z1bmN0aW9uOwogICAgICAgICBhdXRvIG5ld0NhbGxiYWNrSWRlbnRpZmllciA9
IGRlY2lzaW9uID8gT3B0aW9uYWxDYWxsYmFja0lEKG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwogCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lv
biwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSWRlbnRpZmllciksIG1fcGFnZUlEKTsKKyAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVy
KSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogfQogCkBAIC04NTgzLDcgKzg1ODMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWQoZGlzYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJQYWdlUHJv
eHk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQpAQCAtODU5Niw3ICs4NTk2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oV2ViQ29y
ZTo6VXNlckludGVyZmFjZUxheW91dEQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4odXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbikpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0
YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVWYWxpZGF0aW9uTWVzc2FnZSgp
CkBAIC04NjQzLDE0ICs4NjQzLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBbGxvd1BvaW50
ZXJMb2NrKCkKICAgICBDR0Rpc3BsYXlIaWRlQ3Vyc29yKENHTWFpbkRpc3BsYXlJRCgpKTsKICAg
ICBDR0Fzc29jaWF0ZU1vdXNlQW5kTW91c2VDdXJzb3JQb3NpdGlvbihmYWxzZSk7CiAjZW5kaWYK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZERlbnlQb2ludGVyTG9jaygpCiB7CiAgICAgQVNTRVJUKG1faXNQb2lu
dGVyTG9ja1BlbmRpbmcgJiYgIW1faXNQb2ludGVyTG9ja2VkKTsKICAgICBtX2lzUG9pbnRlckxv
Y2tQZW5kaW5nID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkK
QEAgLTg2NjEsMTIgKzg2NjEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKICAgICAgICAgQ0dEaXNwbGF5U2hvd0N1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7
CiAjZW5kaWYKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fd2ViUGFnZUlEKTsKICAgICB9CiAKICAgICBp
ZiAobV9pc1BvaW50ZXJMb2NrUGVuZGluZykgewogICAgICAgICBtX3VpQ2xpZW50LT5kaWRMb3Nl
UG9pbnRlckxvY2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIAogICAgIG1faXNQb2ludGVyTG9ja2VkID0gZmFsc2U7
CkBAIC04Njg3LDcgKzg2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFu
ZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbAogICAgIGF1dG8g
aWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoaWRlbnRpZmll
clJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZp
ZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVu
dGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IFdlYlVSTFNjaGVtZUhhbmRsZXIqIFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKQEAgLTg3MzUsNyArODczNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2
YWxlbnRSZXNvdXJjZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oldhc0xvYWRl
ZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2FzTG9hZGVkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApA
QCAtODc1NCw3ICs4NzU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVmZmVjdGl2ZUFwcGVhcmFu
Y2VEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFZmZlY3RpdmVB
cHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNlKCksIHVzZUVsZXZhdGVkVXNlcklu
dGVyZmFjZUxldmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNl
KCksIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTg3OTMsNyArODc5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwg
RnVuY3Rpb248CiAKICAgICBhdXRvIGF0dGFjaG1lbnRJZGVudGlmaWVyID0gYXR0YWNobWVudC0+
aWRlbnRpZmllcigpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0
dGFjaG1lbnQoYXR0YWNobWVudElkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlz
cGxheSgpLCBhdHRhY2htZW50LT5maWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgp
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVu
dC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1l
bnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9hdHRh
Y2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoYXR0YWNobWVudElkZW50aWZpZXIs
IFdURk1vdmUoYXR0YWNobWVudCkpOwogfQogCkBAIC04ODA5LDcgKzg4MDksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2ht
ZW50JiBhdHRhY2htZW50LAogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAqZGF0YSB9OwogCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5
KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZN
b3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0
YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0
dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRh
dGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpAQCAtODk2
OSw3ICs4OTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3Qo
RnVuY3Rpb248dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjoKIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRp
ZgogCkBAIC05MDMzLDcgKzkwMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwb3J0UGFnZUxv
YWRSZXN1bHQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXREZWZlcnNMb2FkaW5nRm9yVGVzdGluZyhib29sIGRlZmVyc0xvYWRpbmcpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVy
c0xvYWRpbmcpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJc1ZpZXdWaXNpYmxlKGJvb2wmIHJlc3VsdCkKQEAgLTkw
NDUsNyArOTA0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVDdXJyZW50TW9kaWZpZXJT
dGF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dT
RVJWRVJfQkxPQ0tJTkcpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBtb2RpZmll
cnMgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRTdGF0ZU9mTW9kaWZpZXJLZXlzKCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9k
aWZpZXJTdGF0ZShtb2RpZmllcnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShtb2RpZmllcnMpLCBt
X3dlYlBhZ2VJRCk7CiAjZW5kaWYKIH0KIApAQCAtOTA4NywxOSArOTA4NywxOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24o
V2ViUHJvY2Vzc1Byb3h5JgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2ltdWxhdGVEZXZpY2VPcmll
bnRhdGlvbkNoYW5nZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaW11bGF0ZURldmljZU9y
aWVudGF0aW9uQ2hhbmdlKGFscGhhLCBiZXRhLCBnYW1tYSksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25D
aGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJh
bWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5
cGVzKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTkyNjks
NyArOTI2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0
c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0
SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtOTI3OSw3ICs5Mjc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBD
b21wbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0
Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIExvZ2dlciYgV2ViUGFnZVByb3h5Ojps
b2dnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1ODdhZWE4
NWNhYi4uYzlmODExZmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKQEAgLTM5Miw3ICszOTMsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0OwogCi0gICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICB1c2luZyBJ
ZGVudGlmaWVyID0gV2ViUGFnZVByb3h5SWRlbnRpZmllcjsKKworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CiAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMjExMyw3ICsyMTE3
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOworICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFdlYWtQdHI8UGFnZUNsaWVu
dD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmNhMGJi
MzJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBlPjsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDQ1OWE5ZDNhNGE4Li42
YjgyMjZkNjNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMzA5LDYgKzMwOSw5IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICBub3RpZnlUaGlz
V2ViUHJvY2Vzc1Bvb2xXYXNDcmVhdGVkKCk7CiAKICAgICB1cGRhdGVNYXhTdXNwZW5kZWRQYWdl
Q291bnQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuIFRoaXMgaXMgbWVyZWx5
IHVzZWQgdG8gbWFrZSB0aGUgV2ViUGFnZVByb3h5ICYgdGhlIFdlYlBhZ2UgaWRlbnRpZmllcnMg
ZGlmZmVyZW50LCB0byBoZWxwIGNhdGNoIGJ1Z3MuCisgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7IFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOyBQYWdlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKIFdlYlByb2Nlc3NQb29sOjp+
V2ViUHJvY2Vzc1Bvb2woKQpAQCAtMTMwNyw5ICsxMzEwLDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9v
bDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3Jl
JiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dl
YnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPigpKS5pdGVyYXRv
ci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJ
RHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0
YVN0b3JlLnNlc3Npb25JRCgpOwpAQCAtMTMyNyw3ICsxMzMwLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2Vic2kKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dl
YnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAg
ICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBhZjE2Y2VmOGQy
OC4uMDg2ZTM4NmE2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtMjA5LDggKzIwOSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
IAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAg
ICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikg
Y29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAgLTc4Myw3
ICs3ODMsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhzOwog
Ci0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7
CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2EzNjI0OGZlYTYu
LjY0YjMxZjc1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTM1MSwxMSArMzUxLDIyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93
bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdl
YlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCkuZ2V0KHBhZ2VJ
RCk7CiB9CiAKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKK3sKKyAgICAvLyBGSVhNRTogRG8gYmV0dGVyLgor
ICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKS52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAocGFnZS0+d2ViUGFnZUlEKCkgPT0gd2ViUGFnZUlEKQorICAgICAgICAgICAgcmV0dXJu
IHBhZ2U7CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQ
YWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKCkKIHsKQEAgLTM5MywxNiArNDA0
LDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojph
ZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBCZWdpbnNVc2luZ0RhdGFT
dG9yZSBiZWdpbnNVc2luZ0RhdGFTdG9yZSkKIHsKLSAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250
YWlucyh3ZWJQYWdlLnBhZ2VJRCgpKSk7Ci0gICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29u
dGFpbnMod2ViUGFnZS5wYWdlSUQoKSkpOworICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5z
KHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29u
dGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0lu
UHJvY2Vzc0NhY2hlKTsKICAgICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBtX3dlYnNp
dGVEYXRhU3RvcmUgPT0gJndlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAgIGlmIChi
ZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKQotICAgICAg
ICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5w
YWdlSUQoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3NQ
b29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCks
IHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAotICAgIG1fcGFnZU1hcC5zZXQod2ViUGFn
ZS5wYWdlSUQoKSwgJndlYlBhZ2UpOwotICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQod2ViUGFnZS5w
YWdlSUQoKSwgJndlYlBhZ2UpOworICAgIG1fcGFnZU1hcC5zZXQod2ViUGFnZS5pZGVudGlmaWVy
KCksICZ3ZWJQYWdlKTsKKyAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHdlYlBhZ2UuaWRlbnRpZmll
cigpLCAmd2ViUGFnZSk7CiAKICAgICB1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKQEAgLTQyMSwxNSAr
NDMyLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXJrSXNOb0xvbmdlckluUHJld2FybWVk
UG9vbCgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuZHNVc2luZ0RhdGFTdG9yZSkKIHsKLSAg
ICBhdXRvKiByZW1vdmVkUGFnZSA9IG1fcGFnZU1hcC50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwor
ICAgIGF1dG8qIHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2Uod2ViUGFnZS5pZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92ZWRQYWdlID09ICZ3ZWJQ
YWdlKTsKLSAgICByZW1vdmVkUGFnZSA9IGdsb2JhbFBhZ2VNYXAoKS50YWtlKHdlYlBhZ2UucGFn
ZUlEKCkpOworICAgIHJlbW92ZWRQYWdlID0gZ2xvYmFsUGFnZU1hcCgpLnRha2Uod2ViUGFnZS5p
ZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92ZWRQYWdl
ID09ICZ3ZWJQYWdlKTsKIAogICAgIGlmIChlbmRzVXNpbmdEYXRhU3RvcmUgPT0gRW5kc1VzaW5n
RGF0YVN0b3JlOjpZZXMpCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNp
dGVEYXRhU3RvcmUod2ViUGFnZS5wYWdlSUQoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
OworICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdl
YlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKLSAgICBy
ZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcih3ZWJQYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKSwgd2Vi
UGFnZS5wYWdlSUQoKSk7CisgICAgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIod2ViUGFnZS52
aXNpdGVkTGlua1N0b3JlKCksIHdlYlBhZ2UuaWRlbnRpZmllcigpKTsKICAgICB1cGRhdGVSZWdp
c3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7CiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NUaW1lcigpOwpAQCAtNDM3LDEwICs0NDgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUg
ZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRW
aXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYXV0byYgdXNlcnMgPSBtX3Zpc2l0ZWRMaW5r
U3RvcmVzV2l0aFVzZXJzLmVuc3VyZSgmdmlzaXRlZExpbmtTdG9yZSwgW10gewotICAgICAgICBy
ZXR1cm4gSGFzaFNldDxQYWdlSWRlbnRpZmllcj4geyB9OworICAgICAgICByZXR1cm4gSGFzaFNl
dDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
CiAgICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQ1MCw3ICs0NjEsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExp
bmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFBy
b2Nlc3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0
aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRM
aW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTYzLDEwICs1NzQsMTAgQEAgYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2VuZGlmCiAKLWJv
b2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFn
ZVdpdGhJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewotICAgICAgICBp
ZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICBp
ZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkuaWRlbnRpZmllcigpID09IHBhZ2VJRCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC01ODAsNyAr
NTkxLDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGkKICAgICBpZiAoaGFzUHJvdmlzaW9uYWxQ
YWdlV2l0aElEKGl0ZW0ucGFnZUlEKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChpdGVtLnN1c3BlbmRlZFBhZ2UoKSAmJiBpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cGFnZSgpLnBh
Z2VJRCgpID09IGl0ZW0ucGFnZUlEKCkgJiYgJml0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNz
KCkgPT0gdGhpcykKKyAgICBpZiAoaXRlbS5zdXNwZW5kZWRQYWdlKCkgJiYgaXRlbS5zdXNwZW5k
ZWRQYWdlKCktPnBhZ2UoKS5pZGVudGlmaWVyKCkgPT0gaXRlbS5wYWdlSUQoKSAmJiAmaXRlbS5z
dXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTMsNyArMTE2NCw3IEBAIFJlZlB0cjxBUEk6Ok9i
amVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2Jq
ZWN0KiBvYmplCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0
ZUF1dG9jb252ZXJ0aW5nKHN0YXRpY19jYXN0PGNvbnN0IFdlYkZyYW1lUHJveHkmPihvYmplY3Qp
LmZyYW1lSUQoKSk7CiAKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUhhbmRsZTo6Y3JlYXRlQXV0b2NvbnZl
cnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZVByb3h5Jj4ob2JqZWN0KS5wYWdlSUQoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUhhbmRsZTo6Y3JlYXRlQXV0b2NvbnZl
cnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZVByb3h5Jj4ob2JqZWN0KS53ZWJQYWdlSUQo
KSk7CiAKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91cDoKICAg
ICAgICAgICAgICAgICByZXR1cm4gQVBJOjpQYWdlR3JvdXBIYW5kbGU6OmNyZWF0ZShXZWJQYWdl
R3JvdXBEYXRhKHN0YXRpY19jYXN0PGNvbnN0IFdlYlBhZ2VHcm91cCY+KG9iamVjdCkuZGF0YSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGJmM2Nk
MmFkMTNmLi40N2EyNDNkOTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZXNwb25zaXZlbmVzc1RpbWVy
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5oPgpAQCAtOTksNyArMTAwLDcgQEAgZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3ND
YWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIEF1eGls
aWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94eU1hcDsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eSo+IFdlYlBhZ2VQcm94
eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7
CiAKICAgICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEzMSw2ICsxMzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAog
ICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIApAQCAt
MTU0LDggKzE1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJv
Y2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5r
U3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIo
VmlzaXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOwogCiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKICAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMzUxLDcgKzM1Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFi
bGUpOwogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpIGNvbnN0OworICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGJvb2wgaXNBbGxvd2VkVG9VcGRhdGVCYWNr
Rm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNvbnN0OwogCiAgICAgLy8gUGx1
Z2lucwpAQCAtNDQ2LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxQcm92aXNpb25h
bFBhZ2VQcm94eSo+IG1fcHJvdmlzaW9uYWxQYWdlczsKICAgICBVc2VySW5pdGlhdGVkQWN0aW9u
TWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAotICAgIEhhc2hNYXA8VmlzaXRlZExpbmtT
dG9yZSosIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Zpc2l0ZWRMaW5rU3Rv
cmVzV2l0aFVzZXJzOworICAgIEhhc2hNYXA8VmlzaXRlZExpbmtTdG9yZSosIEhhc2hTZXQ8V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAg
SGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVIYW5kbGVyLmNwcAppbmRleCA3ZDU3NWE0MDRiMC4uNWE2Y2M5NWQwZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgYXV0byByZXN1bHQgPSBtX3Rhc2tz
LmFkZCh0YXNrSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKCp0aGlzLCBwYWdl
LCBwcm9jZXNzLCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAg
YXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5hZGQocGFnZS5wYWdlSUQo
KSwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQ
YWdlSWRlbnRpZmllci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkp
OwogICAgIEFTU0VSVCghcGFnZUVudHJ5Lml0ZXJhdG9yLT52YWx1ZS5jb250YWlucyh0YXNrSWRl
bnRpZmllcikpOwogICAgIHBhZ2VFbnRyeS5pdGVyYXRvci0+dmFsdWUuYWRkKHRhc2tJZGVudGlm
aWVyKTsKIApAQCAtNzAsNyArNzAsNyBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlVSTFNjaGVtZUhh
bmRsZXI6OnByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCB0YXNrSWRlbgogCiB2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
dGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5wYWdlSUQoKSk7CisgICAgYXV0byBpdGVy
YXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5pZGVudGlmaWVyKCkpOwog
ICAgIGlmIChpdGVyYXRvciA9PSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6
c3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKICAg
ICBpdGVyYXRvci0+dmFsdWUtPnN0b3AoKTsKICAgICBwbGF0Zm9ybVN0b3BUYXNrKHBhZ2UsIGl0
ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICByZW1vdmVUYXNrRnJvbVBhZ2VNYXAocGFnZS5wYWdlSUQo
KSwgdGFza0lkZW50aWZpZXIpOworICAgIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChwYWdlLmlkZW50
aWZpZXIoKSwgdGFza0lkZW50aWZpZXIpOwogICAgIG1fdGFza3MucmVtb3ZlKGl0ZXJhdG9yKTsK
IH0KIApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0Nv
bXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRl
ZCh0YXNrKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBh
Z2VNYXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCit2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rh
c2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9
IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCAwOGY4ZjViYTQyMy4uZDU4YzdlNTY3MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAg
LTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BU
YXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAg
dm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lEKTsKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCkgY29uc3Q7CiAKICAgICB1aW50NjRfdCBtX2lk
ZW50aWZpZXI7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lVGFzaz4+
IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1
aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOworICAgIEhhc2hNYXA8V2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVy
OwogICAgIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRp
b25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IDAzNjIxYzBiYjM3Li5kNjFmMTM2MjI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViVVJMU2No
ZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBX
ZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcGFnZSgmcGFnZSkKICAgICAsIG1fcHJvY2VzcyhtYWtl
UmVmKHByb2Nlc3MpKQogICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmllcikKLSAg
ICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZS5wYWdlSUQoKSkKKyAgICAsIG1fcGFnZUlkZW50aWZp
ZXIocGFnZS5pZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkK
ICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5k
bGVyKSkKIHsKQEAgLTgyLDcgKzgyLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnMKICAgICAg
ICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxT
Y2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVl
c3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3Bh
Z2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQpA
QCAtMTA3LDcgKzEwNyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYgKGlzU3lu
YygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+
aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT53ZWJQYWdlSUQo
KSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2
ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgeyBi
dWZmZXIgfSksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpOb25lOwogfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQog
ICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBlcnJvciksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1l
VGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIGVycm9yKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV91cmxTY2hlbWVIYW5k
bGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDc2
NzMzZjc0Y2Y2Li4zOWIyZmViNDNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfldlYlVSTFNjaGVt
ZVRhc2soKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJl
dHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3BhZ2VJZGVu
dGlmaWVyOyB9CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSB7IEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIApAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQ
cm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fcmVxdWVzdDsKICAgICBtdXRhYmxlIExvY2sgbV9yZXF1ZXN0TG9jazsKICAgICBib29s
IG1fc3RvcHBlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGUyZGY0MTdkMmU4Li45
NWFlZGZlMTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQo
Ym9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklE
LCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBp
ZiAoIXdlYlBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2NmYzNTZhYmQ4Ni4uZjUyZmFkZWU4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgpAQCAtMTM5LDcgKzE0
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9nVGVzdGlu
Z0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKKyAgICB2b2lkIGdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRV
c2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVj
dGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4
IDYxZTg1OTRkNWI3Li41NTNhM2FjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtNDYsMTMgKzQ2LDEz
IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcihXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICA6IG1fd2ViUGFnZVByb3h5KG1ha2VXZWFrUHRy
KHdlYlBhZ2VQcm94eSkpCiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IG1fd2ViUGFn
ZVByb3h5LmdldCgpKQotICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICAgICAgd2ViUGFn
ZVByb3h5LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPndlYlBh
Z2VJRCgpLCAqdGhpcyk7CiB9CiAKIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjp+RWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBtX3dlYlBh
Z2VQcm94eS5nZXQoKSkKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKKyAgICAgICAgd2ViUGFnZVBy
b3h5LT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPndlYlBh
Z2VJRCgpKTsKIH0KIAogRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVu
c3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQg
ZW1iZWRkZWRWaWV3SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCmluZGV4IGMwZTQzZGNiMTI2Li44
MDhmN2Y3MjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KQEAgLTU4LDE3ICs1OCwxNyBAQCBT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
KFdLQ29udGVudFZpZXcgKmNvbnRlbgogICAgIDogbV93ZWJQYWdlUHJveHkoKmNvbnRlbnRWaWV3
LnBhZ2UpCiAgICAgLCBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQogewotICAgIG1fd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHku
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAK
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6On5TbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyKCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBh
Z2VJRCgpKTsKIH0KIAogdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpoYW5kbGVT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogewotICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdp
biksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94
eS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6
aGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tCmluZGV4IGNlZmRlNjFjNDliLi5lNGY3NTdjZGYyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBA
IC0yNTEsNyArMjUxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVH
ZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAgaWYgKGZp
bmlzaCkKICAgICAgICAgICAgIG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0Rm9yQ3Vy
cmVudFN3aXBlLT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNvbXBsZXRlZCwg
KnRhcmdldEl0ZW0pOwogICAgIH1dOwotICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHku
cGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5pZGVudGlmaWVyKCk7
CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBbbV9z
d2lwZVRyYW5zaXRpb25Db250ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFnZUlELCBnZXN0
dXJlSUQsIHRhcmdldEl0ZW1dIChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0ICpj
b250ZXh0LCBCT09MIGRpZENvbXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250
cm9sbGVyID0gY29udHJvbGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgYXV0byBwYWdlSUQg
PSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVBy
b3h5LmlkZW50aWZpZXIoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2Vz
dHVyZUlEOwogICAgIG1fbG9hZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2VzdHVyZUlEXSB7
CiAgICAgICAgIGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbERy
YXdpbmdBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCmluZGV4IDA0ZjljNmUyNzAyLi5hZjkyZGQyMDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTc0NSw3ICs3NDUsNyBAQCAtIChOU1VJ
bnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVyICopcHJpbnRGbwogLSAoQ0dQREZEb2N1bWVudFJlZilfd2tfcHJpbnRlZERvY3VtZW50
CiB7CiAgICAgaWYgKF9pc1ByaW50aW5nVG9QREYpIHsKLSAgICAgICAgaWYgKCFfcGFnZS0+cHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2s+KF9wYWdlLT5wYWdlSUQoKSwgU2Vj
b25kczo6aW5maW5pdHkoKSkpIHsKKyAgICAgICAgaWYgKCFfcGFnZS0+cHJvY2VzcygpLmNvbm5l
Y3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RHJhd1RvUERGQ2FsbGJhY2s+KF9wYWdlLT53ZWJQYWdlSUQoKSwgU2Vjb25kczo6aW5m
aW5pdHkoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGU0NDg1YTlm
MGM5Li43MTFiZDE1ODQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xOTk4LDkgKzE5OTgsOSBAQCAt
IChCT09MKWVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOihXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoW3Nl
bGYgX2hhc1ZhbGlkT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdDpyZXF1ZXN0
XSkKLSAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9u
PihfcGFnZS0+cGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+d2Fp
dEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVj
ZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24+KF9wYWdlLT53ZWJQYWdlSUQoKSwgMV9zLCBJUEM6Oldh
aXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiAKLSAg
ICBib29sIHJlY2VpdmVkUmVzcG9uc2UgPSBfcGFnZS0+cHJvY2VzcygpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpLCBNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbjo6UmVwbHkoX3Bvc2l0aW9uSW5mb3JtYXRp
b24pLCBfcGFnZS0+cGFnZUlEKCksIDFfcywgSVBDOjpTZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNw
YXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7CisgICAg
Ym9vbCByZWNlaXZlZFJlc3BvbnNlID0gX3BhZ2UtPnByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb246OlJlcGx5KF9wb3NpdGlvbkluZm9ybWF0aW9u
KSwgX3BhZ2UtPndlYlBhZ2VJRCgpLCAxX3MsIElQQzo6U2VuZFN5bmNPcHRpb246OkZvcmNlRGlz
cGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpOwogICAg
IF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSByZWNlaXZlZFJlc3BvbnNlICYmIF9wb3Np
dGlvbkluZm9ybWF0aW9uLmNhbkJlVmFsaWQ7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gY2xlYW4gdXAgdGhlc2UgaGFuZGxlcnMgaW4gdGhlIGV2ZW50IHRoYXQgd2UgYXJlIG5vdCBh
YmxlIHRvIGNvbGxlY3QgZGF0YSwgb3IgaWYgdGhlIFdlYlByb2Nlc3MgY3Jhc2hlcy4KQEAgLTM5
NTMsNyArMzk1Myw3IEBAIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyCiAgICAgX3BhZ2UtPnJlcXVl
c3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsKIAogICAgIGlmICh1c2VTeW5jUmVxdWVzdCkgewot
ICAgICAgICBfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25D
b250ZXh0PihfcGFnZS0+cGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgICAgICBfcGFnZS0+cHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0PihfcGFnZS0+d2ViUGFnZUlE
KCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpOwogICAgICAgICBbc2VsZiBfY2FuY2VsUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29u
dGV4dEhhbmRsZXJdOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGJiZTM5ZjRmM2U1Li4wZDhkOGZkYmYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xOTcs
NyArMTk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9jdXNlZEUKICAgICB9CiAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKQpAQCAtMjEwLDEyICsyMTAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZp
c2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OlZpc2libGVDb250ZW50
UmVjdFVwZGF0ZShtX3BhZ2VJRCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSwgMCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlKG1fd2ViUGFnZUlELCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCAw
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2VuZExhc3RWaXNpYmxlQ29udGVudFJlY3Rz
KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNwYXRjaGVy
OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUobV9wYWdlSUQsIG1fbGFzdFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZSksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6Vmlld1VwZGF0
ZURpc3BhdGNoZXI6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZShtX3dlYlBhZ2VJRCwgbV9sYXN0
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSwgMCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVTdHJpbmdGb3JGaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMzA1LDcgKzMwNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgdmlld0xheW91dFNpemUsIGNvCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKHZpZXdMYXlvdXRTaXplLAogICAg
ICAgICBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgdGFy
Z2V0VW5vYnNjdXJlZFJlY3QsCiAgICAgICAgIHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywKLSAgICAgICAgdGFyZ2V0
U2NhbGUsIGRldmljZU9yaWVudGF0aW9uLCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpLCBt
X3BhZ2VJRCk7CisgICAgICAgIHRhcmdldFNjYWxlLCBkZXZpY2VPcmllbnRhdGlvbiwgZHluYW1p
Y1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBzaXplLCBkb3VibGUgc2NhbGVGYWN0b3IsIGRvdWJsZSBtaW5pbXVtRWZm
ZWN0aXZlRGV2aWNlV2lkdGgpCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2kKICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1FZmZlY3RpdmVEZXZpY2VX
aWR0aCA9IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aDsKIAogICAgIGlmIChoYXNSdW5uaW5n
UHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHNpemUsIHNjYWxlRmFjdG9yLCBt
aW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xh
eW91dFNpemUoc2l6ZSwgc2NhbGVGYWN0b3IsIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcmNlQWx3YXlzVXNl
clNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkK
ICAgICBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlID0gdXNlclNjYWxhYmxlOwogCiAgICAgaWYg
KGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUodXNlclNjYWxhYmxlKSwgbV9wYWdl
SUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvcmNl
QWx3YXlzVXNlclNjYWxhYmxlKHVzZXJTY2FsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUpCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiAg
ICAgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBzaXplOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQ
cm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
TWF4aW11bVVub2JzY3VyZWRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF4aW11bVVub2JzY3VyZWRTaXplKHNpemUp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREZXZpY2VPcmllbnRh
dGlvbihpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90IGRldmljZU9yaWVudGF0
aW9uKQogICAgIGlmIChkZXZpY2VPcmllbnRhdGlvbiAhPSBtX2RldmljZU9yaWVudGF0aW9uKSB7
CiAgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBkZXZpY2VPcmllbnRhdGlvbjsKICAgICAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldERldmljZU9yaWVudGF0aW9uKGRldmljZU9yaWVudGF0aW9u
KSwgbV9wYWdlSUQpOworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXREZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbiksIG1fd2ViUGFnZUlE
KTsKICAgICB9CiB9CiAKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBPcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50
cwogICAgIG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyA9IHZpZXdwb3J0QXJndW1lbnRzOwog
CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFy
Z3VtZW50cyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1lbnRzKSwg
bV93ZWJQYWdlSUQpOwogfQogCiBzdGF0aWMgYm9vbCBleGNlZWRzUmVuZGVyVHJlZVNpemVTaXpl
VGhyZXNob2xkKHVpbnQ2NF90IHRocmVzaG9sZFNpemUsIHVpbnQ2NF90IGNvbW1pdHRlZFNpemUp
CkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXgKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJl
KHBvaW50LCAodWludDMyX3QpZ3JhbnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVy
ZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRl
LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFz
ZUlzU3RhcnQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCkBAIC00MjYsMTcgKzQyNiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0
aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbgogICAgIH0K
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0
aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0YXJ0LCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRl
U2VsZWN0aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0YXJ0LCBjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VE
aWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlRGljdGF0
ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlRGljdGF0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChv
bGRUZXh0LCBuZXdUZXh0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0
YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIGNhbGxiYWNrKQpAQCAtNDQ1LDcgKzQ0NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0
cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YSh0
ZXh0Rm9yQXV0b2NvcnJlY3Rpb24pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uKSwg
V1RGTW92ZShjYWxsYmFjayksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNDU2LDEzICs0NTYsMTMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgb3Jp
Z2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5h
bFRleHQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5
OjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFRleHQpCiB7CiAgICAgYm9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQgPSBm
YWxzZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTeW5jQXBw
bHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6U3luY0FwcGx5QXV0b2NvcnJlY3Rpb246OlJlcGx5KGF1dG9jb3JyZWN0aW9uQXBwbGll
ZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQpLCBNZXNz
YWdlczo6V2ViUGFnZTo6U3luY0FwcGx5QXV0b2NvcnJlY3Rpb246OlJlcGx5KGF1dG9jb3JyZWN0
aW9uQXBwbGllZCksIG1fd2ViUGFnZUlEKTsKICAgICByZXR1cm4gYXV0b2NvcnJlY3Rpb25BcHBs
aWVkOwogfQogCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRl
eHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW4KICAg
ICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdyYW51bGFyaXR5KSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
bGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZ3JhbnVsYXJpdHkpLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25E
aXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQs
IFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgfQog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9z
aXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24sIFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQpAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAg
fQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNl
bGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFu
dWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNl
bGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFu
dWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9u
QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChwb2ludCwgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRf
dCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTUxOCw3ICs1
MTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aQogICAgIH0KICAgICAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
ZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKHVp
bnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNTI5
LDcgKzUyOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgfQogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogICAgIAogfQogCkBAIC01
NDEsNyArNTQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFAKICAgICB9CiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnRBbmRCb3VuZGFyeShwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRB
bmRCb3VuZGFyeShwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgCiB9CiAKQEAgLTU1MywxMiAr
NTUzLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvCiAgICAgfQogCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVxdWVzdERpY3RhdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0
aW9uQ29udGV4dCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC01NzQsMTcgKzU3NCwxNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgUwogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVj
dGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFu
ZGxlVHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwgbW9kaWZpZXJzLCByZXF1ZXN0SUQpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVR3b0Zp
bmdlclRhcEF0UG9pbnQocG9pbnQsIG1vZGlmaWVycywgcmVxdWVzdElEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlU3R5bHVzU2luZ2xlVGFw
QXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KHBvaW50LCBy
ZXF1ZXN0SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RX
aXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90
LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkMKICAgICB9
CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhU
d29Ub3VjaGVzKGZyb20sIHRvLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYgaW5mbykKQEAgLTYwNSwyMiArNjA1LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVl
c3QpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKHBv
aW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihwb2ludCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BJbnRlcmFjdGlvbigpCiB7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wSW50ZXJhY3Rpb24oKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcEludGVyYWN0
aW9uKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1BY3Rp
b25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGVyZm9ybUFjdGlvbk9uRWxlbWVudChhY3Rpb24pLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uT25F
bGVtZW50KGFjdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNh
dmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUs
IHVpbnQ2NF90IGltYWdlU2l6ZSkKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogICAgIGlmIChpc1N1c3BlbmRlZFVu
ZGVyTG9jaykKICAgICAgICAgTmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqdGhpcykucmVs
ZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5hdmlnYXRpb25TdGF0ZTo6TmV0d29ya0FjdGl2aXR5
VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQpOwogI2VuZGlmCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChp
c1N1c3BlbmRlZFVuZGVyTG9jayksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVk
VW5kZXJMb2NrKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGlj
YXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCgpCkBAIC02
NDksNyArNjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRmluaXNoU25h
cHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQoKQogICAgICAgICBtX2RyYXdpbmdBcmVh
LT5wcmVwYXJlRm9yQXBwU3VzcGVuc2lvbigpOwogICAgICAgICBtX2RyYXdpbmdBcmVhLT5oaWRl
Q29udGVudFVudGlsUGVuZGluZ1VwZGF0ZSgpOwogICAgIH0KLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJF
bnRlcmluZ0JhY2tncm91bmQoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVy
aW5nQmFja2dyb3VuZCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpp
c0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKQpAQCAtNjYwLDEzICs2NjAsMTMgQEAgYm9vbCBXZWJQ
YWdlUHJveHk6OmlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZSgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKIHsKICAgICBib29sIGlzU3VzcGVuZGVk
VW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChp
c1N1c3BlbmRlZFVuZGVyTG9jayksIG1fcGFnZUlEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkKGlzSW5I
YXJkd2FyZUtleWJvYXJkTW9kZSgpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVu
ZGVkVW5kZXJMb2NrKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQoaXNJbkhhcmR3
YXJlS2V5Ym9hcmRNb2RlKCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2ls
bFJlc2lnbkFjdGl2ZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCkBAIC02NzUsMTcgKzY3NSwxNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIpCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+YXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKICNlbmRpZgotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0
ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNlbGVjdGlvbihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2VsZWN0aW9uKHN0YXRpY19jYXN0PHVp
bnQzMl90PihncmFudWxhcml0eSkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZWxlY3RXb3JkQmFja3dhcmQoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2VsZWN0V29yZEJhY2t3YXJkKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdvcmRCYWNrd2FyZCgpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0
eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtNjk2LDcgKzY5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyCiAgICAgfQog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdy
YW51bGFyaXR5KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxl
Y3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgb2Zmc2V0LCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAg
LTcwNywyMiArNzA3LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVj
dGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTCiAgICAgfQogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVj
dGlvbk9mZnNldFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzQXRTZWxlY3Rp
b25PZmZzZXRXaXRoVGV4dChvZmZzZXQsIHRleHQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHko
Ym9vbCBzaG91bGRTdG9yZSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShzaG91bGRTdG9yZSksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3JlU2VsZWN0aW9u
Rm9yQWNjZXNzaWJpbGl0eShzaG91bGRTdG9yZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgcG9zaXRpb25JbldpbmRvdykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24ocG9zaXRpb25JbldpbmRvdyks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0
QXV0b3Njcm9sbEF0UG9zaXRpb24ocG9zaXRpb25JbldpbmRvdyksIG1fd2ViUGFnZUlEKTsKIH0K
ICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxBdXRvc2Nyb2xsKCkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbEF1dG9zY3JvbGwoKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQXV0b3Nj
cm9sbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0
aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTczMyw3ICs3MzMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKENhbAogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25CeU9mZnNldChvZmZzZXQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpN
b3ZlU2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3Rh
dGUmIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBsdWdpbkZvY3VzT3JXaW5kb3dG
b2N1c0NoYW5nZWQodWludDY0X3QsIGJvb2wpCkBAIC04MDYsNTggKzgwNiw1OCBAQCBib29sIFdl
YlBhZ2VQcm94eTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50LCBjb25zdCBXZWJLaXQ6OldlYk1vdXNl
RXZlbnQmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21p
bmcoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaWxsU3RhcnRV
c2VyVHJpZ2dlcmVkWm9vbWluZygpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OldpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24sIGJvb2wgc2hvdWxkUmVxdWVzdE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbiwgdWludDY0X3QmIHJlcXVlc3RJRCkKIHsKICAgICBoaWRlVmFs
aWRhdGlvbk1lc3NhZ2UoKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UG90ZW50aWFsVGFwQXRQb3NpdGlvbihyZXF1ZXN0SUQsIHBvc2l0aW9uLCBzaG91bGRSZXF1ZXN0
TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHJlcXVlc3RJRCwgcG9z
aXRpb24sIHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24pLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQb3RlbnRpYWxUYXAoT3B0aW9uU2V0
PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCBUcmFuc2FjdGlvbklEIGxheWVyVHJlZVRy
YW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0LCBXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklk
KQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21taXRQb3RlbnRp
YWxUYXAobW9kaWZpZXJzLCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCwg
cG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb21taXRQb3RlbnRpYWxUYXAobW9kaWZpZXJzLCBsYXllclRyZWVUcmFuc2FjdGlvbklk
QXRMYXN0VG91Y2hTdGFydCwgcG9pbnRlcklkKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2FuY2VsUG90ZW50aWFsVGFwKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG90ZW50aWFsVGFwKCksIG1fcGFnZUlEKTsKKyAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG90ZW50aWFsVGFwKCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRhcEhpZ2hsaWdodEF0UG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24sIHVpbnQ2NF90JiByZXF1ZXN0
SUQpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRhcEhpZ2hsaWdo
dEF0UG9zaXRpb24ocmVxdWVzdElELCBwb3NpdGlvbiksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihyZXF1ZXN0
SUQsIHBvc2l0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlVGFwKGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1v
ZGlmaWVyPiBtb2RpZmllcnMsIFRyYW5zYWN0aW9uSUQgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0
TGFzdFRvdWNoU3RhcnQpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZVRhcChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBtb2RpZmllcnMsIGxheWVyVHJl
ZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVUYXAocm91bmRlZEludFBvaW50KGxvY2F0
aW9uKSwgbW9kaWZpZXJzLCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY29nbml6ZUxvbmdQ
cmVzcygpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY29n
bml6ZUxvbmdQcmVzcygpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY29nbml6ZUxvbmdQcmVzcygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVy
PiBtb2RpZmllcnMsIFRyYW5zYWN0aW9uSUQgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRv
dWNoU3RhcnQpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRs
ZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChwb2ludCwgbW9kaWZpZXJzLCBsYXllclRy
ZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tB
dFBvaW50KHBvaW50LCBtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3Vj
aFN0YXJ0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zcGVjdG9y
Tm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3Np
dGlvbikKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9y
Tm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihwb3NpdGlvbiksIG1fcGFnZUlEKTsKKyAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Q
b3NpdGlvbihwb3NpdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
Omluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgcG9zaXRpb24pCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
Okluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24ocG9zaXRpb24pLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc3BlY3Rvck5vZGVTZWFy
Y2hFbmRlZEF0UG9zaXRpb24ocG9zaXRpb24pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpibHVyRm9jdXNlZEVsZW1lbnQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpCbHVyRm9jdXNlZEVsZW1lbnQoKSwgbV9wYWdlSUQpOworICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCbHVyRm9jdXNlZEVsZW1lbnQoKSwgbV93
ZWJQYWdlSUQpOwogfQogCiBGbG9hdFNpemUgV2ViUGFnZVByb3h5OjpzY3JlZW5TaXplKCkKQEAg
LTkwMiw3ICs5MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0VGFwSGlnaGxpZ2h0R2Vv
bWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcgogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0SXNTaG93aW5nSW5wdXRWaWV3Rm9yRm9jdXNlZEVsZW1lbnQoYm9vbCBzaG93aW5n
SW5wdXRWaWV3KQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJ
c1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChzaG93aW5nSW5wdXRWaWV3KSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1Nob3dp
bmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChzaG93aW5nSW5wdXRWaWV3KSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVy
cmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50KCkKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVsZWFzZUFsbFRvdWNoUG9pbnRzKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmF1dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3N3b3JkKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKHVzZXJuYW1lLCBwYXNzd29yZCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF1dG9maWxsTG9naW5D
cmVkZW50aWFscyh1c2VybmFtZSwgcGFzc3dvcmQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzaG93SW5zcGVjdG9ySGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkhpZ2hs
aWdodCYgaGlnaGxpZ2h0KQpAQCAtOTk3LDIyICs5OTcsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ2EKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGlzRm9yd2FyZCwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0Rm9j
dXNlZEVsZW1lbnQoaXNGb3J3YXJkLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb2N1c2Vk
RWxlbWVudFZhbHVlKHZhbHVlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRGb2N1c2VkRWxlbWVudFZhbHVlKHZhbHVlKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZUFzTnVtYmVy
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZUFzTnVtYmVyKHZhbHVlKSwgbV9wYWdlSUQpOworICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb2N1c2VkRWxlbWVudFZhbHVlQXNO
dW1iZXIodmFsdWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRG
b2N1c2VkRWxlbWVudFNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0
aXBsZVNlbGVjdGlvbikKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Rm9jdXNlZEVsZW1lbnRTZWxlY3RlZEluZGV4KGluZGV4LCBhbGxvd011bHRpcGxlU2VsZWN0
aW9uKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRGb2N1c2VkRWxlbWVudFNlbGVjdGVkSW5kZXgoaW5kZXgsIGFsbG93TXVsdGlwbGVTZWxlY3Rp
b24pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJ
bmZvKQpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdWludDMyX3QgV2ViUGFnZVByb3h5Ojpjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWUKICAgICB1
aW50MzJfdCBwYWdlQ291bnQgPSAwOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBNZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOwotICAgIHByb2Nlc3MoKS5zZW5k
U3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5mbywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJl
cGx5KHBhZ2VDb3VudCksIG1fcGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpKTsKKyAgICBwcm9j
ZXNzKCkuc2VuZFN5bmMoTWVzc2FnZShmcmFtZUlELCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBN
ZXNzYWdlOjpSZXBseShwYWdlQ291bnQpLCBtX3dlYlBhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHko
KSk7CiAgICAgcmV0dXJuIHBhZ2VDb3VudDsKIH0KIApAQCAtMTA5NSw3ICsxMDk1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSwgQ2FsbGJhY2sKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0
ZWdvcnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZW50U2l6ZUNhdGVnb3J5RGlk
Q2hhbmdlKGNvbnRlbnRTaXplQ2F0ZWdvcnkpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29udGVu
dFNpemVDYXRlZ29yeSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUgY29tbWFuZCkKQEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChjb21tYW5kKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGNvbW1hbmQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVFZGl0b3JTdGF0
ZShjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCkBAIC0xMTU4LDcgKzExNTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SXNTY3JvbGxpbmdPclpvb21pbmcoYm9vbCBpc1Njcm9sbGlu
Z09yWm9vbWluZykKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXJkd2FyZUtleWJvYXJkQXZhaWxhYmls
aXR5Q2hhbmdlZChib29sIGtleWJvYXJkSXNBdHRhY2hlZCkKIHsKICAgICB1cGRhdGVDdXJyZW50
TW9kaWZpZXJTdGF0ZSgpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQoa2V5Ym9hcmRJc0F0dGFjaGVkKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFyZHdh
cmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQoa2V5Ym9hcmRJc0F0dGFjaGVkKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fib3Zl
U2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UmVjdD4mKT4mJiBjYWxsYmFjaykKQEAgLTExNjgsNyArMTE2OCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNv
bm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oKSwgV1RGTW92ZShjYWxsYmFjayksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oKSwgV1RGTW92
ZShjYWxsYmFjayksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0
ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3Ro
RGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTExNzgsNyArMTE3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRo
RGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEobG9jYXRpb25E
ZWx0YSwgbGVuZ3RoRGVsdGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShsb2NhdGlvbkRlbHRhLCBsZW5n
dGhEZWx0YSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChXZWJLaXQ6
OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTExODgsNyArMTE4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RG9jdW1l
bnRFZGl0aW5nQ29udGV4dChXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4
dChyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChyZXF1ZXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBX0lOVEVS
QUNUSU9OKQpAQCAtMTIwNiwxMyArMTIwNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSGFu
ZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJv
Y2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVl
c3REcmFnU3RhcnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9u
cyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0RHJhZ1N0YXJ0KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dl
ZEFjdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24gYWxsb3dlZEFjdGlvbnMpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0aW9u
YWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxs
b3dlZEFjdGlvbnMpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBv
c2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQpAQCAt
MTIyNyw3ICsxMjI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFZGl0RHJhZ1Nu
YXBzaG90KE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ29uY2x1ZGVEcm9wKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENvbmNsdWRlRHJvcCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb25jbHVkZURyb3AoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiAjZW5kaWYKQEAgLTEyNTMsOCArMTI1Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICBwYWdlQ2xpZW50KCkucmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnQoZmlsZU5hbWUsIFtwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNz
KSwgcGFnZUlEID0gbV9wYWdlSURdKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnQocGFzc3dvcmQpLCBwYWdlSUQpOworICAgIHBhZ2VDbGllbnQoKS5yZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgW3Byb2Nlc3MgPSBXVEZN
b3ZlKHByb2Nlc3MpLCB3ZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRF0oY29uc3QgU3RyaW5nJiBwYXNz
d29yZCkgeworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChwYXNzd29yZCksIHdlYlBhZ2VJRCk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAzNDljZWQzZTE4MC4uNjg2YTFmMTZj
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0
ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JV
STo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+
d2ViUGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAt
MjE3LDcgKzIxNyw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBw
ZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTCiAgICAgW2hhbmRsZSBjbG9z
ZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gd2ViVmlldygpLT5f
cGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5n
XSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAog
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAy
MTM1YmYxMTg4ZS4uY2E3YjZjNTEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5OjpkaWRVcGRhdGVHZW9tZXRyeSgpCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCkKIHsKICAgICBTZWNvbmRzIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0ID0gU2Vj
b25kczo6ZnJvbU1pbGxpc2Vjb25kcygyNTApOwotICAgIHByb2Nlc3MoKS5jb25uZWN0aW9uKCkt
PndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCBhY3Rpdml0eVN0
YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZT
eW5jTWVzc2FnZUFycml2ZXMpOworICAgIHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFj
dGl2aXR5U3RhdGU+KG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBhY3Rpdml0eVN0YXRlVXBk
YXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHk6OndpbGxTZW5kVXBkYXRlR2VvbWV0cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNTAyNDFkOGJm
NjIuLjQyM2EwNmFhYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChO
U0V2ZW50ICpldmVudCwgRmxvYQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJz
dCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2
ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCiAgICAgICAgIG1fbWFnbmlmaWNhdGlv
biA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBhZ2VQ
cm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCkpOworICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogICAgICAg
ICBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFnbmlmaWNhdGlvbiA9IGZhbHNl
OwogCiAgICAgICAgIHJldHVybjsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9y
aWdpbikKICAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5v
bmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiksIG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKIHN0
YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxvYXRSZWN0IGEsIEZs
b2F0UmVjdCBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMjE1MTY2MmQzNDcuLmFlODdhYTlj
YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0lt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAtICh2b2lkKWlt
bWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsQmVnaW5BbmltYXRpb246KE5TSW1tZWRpYXRlQWN0
aW9uR2VzdHVyZVJlYwogICAgIC8vIEZJWE1FOiBDb25uZWN0aW9uIGNhbiBiZSBudWxsIGlmIHRo
ZSBwcm9jZXNzIGlzIGNsb3NlZDsgd2Ugc2hvdWxkIGNsZWFuIHVwIGJldHRlciBpbiB0aGF0IGNh
c2UuCiAgICAgaWYgKF9zdGF0ZSA9PSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpQZW5k
aW5nKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2UtPnByb2Nlc3MoKS5j
b25uZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rp
b24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlEKCksIFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwKSk7CisgICAgICAgICAgICBib29sIHJlY2VpdmVkUmVw
bHkgPSBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdD4oX3BhZ2UtPndl
YlBhZ2VJRCgpLCBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDUwMCkpOwogICAgICAgICAgICAg
aWYgKCFyZWNlaXZlZFJlcGx5KQogICAgICAgICAgICAgICAgIF9zdGF0ZSA9IFdlYktpdDo6SW1t
ZWRpYXRlQWN0aW9uU3RhdGU6OlRpbWVkT3V0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMjljNjE0
MGIyMDkuLmU1Mzc5NzQwOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBj
b25zdCBTdHJpbmcmIGMKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkg
d3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNv
bHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNh
dmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJ
RCgpKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTUyNyw3ICs1
MjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltj
b250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hh
bmRsZSBjbG9zZUZpbGVdOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3Ry
aW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVh
bFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYzMyNTY3
OGYzOGMuLjdkNDExZTgwODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgRmxvYXRSZWN0JiB2aWV3RnJhbWVJbldp
bmRvdwogICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVudCBvdmVycmlkZXMgZ2V0V2luZG93RnJh
bWUoKSwgd2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBzZW5kIHRoZSBhcHByb3ByaWF0
ZSB3aW5kb3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUoKnRoaXMsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHZpZXdGcmFtZUluV2luZG93Q29vcmRp
bmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNdIChGbG9hdFJlY3Qgd2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZsb2F0UmVjdCB3aW5kb3dGcmFtZUlu
VW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xpZW50KCkuY29udmVydFRvVXNlclNw
YWNlKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7Ci0gICAgICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dG
cmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29y
ZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdD
b29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5D
b29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3
RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSwg
bV93ZWJQYWdlSUQpOwogICAgIH0pOwogfQogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNT
Y3JvbGxhYmxlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0
IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNX
aXRoUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0
LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dy
b3VwKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSwgbV93ZWJQYWdlSUQpOwogI2Vsc2UKICAg
ICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMucmVnaXN0ZXJVbmRvR3Jv
dXAgPSByZWdpc3RlclVuZG9Hcm91cDsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRp
dGluZ1JhbmdlJgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYgc3RyaW5n
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihG
dW5jdGlvbjx2b2lkKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLAogICAgIH0KIAogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRB
dFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgRm9udEluZm8mIGZvbnRJbmZvLCBk
b3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cywgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQpAQCAtMjcwLDcgKzI3MCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0
cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAg
CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpS
ZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgcHJvY2VzcygpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpS
ZXBseSh2YWx1ZSksIG1fd2ViUGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAg
ICB1aW50NjRfdCBzaXplID0gMDsKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIw
KTsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbV9wYWdlSUQsIG1lc3Nh
Z2VUaW1lb3V0KTsKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3dlYlBhZ2VJRCwgbWVzc2FnZVRp
bWVvdXQpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CkBA
IC0yOTYsMTQgKzI5NiwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKICAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHBy
b2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25G
cm9tUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsK
KyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25G
cm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2Vs
ZWN0aW9uRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHJlc3VsdCksIG1fd2ViUGFnZUlELCBtZXNzYWdl
VGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2Fy
ZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxh
Y2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3Rpb25XaXRo
UGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApA
QCAtMzMzLDIyICszMzMsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRDb21wbGV4VGV4dElu
cHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dEkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbihwbHVn
aW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0KSwgbV9wYWdlSUQpOworICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRv
UGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cHBlcmNhc2VXb3JkKCkKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwcGVyY2FzZVdv
cmQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG93ZXJjYXNlV29y
ZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdv
cmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b3dlcmNhc2VXb3JkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNh
cGl0YWxpemVXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2FwaXRhbGl6ZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCkKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQp
CiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkID0g
aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVk
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rp
b25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5m
bykKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJVSVByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
cyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3QgcGx1
Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRXaW5k
b3dIYXNGb2N1cykKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxk
RGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudAog
CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1l
b3V0KDMpOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxk
RGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlNob3Vs
ZERlbGF5V2luZG93T3JkZXJpbmdFdmVudDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3Nh
Z2VUaW1lb3V0KTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlNo
b3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpT
aG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1fd2ViUGFnZUlE
LCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM0LDcgKzQz
NCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1i
ZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2VzcygpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVudE51bWJlciwg
ZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJlcGx5KHJlc3Vs
dCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVudE51bWJlciwgZXZlbnQpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJlcGx5KHJlc3VsdCksIG1fd2Vi
UGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDI2Zjg1
N2FmZDMuLjQzYTBhZDE3YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkxNyw2ICs5MTcsNyBAQAogCQk0NkJFQjZEQjIyRkI5RDQ4
MDAyNjk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZEOTIyRkI5RDQ4MDAyNjk4NjcgLyogTG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAv
KiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKKwkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlC
IC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyog
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0Mx
OEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNDMTlB
RjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi87IH07
CkBAIC0zMjI4LDYgKzMyMjksNyBAQAogCQk0NkJFQjZERTIyRkJCMTZCMDAyNjk4NjcgLyogU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFMTIy
RkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkJFQjZFMjIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzM5
MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRG
MDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzNTE5QUY3QUMzMDAyRUJB
QjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NTksNiArNzg2MSw3IEBACiAJCQkJQkMxMTFC
MEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJEQ0Ix
MEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oICovLAogCQkJCUJDQkQzOEZBMTI1QkFC
OUEwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZDMzkyMjgy
MzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLywKIAkJCQk3QzQ2
OTRDRDFBNTFFMzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5LmNwcCAqLywKIAkJCQk3
QzQ2OTRDRTFBNTFFMzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5LmggKi8sCiAJCQkJ
N0M0Njk0Q0YxQTUxRTM2ODAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
biAqLywKQEAgLTEwMDI1LDYgKzEwMDI4LDcgQEAKIAkJCQlDNUZBMUVEMzE4RTEwNjIyMDBCM0Y0
MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMTJEQUI1
MjA2NjJDNzMwMDZGMDBGQiAvKiBXS0FuaW1hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRTM0RTUxMzBCNEQwNTAwQUJEMTlBIC8qIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0RDNjgyMjA3QUE2
QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5LmggaW4gSGVhZGVy
cyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377489</attachid>
            <date>2019-08-28 14:29:48 -0700</date>
            <delta_ts>2019-08-28 15:25:36 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>201233_wip.patch</filename>
            <type>text/plain</type>
            <size>327164</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5k
ZXggZGI3MmNhMTY1ODcuLmRhZjRkYTIyNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQorUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6
IG1faXRlbVN0YXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyKG1faXRlbVN0YXRl
LmlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggM2E0NWUxY2I3YTcuLjZkNjdlYzBiMmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJTZXNzaW9u
U3RhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
YWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGlj
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
KyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZv
aWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsg
fQpAQCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVt
b3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJMOwot
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA2MWE2OWIxZjNhNi4uMmY1ZjgwYzA3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcApAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRC
YXNlKgogICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQpOwogCiAgICAgaWYgKG1pbGVzdG9uZXMpCi0gICAgICAgIHdlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXMobWlsZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgICAgICB3ZWJQ
YWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPndlYlBhZ2VJRCgpKTsKIAog
ICAgIHdlYlBhZ2VQcm94eS0+c2V0TG9hZGVyQ2xpZW50KFdURk1vdmUobG9hZGVyQ2xpZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0OTY3Nzg4YTEwNS4uMTEw
MDMzYmE2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNzIwLDcgKzcy
MCw3IEBAIC0gKE5TVUludGVnZXIpcGFnZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlICopaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFs
bG9jXSBfaW5pdFdpdGhQYWdlSUQ6X3BhZ2UtPnBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6
X3BhZ2UtPndlYlBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZjQ0MTE0MzU1ZC4uY2M3ZjZjOTYy
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtODc3LDcgKzg3Nyw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtfY29udGVudFZpZXcg
X3dlYlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1vdGVPYmplY3RSZWdpc3RyeSkKLSAg
ICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICNlbmRpZgogCiAgICAg
X3BhZ2UtPmNsb3NlKCk7CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCAtICh2b2lkKV9kaWRDb21taXRM
YXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVy
VHJlZQogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1b
V0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2RpZENvbW1pdExheWVyVHJlZTpd
IHRyYW5zYWN0aW9uSUQgIiA8PCAgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgp
IDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9kaWRDb21taXRM
YXllclRyZWU6XSB0cmFuc2FjdGlvbklEICIgPDwgIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5z
YWN0aW9uSUQoKSA8PCAiIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBib29sIG5lZWRVcGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzID0gX3BhZ2UtPnVwZGF0ZUxheW91dFZpZXdwb3J0UGFyYW1ldGVycyhsYXllclRy
ZWVUcmFuc2FjdGlvbik7CiAKQEAgLTI5MDgsNyArMjkwOCw3IEBAIC0gKHZvaWQpX2Rpc3BhdGNo
U2V0Vmlld0xheW91dFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0U2l6ZQogICAg
IGlmIChfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShfbGFzdFNl
bnRWaWV3TGF5b3V0U2l6ZS52YWx1ZSgpLCB2aWV3TGF5b3V0U2l6ZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZGlzcGF0Y2hTZXRWaWV3TGF5b3V0U2l6
ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9vbVNjYWxlICIgPDwgY29udGVu
dFpvb21TY2FsZShzZWxmKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfZGlzcGF0
Y2hTZXRWaWV3TGF5b3V0U2l6ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9v
bVNjYWxlICIgPDwgY29udGVudFpvb21TY2FsZShzZWxmKSk7CiAgICAgX3BhZ2UtPnNldFZpZXdw
b3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBfcGFnZS0+bGF5
b3V0U2l6ZVNjYWxlRmFjdG9yKCksIF9wYWdlLT5taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgo
KSk7CiAgICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSB2aWV3TGF5b3V0U2l6ZTsKIH0KQEAg
LTMyMTIsNyArMzIxMiw3IEBAIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9yaWVudGF0aW9uKFdLV2Vi
VmlldyAqd2ViVmlldykKIAogLSAodm9pZClfY2FuY2VsQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwg
X3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2NhbmNlbEFuaW1hdGVkUmVzaXplOl0gIiA8PCAiIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2Vi
VmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfY2FuY2VsQW5pbWF0ZWRSZXNpemU6
XSAiIDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlKTsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykKICAgICAgICAg
cmV0dXJuOwogCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogI2Vsc2UKICAgICBpZiAoIV9yZW1vdGVPYmplY3RS
ZWdpc3RyeSkgewogICAgICAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBhZG9wdE5TKFtbX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0aFdlYlBhZ2VQcm94eToqX3BhZ2Vd
KTsKLSAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgX3BhZ2UtPnBhZ2VJRCgpLCBbX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJl
Z2lzdHJ5XSk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIF9wYWdlLT53ZWJQYWdlSUQoKSwgW19yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1v
dGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAogICAgIHJldHVybiBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkuZ2V0KCk7CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxs
b2NdIF9pbml0V2l0aFBhZ2VJRDpfcGFnZS0+cGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpf
cGFnZS0+d2ViUGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoX1dLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHMpX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMKQEAgLTUwMTcsNyAr
NTAxNyw3IEBAIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29u
dGV4dCAqKXRleHRJbnB1dENvbnRleHQgY29tcGxldGlvCiAjZW5kaWYKIAogICAgIGF1dG8gd2Vi
Q29udGV4dCA9IFt0ZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5wdXRDb250ZXh0XTsKLSAgICBpZiAo
d2ViQ29udGV4dC53ZWJQYWdlSWRlbnRpZmllciAhPSBfcGFnZS0+cGFnZUlEKCkpCisgICAgaWYg
KHdlYkNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgIT0gX3BhZ2UtPndlYlBhZ2VJRCgpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiVGhlIHByb3ZpZGVkIF9XS1RleHRJbnB1dENvbnRleHQgd2FzIG5vdCBjcmVhdGVkIGJ5IHRo
aXMgV0tXZWJWaWV3LiJdOwogCiAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwpAQCAt
NjIzMyw3ICs2MjMzLDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6
ZQogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZW5kQW5pbWF0ZWRSZXNpemU6XSAiIDw8
ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
Ii1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9lbmRBbmltYXRlZFJl
c2l6ZTpdICIgPDwgIiBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAiIDw8IChpbnQpX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIHVw
LXRvLWRhdGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAvLyB0aGUgcmVz
aXplLiBPdGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3ZSBkby4KQEAg
LTYyNDQsNyArNjI0NCw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAKIC0gKHZvaWQp
X3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAi
LVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfcmVzaXplV2hpbGVIaWRpbmdD
b250ZW50V2l0aFVwZGF0ZXM6XSIpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMs
IHN0cmVhbSA8PCAiLVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+aWRlbnRpZmllcigpIDw8ICIgX3Jl
c2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iKTsKICAgICBbc2VsZiBfYmVnaW5B
bmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOnVwZGF0ZUJsb2NrXTsKICAgICBpZiAoX2R5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpS
ZXNpemluZ1dpdGhBbmltYXRpb24pIHsKICAgICAgICAgW19jb250ZW50VmlldyBzZXRIaWRkZW46
WUVTXTsKQEAgLTYzNDUsNyArNjM0NSw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0
KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAKIC0g
KHZvaWQpX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTooQ0dT
aXplKW1pbmltdW1MYXlvdXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1Np
emUpbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgp
IDw8ICIgX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZToiIDw8
IFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSkgPDwgIiBtYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZToiIDw8IFdlYkNvcmU6OkZsb2F0U2l6ZShtYXhpbXVtVW5vYnNjdXJl
ZFNpemVPdmVycmlkZSkgPDwgIl0iKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3Rz
LCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9v
dmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6IiA8PCBXZWJDb3Jl
OjpGbG9hdFNpemUobWluaW11bUxheW91dFNpemUpIDw8ICIgbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU6IiA8PCBXZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVVub2JzY3VyZWRTaXplT3Zl
cnJpZGUpIDw8ICJdIik7CiAKICAgICBbc2VsZiBfc2V0Vmlld0xheW91dFNpemVPdmVycmlkZTpt
aW5pbXVtTGF5b3V0U2l6ZV07CiAgICAgW3NlbGYgX3NldE1heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlOm1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IGFjN2U0OWFiMDI1Li4zZGQxMGU1ZjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC01MDksNyArNTA5
LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5wYWdlSUQoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
b21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5z
OwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDIyYTg2NDU5MWRmLi42MzVmN2RhNWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE3NzUsNSArMTc3NSw1
IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyoKIAogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29u
dGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gcGFnZSA/IGNvbnRleHQtPnByaXYtPndlYlZpZXdz
LmdldChwYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHBh
Z2UgPyBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggM2E1MjE0MmVkNzUuLjNmYjkwY2IxODgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bh
Z2VfaWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uo
d2ViVmlldykucGFnZUlEKCkudG9VSW50NjQoKTsKKyAgICByZXR1cm4gZ2V0UGFnZSh3ZWJWaWV3
KS5pZGVudGlmaWVyKCkudG9VSW50NjQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IGJlYWE4OThiYWRiLi40N2Y5MTc0MDUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
QEAgLTE4NywxNiArMTg3LDE2IEBAIFdlYlBhZ2VQcm94eSogV2ViQXV0b21hdGlvblNlc3Npb246
OndlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSkKIAogU3RyaW5nIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCiB7Ci0gICAgYXV0byBpdGVyID0gbV93ZWJQYWdlSGFuZGxlTWFw
LmZpbmQod2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBhdXRvIGl0ZXIgPSBtX3dlYlBhZ2VI
YW5kbGVNYXAuZmluZCh3ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpKTsKICAgICBpZiAoaXRlciAh
PSBtX3dlYlBhZ2VIYW5kbGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsK
IAogICAgIFN0cmluZyBoYW5kbGUgPSAicGFnZS0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAKLSAgICBhdXRvIGZpcnN0QWRkUmVzdWx0
ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJveHkucGFnZUlEKCksIGhhbmRsZSk7
CisgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5hZGQod2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKSwgaGFuZGxlKTsKICAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0gbV9oYW5k
bGVXZWJQYWdlTWFwLmFkZChoYW5kbGUsIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgYXV0
byBzZWNvbmRBZGRSZXN1bHQgPSBtX2hhbmRsZVdlYlBhZ2VNYXAuYWRkKGhhbmRsZSwgd2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0
LmlzTmV3RW50cnkpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dAogCiAgICAgbV9jbGllbnQtPnJlcXVlc3RTd2l0Y2hUb1Bh
Z2UoKnRoaXMsICpwYWdlLCBbZnJhbWVJRCwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKICAgICAgICAgcGFnZS0+c2V0Rm9jdXModHJ1ZSk7
Ci0gICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CisgICAg
ICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CiAKICAgICAg
ICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CkBAIC00OTcsMTAgKzQ5NywxMCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVP
blBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCh0
aW1lb3V0KTsKICAgICBzd2l0Y2ggKGxvYWRTdHJhdGVneSkgewogICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAg
ICBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQ
YWdlLnNldChwYWdlLnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIG1fcGVu
ZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2Uuc2V0
KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgIG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlclBhZ2Uuc2V0KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
UGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmln
YXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNh
bGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKIHsKICAgICBJbnNwZWN0
b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJvciA9IFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJP
Ul9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAoYXV0byBpZCA6IGNvcHlUb1ZlY3RvcihtYXAua2V5
cygpKSkgewpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5h
dmlnYXRpb25PY2N1cnJlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lCiAgICAg
ICAgIC8vIE5ldyBwYWdlIGxvYWRlZCwgY2xlYXIgZnJhbWUgaGFuZGxlcyBwcmV2aW91c2x5IGNh
Y2hlZC4KICAgICAgICAgbV9oYW5kbGVXZWJGcmFtZU1hcC5jbGVhcigpOwogICAgICAgICBtX3dl
YkZyYW1lSGFuZGxlTWFwLmNsZWFyKCk7Ci0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50
YWtlKGZyYW1lLnBhZ2UoKS0+cGFnZUlEKCkpKSB7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZS50YWtlKGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9s
b2FkVGltZXIuc3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046
Ok9iamVjdDo6Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGlvbk9jY3VycmVkRm9yRnJhbWUoY29uc3QgV2Vi
RnJhbWVQcm94eSYgZnJhbWUKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRvY3VtZW50TG9h
ZGVkRm9yRnJhbWUoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1l
LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2UudGFrZShmcmFt
ZS5wYWdlKCktPnBhZ2VJRCgpKSkgeworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVu
ZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtl
KGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9sb2FkVGltZXIu
c3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046Ok9iamVjdDo6
Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03OTIsMTQgKzc5MiwxNCBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpkb2N1bWVudExvYWRlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkm
IGZyYW1lKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExv
YWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sg
PSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkp
CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQog
ewogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRv
IGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkK
ICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBX
ZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRF
UkFDVElPTlMpCi0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC04MjQsMTcgKzgyNCwxNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQ
cm94eSYgcGFnZSkKICAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFjdGlvbnMgb24gdGhpcyBw
YWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVzZSBzdWJzZXF1ZW50CiAg
ICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgogI2lmIEVOQUJMRShXRUJEUklW
RVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
TW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQor
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKICAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRp
bmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlm
aWVyKCkpKQogICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9O
QU1FKFdpbmRvd05vdEZvdW5kKSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNU
SU9OU19BUEkpCiAgICAgLy8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNl
bCBzbyB0aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgotICAg
IE9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIg
PSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBPcHRp
b25hbDxSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gaW5wdXREaXNwYXRjaGVyID0gbV9p
bnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpOwogICAgIGlmIChp
bnB1dERpc3BhdGNoZXIuaGFzVmFsdWUoKSkKICAgICAgICAgaW5wdXREaXNwYXRjaGVyLnZhbHVl
KCktPmNhbmNlbCgpOwogI2VuZGlmCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnQKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZhbHVhdGVKYXZhU2Ny
aXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbihwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgZnVuY3Rpb24sIGFyZ3Vt
ZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1l
b3V0LCBjYWxsYmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja1RpbWVvdXQsIGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtOTg3LDE3ICs5ODcsMTcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHQKICAgICB9OwogCiAgICAgaWYgKG9wdGlvbmFsTm9kZUhhbmRsZSkgewotICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHBhZ2Ut
PnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFu
ZGxlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG9wdGlvbmFsTmFtZSkgewotICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNv
bHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxO
YW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAq
b3B0aW9uYWxOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsT3JkaW5hbCkgewotICAgICAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBhZ2VJRCgpLCBmcmFt
ZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPndl
YlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDI0LDcgKzEwMjQsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleAogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3Mo
aGFuZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlEKSk7CiAgICAgfTsKIAotICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OlJlc29sdmVQYXJlbnRGcmFtZShwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlUGFyZW50RnJh
bWUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBwcm90b2NvbFN0cmlu
Z1RvQ29vcmRpbmF0ZVN5c3RlbShjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW1TdHJpbmcp
CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRl
RWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbgogICAgIH07CiAK
ICAgICBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSBvcHRpb25hbFNjcm9sbEludG9WaWV3
SWZOZWVkZWQgPyAqb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkIDogZmFsc2U7Ci0gICAg
cGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFnZS0+cGFnZUlEKCksIGZyYW1l
SUQsIG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvb3JkaW5hdGVTeXN0ZW0u
dmFsdWUoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhh
bmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29vcmRpbmF0ZVN5c3RlbS52YWx1ZSgpKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUs
IFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0xMTA5LDcg
KzExMDksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50
KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZAogICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6U2VsZWN0T3B0aW9uRWxl
bWVudChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50KHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1Nob3dpbmdKYXZh
U2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgYm9vbCogcmVzdWx0KQpAQCAtMTI3OSw3ICsx
Mjc5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgUmUKICAgICAgICAgY2FsbGJhY2stPnNlbmRT
dWNjZXNzKGJ1aWxkQXJyYXlGb3JDb29raWVzKGNvb2tpZXMpKTsKICAgICB9OwogCi0gICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6R2V0Q29va2llc0ZvckZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxv
cHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6R2V0
Q29va2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRl
bGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpkZWxldGVTaW5nbGVDb29raWUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbAog
ICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6RGVsZXRlQ29va2llKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5h
bWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVs
ZXRlQ29va2llKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluQnlB
ZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChTdHJpbmcgZG9tYWluKQpAQCAtMTQ0NSw3ICsxNDQ1LDcg
QEAgYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3QKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQogU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFn
ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXREaXNwYXRjaGVyc0J5
UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICByZXR1cm4gbV9pbnB1dERpc3Bh
dGNoZXJzQnlQYWdlLmVuc3VyZShwYWdlLmlkZW50aWZpZXIoKSwgWyZdIHsKICAgICAgICAgcmV0
dXJuIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQ
cm94eSYgcGFnZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQb2ludCwg
V1RGOjpudWxsb3B0KTsKICAgICB9OwogCi0gICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVu
dExheW91dChwYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRp
bmF0ZVN5c3RlbTo6TGF5b3V0Vmlld3BvcnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVtZW50TGF5
b3V0SGFuZGxlcikpOworICAgIHBhZ2UucHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFn
ZS53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgZmFsc2UsIENvb3JkaW5hdGVTeXN0
ZW06OkxheW91dFZpZXdwb3J0KSwgV1RGTW92ZShkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRs
ZXIpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQpAQCAt
MTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxs
YmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5h
ZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0
byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1Bl
clBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxi
YWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE1MDcs
NyArMTUwNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50CiAKICAgICAgICAgLy8gSWYgdGhl
IGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQg
bWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAm
JiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewotICAgICAgICAgICAgYXV0byBj
YWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0Nh
bmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShw
YWdlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51
bGxvcHQpOwogICAgICAgICB9CiAKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBh
Z2UsIEtleWJvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICB9OwogCi0g
ICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS5pZGVudGlmaWVyKCksIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgY2FsbGJhY2tJbk1h
cChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICBjYWxs
YmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CkBAIC0x
NTUzLDcgKzE1NTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlibwogICAgIC8vIElmIHRoZSBp
bnRlcmFjdGlvbiBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzLCB0aGVuIGRvIG5vdCB3YWl0
IGZvciBldmVudHMgdG8gYmUgZmx1c2hlZC4KICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gc29tZSBj
b3JuZXIgY2FzZXMgb24gbWFjT1MsIHN1Y2ggYXMgcmVsZWFzaW5nIGEga2V5IHdoaWxlIENvbW1h
bmQgaXMgcHJlc3NlZC4KICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS5pc1Byb2Nlc3Np
bmdLZXlib2FyZEV2ZW50cygpKSB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1f
cGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBh
Z2VJRCgpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nS2V5Ym9h
cmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKTsK
ICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOwogICAgIH0KIApAQCAtMTYz
Nyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VF
dmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIo
KSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkK
ICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhf
TkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZl
bnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBKCiAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVczQyBkcml2
ZXIgaW1wbGVtZW50YXRpb25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBqdXN0IGRv
IG5vdGhpbmcgc2lsZW50bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0aHMsIHdl
IGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBhcmUgb3V0
c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KICAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXAgJiYgIXBh
Z2UtPmlzUHJvY2Vzc2luZ01vdXNlRXZlbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FsbGJh
Y2tUb0NhbmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwg
PSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS0+
aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpudWxsb3B0
KTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb24KICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgIH07
CiAKLSAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+aWRlbnRpZmllcigpLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNhbGxiYWNrSW5NYXApCiAgICAgICAgIGNhbGxi
YWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAg
ICAgY2FsbGJhY2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sp
OwpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3AKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0U2NyZWVuc2hvdENhbGxiYWNrSUQrKzsKICAgICBtX3Nj
cmVlbnNob3RDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAot
ICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpUYWtlU2NyZWVuc2hvdChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIGNhbGxiYWNrSUQpLCAwKTsK
KyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6VGFrZVNjcmVlbnNob3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5k
bGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNsaXBUb1ZpZXdwb3J0LCBjYWxsYmFja0lEKSwg
MCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURh
dGFIYW5kbGUsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4
IGViNGJkMmJhNTNjLi5kY2Y5ZjRkMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsOCAr
MzQsOCBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAgICB2b2lk
IHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VO
YXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGlt
ZXJGaXJlZCgpOwogCkBAIC0yODIsMjIgKzI4MiwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXI+IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOworICAgIEhh
c2hNYXA8U3RyaW5nLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7
CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYkZy
YW1lSGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZp
Z2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAg
IEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlckZyYW1lOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJ
bnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+
IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZF
Ul9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBt
X3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElP
TlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3Bl
bmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1
aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzIx
LDcgKzMyMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQ
SXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAg
IC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlh
bCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5w
dXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJz
QnlQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmPFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJh
Y2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9r
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCmluZGV4IGRmMjZhY2RiMWNhLi41
MGY0MjdlZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAgLTUwLDkg
KzUwLDkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4
dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgYm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0lu
c3BlY3RvckNhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkpKQogICAgICAg
ICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUo
VGltZW91dCkpOwotICAgIG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2Uuc2V0KHBh
Z2UtPnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9wZW5kaW5nSW5zcGVjdG9y
Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAKICAgICAvLyBEb24ndCBicmluZyB0aGUgaW5zcGVjdG9yIHRvIGZyb250IHNpbmNlIHRo
aXMgbWF5IGJlIGRvbmUgYXV0b21hdGljYWxseS4KICAgICAvLyBXZSBqdXN0IHdhbnQgaXQgbG9h
ZGVkIHNvIGl0IGNhbiBwYXVzZSBpZiBhIGJyZWFrcG9pbnQgaXMgaGl0IGR1cmluZyBhIGNvbW1h
bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZTU5YmU5MWE0MjAuLjkyY2YyMDhhYTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmPFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVh
dGUoV2ViUGFnZVByb3gKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZSgmcGFnZSkK
IHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQogCiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQpAQCAtMzE0LDcg
KzMxNCw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6flBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSgpCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGlk
YXRlKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRy
OwogCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXIubW0KaW5kZXggZjAyMDgzZGNlYzcuLmFkNGI2MWVjMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KQEAg
LTQ0LDcgKzQ0LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZXBsYWNlUmVsYXRp
dmVUb1NlbGVjdGlvbihOU0F0dHJpYnV0ZWRTdHJpbmcgKmFubm8KICAgICBpZiAoIW1fcGFnZS5o
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJl
bGF0aXZlVG9TZWxlY3Rpb24oYW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0
aCwgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3Ro
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24o
YW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCwgcmVsYXRpdmVSZXBsYWNl
bWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKSwgbV9wYWdlLndlYlBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZW1vdmVBbm5vdGF0aW9u
UmVsYXRpdmVUb1NlbGVjdGlvbihOU1N0cmluZyAqYW5ub3RhdGlvbk5hbWUsIGludDY0X3Qgc2Vs
ZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgpCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgVGV4
dENoZWNraW5nQ29udHJvbGxlcjo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24o
TlNTdHJpbmcgKmFubm90CiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0
aW9uKGFubm90YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9uKGFubm90
YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4
IGY3OGE4MDRiMjM1Li43YWIzNGUwYmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAt
MzI1LDcgKzMyNSw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAgICAgOiBtX3BhZ2UoJnBh
Z2UpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAog
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KCkKQEAgLTMzNyw3ICszMzcsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6On5WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV9w
YWdlID0gbnVsbHB0cjsKIAogICAgIGF1dG8gY29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0
TWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggOGEzOTRhZmU3MzguLjJhMjhiMTU5MjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjEwLDcg
KzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigp
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV9wYWdl
SUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIGNvbnN0IFN0cmluZyYg
V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKIHsKLSAgICBwcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIG1fcGFnZUlELCBtZXNzYWdlUmVjZWl2ZXIpOworICAgIHByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQsIG1l
c3NhZ2VSZWNlaXZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25z
dCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlE
KTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1fd2ViUGFnZUlEKTsKIH0KIAogI2VuZGlmCkBAIC0yODUsMTcgKzI4NSwxNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtpbmdFcnJvck9j
Y3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVk
KCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Bl
YWtpbmdFcnJvck9jY3VycmVkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5IHNwZWVjaEJvdW5kYXJ5LCB1bnNp
Z25lZCBjaGFySW5kZXgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hC
b3VuZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChz
cGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5k
YXJ5LCBjaGFySW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2
b2ljZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDhkZjRkYTdiMzIwLi5mNDA0MmZlNzBkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzNjIs
NyArMTM2Miw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBs
RGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6fldlYlZp
ZXdJbXBsKCkKIHsKICAgICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgW21fcmVtb3Rl
T2JqZWN0UmVnaXN0cnkgX2ludmFsaWRhdGVdOwogICAgICAgICBtX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5ID0gbmlsOwogICAgIH0KQEAgLTE5NzksMTMgKzE5NzksMTMgQEAgZmxvYXQgV2ViVmlld0lt
cGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1w
bDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwg
IldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMs
IG1fcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNTMsNyArMjA1
Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAK
IHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0Rp
ZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdp
bmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIyMTYsMTkgKzIyMTYsMTkgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkKIAogdm9p
ZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBh
Z2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwg
JXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0Rp
ZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFn
ZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZp
ZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2Uo
KQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkg
YWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkp
OworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0
aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMzgyMyw3ICszODIzLDcgQEAgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgKldlYlZpZXdJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB7CiAgICAg
aWYgKCFtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7CiAgICAgICAgIG1fcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBhZG9wdE5TKFtbX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0
aFdlYlBhZ2VQcm94eTptX3BhZ2VdKTsKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIFttX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmpl
Y3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpLCBb
bV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAog
ICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjYTc2ODdmNmI1Mi4uMWU4MGZmNTI4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShH
RU9MT0NBVElPTikKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBh
bGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihn
ZW9sb2NhdGlvbklELCBhbGxvd2VkKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGFsbG93ZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKaW5kZXggNjJiMDcyOWY4YTUuLjYxYjhmMzZl
ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuY3BwCkBAIC01MCwxOSArNTAsMTkgQEAgSW5zcGVjdG9yVGFyZ2V0UHJveHk6Okluc3BlY3Rv
clRhcmdldFByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0YXIKIHZvaWQg
SW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwm
IGNoYW5uZWwpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0
b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNv
bm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBt
X3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpkaXNj
b25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJikKIHsKICAgICBpZiAobV9wYWdlLmhh
c1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChpZGVudGlmaWVyKCksIG1lc3NhZ2UpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSks
IG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAppbmRleCBmODc2MWIxZjNmNC4uNzQ0Mzk4ODM3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byByZXF1ZXN0
ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90aWZpY2F0
aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAgICAgICBt
X3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJt
aXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBhbGxvd2Vk
KSwgcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH0pOwogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFk
ZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDdhM2U5YjIzYmEu
Ljc2MDYzMWM0OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAgdWludDY0
X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7
CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwg
Ym9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZp
Y2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+IG5vdGlm
aWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90
aWZpY2F0aW9uSUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3Bh
aXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkp
KTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwpA
QCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGwKIAogdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoV2ViTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpKS5zZWNvbmQuZ2V0KCkpCisgICAgaWYgKFdl
Yk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1h
a2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29u
ZC5nZXQoKSkKICAgICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKCpub3RpZmljYXRpb24pOwogfQog
ICAgIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQp
CiB7Ci0gICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMu
dGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KSk7CisgICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMu
dGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRp
b25JRCkpOwogICAgIGlmICh1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdsb2JhbElE
Tm90aWZpY2F0aW9uUGFpci5maXJzdCkgewogICAgICAgICBXZWJOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9IGdsb2JhbElETm90aWZpY2F0aW9uUGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25JRCk7CkBA
IC0xMTksMTIgKzExOSwxMiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQogfQogCi1z
dGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCwg
UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCitz
dGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0K
IAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBQYWdlSWRlbnRpZmllciBkZXNp
cmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRl
c2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJl
ZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZp
Y2F0aW9uSUQpOwogfQpAQCAtMTQxLDE1ICsxNDEsMTUgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3Rp
ZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQog
ewotICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgYXV0byB0
YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKIAogICAgIFZlY3Rvcjx1
aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklE
cy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAg
IGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNh
dGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9
IGl0LT5rZXkuZmlyc3Q7CisgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBpdC0+a2V5LmZpcnN0
OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsK
LSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25J
RCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYgKCFmaWx0
ZXJGdW5jdGlvbihwYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJv
eHlJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5maXJzdDsKQEAg
LTE3MCw4ICsxNzAsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAgIGlmIChpdCA9PSBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Ci0gICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CisgICAgYXV0byogd2ViUGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOwogICAgIGlmICgh
d2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODUsOCArMTg0LDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1
ZS5maXJzdDsKLSAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2Uod2ViUGFnZUlEKTsKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDExNTc4MWU0
MzMzLi40OGFiNThlODFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9v
bCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3Rp
ZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0
aW9uKShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdl
Tm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBX
ZWJDb250ZXh0U3VwcGxlbWVudApAQCAtODksOSArODksOSBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAg
Ly8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5v
dGlmaWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0
X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQg
b2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFs
dWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNh
dGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+
Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZp
Y2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmlu
ZGV4IGQ3ZjBjM2M5NTAyLi4wYzAzNDA2OTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBzdXNwZW5kZWRQYWdlLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1f
d2ViUGFnZUlEKHBhZ2Uud2ViUGFnZUlEKCkpCiAgICAgLCBtX3Byb2Nlc3MoV1RGTW92ZShwcm9j
ZXNzKSkKICAgICAsIG1fbmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCkKICAgICAsIG1faXNTZXJ2
ZXJSZWRpcmVjdChpc1NlcnZlclJlZGlyZWN0KQpAQCAtNjMsMTMgKzY0LDEzIEBAIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJl
ZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3Bl
bmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2Vi
UGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3VzcGVuZGVk
UGFnZTogJXAiLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJ
RCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50
aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAgLy8gSWYgd2Ug
YXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUgV2ViUHJvY2Vzcycg
V2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAvLyBXZWJQYWdlUHJveHk6OmRpZENyZWF0
ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFsaXplIG1fbWFpbkZyYW1l
LiBJbiBzdWNoCkBAIC05MywxMSArOTQsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92
aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgmbV9wcm9jZXNz
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAg
ICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSht
X3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0ZWRMaW5r
U3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3Nl
KCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVV
c2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogCiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYo
KV0gewogICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKCk7CkBAIC0xMDYsNyArMTA3LDcg
QEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1p
bmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNz
RGlkVGVybWluYXRlOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAK
QEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQog
ICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94
eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBT
aW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9tYWlu
RnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVz
dCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOwpAQCAtMTM2LDIwICsxMzcsMjAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gbV9wYWdlLmNy
ZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKTsKICAgICBwYXJhbWV0
ZXJzLmlzUHJvY2Vzc1N3YXAgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZShtX3BhZ2UucGFnZUlEKCksIHBhcmFtZXRlcnMpLCAw
KTsKLSAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVk
TGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBwYXJhbWV0ZXJzKSwg
MCk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2UudmlzaXRl
ZExpbmtTdG9yZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24s
IGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykp
OwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVj
dCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwg
b3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFz
IHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBo
YXBwZW4gaW4gdGhlCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMK
IAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTog
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVt
OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1T
dGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xNzEsOCArMTcyLDgg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1cm4gJml0
ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0
YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBp
dGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1T
dGF0ZXMpKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVt
Lml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS5zdGFydCgpOwogfQogCkBAIC0xODcsNyArMTg4LDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKICAg
ICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMjUsNyArMjI2LDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlv
bklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmln
YXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAi
IHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHVybDsKIApAQCAtMjQ1LDcgKzI0Niw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25J
RCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIg
d2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBB
U1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHsgfTsKIApAQCAtMjYxLDkgKzI2Miw5IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50
b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6
IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRp
ZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50
NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9IHRydWU7
CiAgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGUzZWU2ODdmYTcu
LjViNGM5Y2YyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFsaWRh
dGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90
PiYgbmF2aWdhdGlvbklEID0gV1RGOjpudWxsb3B0KTsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9w
YWdlOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9tYWlu
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5jcHAKaW5kZXggNGFhMzQ0NDkwZDguLjU3N2M0MzQyMzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29uc3QgU3Ry
aW5nJiBkZWJ1Z2dhYmxlVHlwZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dhYmxlVHlw
ZSA9IGRlYnVnZ2FibGVUeXBlOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENv
bW1hbmRzVVJMOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tl
bmRDb21tYW5kc1VSTCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJ
bml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpLCBtX2luc3BlY3Rv
clBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVz
c2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkKQEAgLTE1
Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVu
ZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFn
ZSwgbnVsbHB0cik7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+
d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JCYXNlVVJMKCkpOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIGlm
ICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICB1bnRyYWNrSW5zcGVj
dG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBjNjRkN2VmMTliZC4uNzkyNGU0ZWYzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAt
ODAsNiArODAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4m
IG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogCiBTdXNwZW5kZWRQYWdlUHJv
eHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX3dlYlBhZ2VJRChwYWdlLndlYlBhZ2VJRCgpKQogICAgICwg
bV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAgICAgLCBtX21haW5GcmFtZUlEKG1haW5GcmFt
ZUlEKQogICAgICwgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKQpAQCAtODksMTAgKzkwLDEwIEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6
U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3Vu
dCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cisg
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAgICAgbV9zdXNw
ZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5zaW9uVGltZW91dCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTE0LDcgQEAgU3VzcGVuZGVk
UGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgpOwogCiAgICAgaWYg
KG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZykKLSAgICAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3By
b2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAogICAgIC8vIFdlIGNhbGwgbWF5YmVT
aHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBTdXNwZW5kZWRQYWdlIGlzIGN1cnJl
bnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sCiAgICAgLy8gYW5kIHdl
IHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vzc1Bvb2wgbWV0aG9kcy4KQEAgLTE0
Nyw3ICsxNDgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKICAgICBB
U1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kZWQpOwog
CiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBTdXNwZW5k
ZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNjAsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAg
LSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0g
dHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpwYWdl
RW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTIwMyw3ICsyMDQsNyBAQCB2
b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVu
c2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0cjsK
ICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgaWYgKG1fc3Vz
cGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQogICAgICAg
ICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgi
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBXZWJQYWdlIElEICIs
IG1fd2ViUGFnZUlELnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCA5MTY1M2Nj
NzhlYS4uN2I5NWI2ZWRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5oCkBAIC03NCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdl
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9t
YWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDAyMzg3ZDQzYmNjLi5iNjYyMGRjMWYwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZChQZXJtaXNzaW9uSW5mCiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZCgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTE5MSw3ICsx
OTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZW55
UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgICAgICBtX2RlbmllZFJlcXVlc3Rz
LmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
IH0pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZChyZXF1ZXN0LnVz
ZXJNZWRpYUlEKCksIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQocmVxdWVzdC51c2VyTWVkaWFJRCgpLCB0b1dlYkNv
cmUocmVhc29uKSwgaW52YWxpZENvbnN0cmFpbnQpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKICAgICBVTlVTRURfUEFSQU0oaW52YWxpZENv
bnN0cmFpbnQpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC0tbV9o
YXNQZW5kaW5nQ2FwdHVyZTsKLSAgICB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0sIG1fcGFn
ZS53ZWJQYWdlSUQoKSk7CiAKICAgICBwcm9jZXNzTmV4dFVzZXJNZWRpYVJlcXVlc3RJZk5lZWRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKaW5kZXggMWU5MWFiYjZlZmQuLmI0ODI3NzI5ZDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2
NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lw
ZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRy
ZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xs
ZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwg
Vmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdl
cygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdl
IElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmll
d0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtODYsMTQgKzg2LDE0IEBAIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5KQogICAgIGlmICh3ZWJQYWdlUHJveHkuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgY29ubmVjdFRvUHJvY2VzcygpOwogCi0gICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CisgICAgdmlld0dl
c3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5pZGVudGlmaWVy
KCksIHRoaXMpOwogfQogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNvbnRy
b2xsZXIoKQogewogICAgIHBsYXRmb3JtVGVhcmRvd24oKTsKIAotICAgIHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnNGb3JBbGxQYWdlcygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkucmVtb3ZlKG1fd2ViUGFnZVBy
b3h5LmlkZW50aWZpZXIoKSk7CiAKICAgICBkaXNjb25uZWN0RnJvbVByb2Nlc3MoKTsKIH0KQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
b21Qcm9jZXNzKCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKICAgICBt
X2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gZmFsc2U7CiB9CiAKQEAgLTExMiwxMSArMTEyLDExIEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAgICBpZiAo
bV9pc0Nvbm5lY3RlZFRvUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgp
LCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9pc0Nvbm5lY3RlZFRv
UHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVD
b250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKK1ZpZXdHZXN0dXJlQ29u
dHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gdmlld0dl
c3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlmIChnZXN0
dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCku
ZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmZv
cmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVz
dCA9IHRydWU7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAgIEdlc3R1
cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdlUHJveHku
Zm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRy
b2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC02MTcs
NyArNjE3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVlc3RSZW5kZXJUcmVl
U2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvJiBwcm9jZXNzID0gbV93ZWJQYWdl
UHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFs
UGFnZVByb3h5KCktPnByb2Nlc3MoKSA6IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKTsKICAgICBh
dXRvIHRocmVzaG9sZCA9IG1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5yZW5kZXJUcmVlU2l6ZVRo
cmVzaG9sZCgpOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh0aHJl
c2hvbGQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaAppbmRleCA3Y2Q2ZThmZTA5MS4uMTcxYjViNjg0ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yNyw5ICsyNyw5
IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01v
bm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250
cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgR2Vz
dHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9y
R2VzdHVyZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGlj
IEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVy
ZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1N0b3JlLmNwcAppbmRleCBlYzUzZGQ2YTVkZi4uZDc5ZDdhZDg0NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDIsNiArMTAyLDcgQEAg
dm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGwoKQogCiB2b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hh
cmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKKyAgICAvLyBGSVhNRTogTmVlZHMgdG8gbG9vayB1
cCBXZWJQYWdlUHJveHkgZnJvbSBXZWJQYWdlSUQuCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94
eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKSB7CiAgICAgICAgIGlmICghd2Vi
UGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5k
ZXggYjVhNWM4MjM0ZDguLmM2NWUxNmI5YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAg
ICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQog
CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDgyNzVjZjZlYzk1Li41MzcwMzcxYzRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRl
bUZvcklEKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50CiAgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChpdGVtLT5wYWdlSUQoKSA9PSBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBBU1NFUlQoaXRlbS0+cGFnZUlEKCkgPT0gbV9wYWdlLT5pZGVudGlm
aWVyKCkpOwogICAgIHJldHVybiBpdGVtOwogfQogCkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBX
ZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0ZvcndhcmRMaXN0U3RhdGUg
YmFja0ZvcndhcmRMaXN0U3QKICAgICAvLyBGSVhNRTogRW5hYmxlIHJlc3RvcmluZyByZXNvdXJj
ZURpcmVjdG9yeVVSTC4KICAgICBmb3IgKGF1dG8mIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSA6
IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zKSB7CiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVjdElkZW50
aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPjo6Z2Vu
ZXJhdGUoKSB9OwotICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9wYWdl
LT5wYWdlSUQoKSkpOworICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9w
YWdlLT5pZGVudGlmaWVyKCkpKTsKICAgICB9CiAgICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9y
d2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpiYWNrRm9yd2Fy
ZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OwogICAgIG1fZW50cmllcyA9
IFdURk1vdmUoaXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29t
bWFuZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4uMGZlNmQ4MzQ5ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRD
b21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2Nv
bW1hbmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hN
ZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVy
RWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlJlZG8pOwogfQogCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6cmVhcHBseSgpCiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBseUVkaXRDb21t
YW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1h
bmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRp
dENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlVuZG8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGVlMzM3MTA4MTcwLi5kYjIyNGI2MWNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFt
ZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmws
IHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwg
ZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJh
bWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSwgbV9w
YWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmco
KSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRp
bmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUo
bV9mcmFtZUlEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1l
UHJveHk6OmNhblByb3ZpZGVTb3VyY2UoKSBjb25zdApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQg
V2ViRnJhbWVQcm94eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29sbGFw
c2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDAuLjcyMTI1YjBlZTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmNwcApAQCAtNDQsMjUgKzQ0LDI1IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGdWxsCiAgICAgOiBt
X3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBt
X3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCks
ICp0aGlzKTsKIH0KIAogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkoKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICAgICBtX2NsaWVudC5jbG9zZUZ1
bGxTY3JlZW5NYW5hZ2VyKCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53
aWxsRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4oKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2Ny
ZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEVudGVyRnVsbHNjcmVl
bigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpE
aWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIAogICAgIGlmIChtX3Bh
Z2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRp
b25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtNzMsMTMgKzczLDEzIEBAIHZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVs
bHNjcmVlbkNsaWVudCgpLndpbGxFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1
bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSwgbV9w
YWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpk
aWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRF
eGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAgICAg
CiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBp
ZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC04OSwxMiArODksMTIg
QEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAK
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihi
b29sIGFuaW1hdGluZykKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmltYXRpbmdGdWxsU2NyZWVuKGFuaW1hdGluZyksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3Bh
Z2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJl
cXVlc3RFeGl0RnVsbFNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2Ny
ZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTA4LDI3ICsxMDgsMjcgQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBs
ZXRpb24KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzYXZlU2Nyb2xsUG9zaXRp
b24oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVT
Y3JvbGxQb3NpdGlvbigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0aW9u
KCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c2V0RnVsbHNjcmVlbkluc2V0cyhjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYg
aW5zZXRzKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRzKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGluc2V0cyksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9
CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJh
dGlvbihkdXJhdGlvbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihib29sIGhp
ZGRlbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLndl
YlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
ZjkzZmE2NzY4YTIuLmU2MjFhOGZkODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3RvclByb3h5
OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiB7CiAgICAg
aWYgKGluc3BlY3RlZFBhZ2UgJiYgaW5zcGVjdGVkUGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewogICAgICAgICBtX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0ZWRQYWdlOwotICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgfQogfQog
CkBAIC04OSw3ICs4OSw3IEBAIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
dmFsaWRhdGUoKQogewogICAgIGlmIChtX2luc3BlY3RlZFBhZ2UpCi0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwpAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5z
cGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogICAgIGNyZWF0ZUZy
b250ZW5kUGFnZSgpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Tm90aWZ5TmVlZERlYnVnZ2Vy
QnJlYWsoKSwgMCk7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2hvdygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvdygpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OkNsb3NlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnJlc2V0U3RhdGUoKQogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVzZXQoKQogewogICAgIGlm
IChtX2luc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9p
bnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PndlYlBhZ2VJRCgpKTsKICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsKICAgICB9
CiB9CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp1cGRhdGVG
b3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgQVNTRVJU
KGluc3BlY3RlZFBhZ2UpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVkUGFnZTsK
LSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIAogICAg
IGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6VXBkYXRlQ29ubmVjdGlvbigpLCBtX2lu
c3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
cikKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVu
ZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaQogICAgIGlmICgh
bV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9pbnNwZWN0
ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dD
b25zb2xlKCkKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93
Q29uc29sZSgpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d1Jlc291cmNlcygpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jl
c291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2Uo
KTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yODAsMTkgKzI4MCwxOSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBp
ZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldElu
c3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9p
bnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9pbnNwZWN0
ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsK
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRv
bSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9t
KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9p
bnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDksOCArMzA5
LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2li
bGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAg
IHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zNDMsOSArMzQzLDkgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmls
aW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2Zp
bGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6dG9nZ2xlRWxlbWVudFNlbGVjdGlvbigpCkBAIC0zNTUsMTAgKzM1NSwxMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAg
IGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUpIHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50
U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigp
LCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBj
b25uZWN0KCk7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3Rl
ZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9CiB9CiAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAgdHJhY2tJbnNw
ZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSwgbV9pbnNwZWN0ZWRQYWdlKTsKIAotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFn
ZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTQxMSw3
ICs0MTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9u
dGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAgIGlmICghbV9pbnNwZWN0b3JQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBt
X2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0FjdGl2ZUZy
b250ZW5kKTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIyLDI2ICs0MjIs
MjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQo
Ym9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVkID0gc2hv
dWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2Fz
dDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0
YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQp
LCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFj
aGVkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAg
ICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdo
dDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
Y2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFj
aGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVk
KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCi0gICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5n
VW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQ
YWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIG1fdW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clRlc3RQYWdlVVJMKCkgOiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7
CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKICAg
ICBTZXRGb3JTY29wZTxib29sPiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwogICAgIG1f
aXNWaXNpYmxlID0gdHJ1ZTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1f
aW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAg
ICAgICAgcGxhdGZvcm1BdHRhY2goKTsKQEAgLTQ4NCw4ICs0ODQsOCBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICB1bnRyYWNrSW5z
cGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlz
aWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
bnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBpZiAobV9pc0FjdGl2ZUZyb250ZW5k
KSB7CiAgICAgICAgIG1faXNBY3RpdmVGcm9udGVuZCA9IGZhbHNlOwpAQCAtNTQ4LDcgKzU0OCw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9v
bCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2Ug
JiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0
dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1Vu
YXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwog
CiAgICAgcGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2FuQXR0YWNoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIyZTlhNWFlZWQ2
Li5hMDQzZWNiMjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0yNTYsOCArMjU2LDggQEAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBhc3Nl
cnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24o
KSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdFX0NIRUNL
X0JBU0UoY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJv
Y2VzcywgdXJsKSwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQogCi0jZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNo
YW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIl
cCAtIFtwYWdlUHJveHlJRD0lbGx1LCB3ZWJQYWdlSUQ9JWxsdSwgUElEPSVpXSBXZWJQYWdlUHJv
eHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQor
I2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwg
IiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0lbGx1LCBQSUQ9JWldIFdlYlBhZ2VQ
cm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18p
CiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQg
aW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsK
QEAgLTM5Myw3ICszOTMsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmCiB9CiAKIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikK
LSAgICA6IG1fcGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgIDogbV9pZGVu
dGlmaWVyKElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX3dlYlBhZ2VJRChQYWdlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdl
Q2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQog
ICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xp
ZW50PigpKQpAQCAtNDQxLDcgKzQ0Miw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAjZW5k
aWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3Ry
dWN0b3I6Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkp
CiAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsK
QEAgLTQ3MCw3ICs0NzEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCk7CiAK
LSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3Zl
cnJpZGUocHJlZmVyZW5jZXNTdG9yZSgpLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZUtleSgpKSk7CkBAIC00OTIsOSArNDkzLDkg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKLSAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdl
KG1fcGFnZUlEKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1faWRl
bnRpZmllcikgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGZvciAoV2ViUGFn
ZVByb3h5KiBwYWdlIDogbV9wcm9jZXNzLT5wYWdlcygpKQogICAgICAgICBBU1NFUlQocGFnZSAh
PSB0aGlzKTsKQEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiAgICAgbV91aUNs
aWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1fd2ViUGFnZUlEKTsKIAogICAgIHNl
dENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5lZWRzRm9u
dEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAgLTYzNSw3
ICs2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGlu
Z0NsaWVudChoYXNDbGllbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6
Ok9ic2VydmVyPiYmIG9ic2VydmVyKQpAQCAtNzIzLDEwICs3MjQsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5n
UHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiIFBSSXU2NCk7CiAKICAgICBtX3By
b2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0
YVN0b3JlOjpZZXMpOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgYXV0byYgcHJvY2Vz
c1Bvb2wgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCk7CiAKQEAgLTczOCw3ICs3MzksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpC
ZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMp
OwogCiAgICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKElzUHJvY2Vzc1N3YXA6Ok5vKTsK
IH0KQEAgLTc3OCw3ICs3NzksNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQ
b3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBt
YWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCks
ICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1
c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBz
dXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVz
IiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5n
U3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9t
SXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQg
Zm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0
aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVy
IGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBk
byBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAtNzk2LDcgKzc5Nyw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYm
IGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6Iik7CiAKICAg
ICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9
IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODExLDcgKzgxMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2Vzcywgc3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpC
ZWdpbnNVc2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7
CiAKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoSXNQcm9jZXNzU3dhcDo6WWVzKTsK
IH0KQEAgLTg4MSwxMCArODgyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NG
b3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNs
b3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9z
ZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODkzLDcgKzg5
NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7CiAKICAg
ICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1
cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxv
YWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC05MDYsNyArOTA3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKICAgICB9CiAKICAgICAvLyBXZSBh
bGxvdyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5nIGEgV2ViUHJvY2VzcyB0aGF0J3MgYmVl
biBraWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5k
ZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51
bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4
ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxs
b3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTkxNCwxMCArOTE1LDEwIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJv
Y2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRo
SXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRl
bTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC05MjksNyArOTMwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogICAgIGF1dG8gbmF2
aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24o
aXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIEZyYW1lTG9hZFR5cGU6Oklu
ZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIGl0ZW0u
aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhl
ZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxv
cHQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTYwLDkgKzk2MSw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAgICAgc2V0RHJhd2luZ0FyZWEo
cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdBcmVhUHJveHkobV9wcm9jZXNzKSk7CiAgICAgQVNT
RVJUKG1fZHJhd2luZ0FyZWEpOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nl
c3MsICptX2RyYXdpbmdBcmVhKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBjcmVhdGlvblBhcmFtZXRlcnMo
bV9wcm9jZXNzLCAqbV9kcmF3aW5nQXJlYSkpLCAwKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkVmlz
aXRlZExpbmtTdG9yZVVzZXIodmlzaXRlZExpbmtTdG9yZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcih2aXNpdGVkTGlua1N0b3JlKCksIG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCkBAIC05NzAsNyArOTcx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xv
c2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAt
MTAyMSw5ICsxMDIyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBt
X3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9j
ZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlE
KTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsKIAogICAgIC8vIE51
bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgpAQCAtMTA0MywxNCAr
MTA0NCwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZToiKTsKIAog
ICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIg
Z29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBw
ZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3VkZGVuVGVybWlu
YXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC0xMTE4LDcgKzExMTksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwog
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRS
ZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVu
Y2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTExMzIs
NyArMTEzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lz
Q2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246Iik7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAKQEAgLTExNTQsMTYgKzExNTUsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAg
IGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBt
X3BhZ2VJRCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVl
c3QobG9hZFBhcmFtZXRlcnMpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTExNzIsNyArMTE3Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAg
aWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xMTgyLDcgKzExODMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVz
b3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5
VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwNyw3ICsxMjA4LDcg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2Fk
UGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xMjE1LDEwICsx
MjE2LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiIp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQoIW1faXND
bG9zZWQpOwogCkBAIC0xMjUzLDE5ICsxMjU0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIHBy
b2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwotICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwg
bV9wYWdlSUQpOworICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQYWdlSUQpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUwiKTsK
IAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGlu
ZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBz
dGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQg
dGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4K
ICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JG
YWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVy
KSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjk2LDE2ICsxMjk3LDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCgqdGhpcywgdW5yZWFjaGFibGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJu
YXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2Vi
QXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdl
YkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzIzLDE2ICsxMzI0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQ
YWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9p
bnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0MiwyMCArMTM0MywyMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQ
cm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBz
Y3JlZW5Qb2ludCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInN0b3BMb2FkaW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fd2ViUGFnZUlEKTsKICAgICBpZiAo
bV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgp
OwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0xMzY1LDcgKzEzNjYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0
aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
bG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM5MCw3ICsxMzkxLDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6
OlJlbG9hZE9wdGlvbj4gb3AKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJDb3JlOjpSZWxv
YWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZpZ2F0aW9uLT5z
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSks
IG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCkBAIC0xNDQ2LDcgKzE0NDcsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRl
bSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tG
b3J3YXJkSXRlbToiKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFj
a0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0NTksNyArMTQ2MCw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5n
QVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0o
bmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQo
KSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpu
dWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE0NjcsMTQgKzE0Njgs
MTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9z
aXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQp
CkBAIC0xNTM2LDcgKzE1MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9t
YXRpb24oY29udHJvbGxlZCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0xNTYxLDcgKzE1
NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGlu
ZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU5Nyw3ICsxNTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRh
cmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBT
dHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJn
ZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwog
fQogCkBAIC0xNjA4LDcgKzE2MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29sb3IpCiAKICAgICBtX2JhY2tncm91bmRD
b2xvciA9IGNvbG9yOwogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvciks
IG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTYyNCw5
ICsxNjI1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBj
b250ZW50SW5zZXQpCiAgICAgTWFjaFNlbmRSaWdodCBmZW5jZSA9IG1fZHJhd2luZ0FyZWEtPmNy
ZWF0ZUZlbmNlKCk7CiAKICAgICBhdXRvIGZlbmNlQXR0YWNobWVudCA9IElQQzo6QXR0YWNobWVu
dChmZW5jZS5sZWFrU2VuZFJpZ2h0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNl
ZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNlZChjb250
ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fd2ViUGFnZUlEKTsKICNlbHNlCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVu
dEluc2V0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCksIG1fd2ViUGFnZUlEKTsKICNlbmRp
ZgogfQogCkBAIC0xNjM4LDcgKzE2MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5kZXJs
YXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV91bmRlcmxheUNvbG9yID0gY29sb3I7
CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29s
b3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2ls
bFN0YXJ0TGl2ZVJlc2l6ZSgpCkBAIC0xNjQ3LDE0ICsxNjQ4LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNs
b3NlT3ZlcmxheWVkVmlld3MoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUo
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmll
d1dpbGxFbmRMaXZlUmVzaXplKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUmVnaW9uJiByZWdpb24pCkBAIC0xNzEyLDcg
KzE3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5
SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hh
bmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oQWN0
aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2Vk
KTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdl
UHJveHkgIiA8PCBpZGVudGlmaWVyKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlIC0gbWF5
SGF2ZUNoYW5nZWQgIiA8PCBtYXlIYXZlQ2hhbmdlZCk7CiAKICAgICBtX3BvdGVudGlhbGx5Q2hh
bmdlZEFjdGl2aXR5U3RhdGVGbGFncy5hZGQobWF5SGF2ZUNoYW5nZWQpOwogICAgIG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZVdhbnRzU3luY2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CkBAIC0xNzQ4
LDcgKzE3NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAg
ICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBwYWdlQ2xpZW50KCkudmlld0xh
eWVySG9zdGluZ01vZGUoKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IGxheWVySG9z
dGluZ01vZGUpIHsKICAgICAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5nTW9k
ZTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhv
c3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3Rp
bmdNb2RlKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIH0KIApAQCAtMTc2MSw3ICsxNzYyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0dfV0lUSF9T
VFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQo
KSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSAtIHBvdGVudGlhbGx5Q2hhbmdlZEFj
dGl2aXR5U3RhdGVGbGFncyAiIDw8IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZs
YWdzKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQ
YWdlUHJveHkgIiA8PCBpZGVudGlmaWVyKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFu
Z2UgLSBwb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgIiA8PCBtX3BvdGVudGlh
bGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyk7CiAKICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0
eSBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkgaWRsZSAm
IG9jY2x1ZGVkIGFnbm9zdGljIHN0YXRlLgogICAgIGlmIChtX3BvdGVudGlhbGx5Q2hhbmdlZEFj
dGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKQEAgLTE3NzQsNyAr
MTc3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2Uo
KQogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHByZXZpb3VzQWN0aXZpdHlT
dGF0ZTsKIAogICAgIGlmIChjaGFuZ2VkKQotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZp
dHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgcHJldmlvdXNB
Y3Rpdml0eVN0YXRlIDw8ICIgdG8gIiA8PCBtX2FjdGl2aXR5U3RhdGUpOworICAgICAgICBMT0df
V0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlUHJveHkgIiA8PCBp
ZGVudGlmaWVyKCkgPDwgIiBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2U6IHN0YXRlIGNoYW5n
ZWQgZnJvbSAiIDw8IHByZXZpb3VzQWN0aXZpdHlTdGF0ZSA8PCAiIHRvICIgPDwgbV9hY3Rpdml0
eVN0YXRlKTsKIAogICAgIGlmICgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKSAmJiBpc1ZpZXdXaW5kb3dBY3RpdmUoKSkKICAgICAgICAgdXBkYXRlQ3VycmVudE1vZGlm
aWVyU3RhdGUoKTsKQEAgLTE3OTcsNyArMTc5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNw
YXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
ID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKICAgICBpZiAoY2hhbmdlZCB8
fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91
cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZSht
X2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSwgbV93
ZWJQYWdlSUQpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVh
cigpOwogCkBAIC0xODk5LDcgKzE5MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJIb3N0
aW5nTW9kZURpZENoYW5nZSgpCiAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5n
TW9kZTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5n
TW9kZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShB
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQpAQCAtMTk0MSwyMSAr
MTk0MiwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwogICAgIH0KIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlz
S2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3Vz
KGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZWxlY3Rpb24o
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxl
Y3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVNl
bGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVT
ZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTE5NjYsNyArMTk2Nyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTc0LDcg
KzE5NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZl
bCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RM
ZXZlbCgpCkBAIC0xOTgyLDcgKzE5ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVhc2VM
aXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RM
ZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VMaXN0VHlwZSgpCkBAIC0xOTkwLDcgKzE5OTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2hhbmdlTGlzdFR5cGUoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
aGFuZ2VMaXN0VHlwZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikKQEAgLTE5OTgsNyArMTk5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCkKQEAg
LTIwMjIsNyArMjAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0ZvbnRBdHRyaWJ1
dGVzKGJvb2wgbmVlZHNGb250QXR0cmlidXRlcykKICAgICBtX25lZWRzRm9udEF0dHJpYnV0ZXMg
PSBuZWVkc0ZvbnRBdHRyaWJ1dGVzOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNGb250QXR0
cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMobmVlZHNG
b250QXR0cmlidXRlcyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Om1h
aW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QKQEAgLTIwNDUsNyArMjA0Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVk
dWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdEFsbCgpCkBAIC0yMDUzLDcgKzIwNTQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0
QWxsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbGVjdEFsbCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC0yMDY0LDcgKzIwNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYg
YQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJndW1lbnQsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYg
YXJndW1lbnQpCkBAIC0yMDc3LDcgKzIwNzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQog
ICAgIGlmIChjb21tYW5kTmFtZSA9PSBpZ25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQogICAgICAg
ICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5h
bWUsIGFyZ3VtZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRl
cyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMjA4OCw3ICsyMDg5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3Rh
cnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXR0cmlidXRlc0NhbGxiYWNr
KGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCkBAIC0yMTA5LDcgKzIxMTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRp
dGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RWRpdGFibGUoZWRpdGFibGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KICAg
ICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZChib29sIG11
dGVkKQpAQCAtMjE3NCw5ICsyMTc1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKIAogICAg
IEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0aW9uRGF0YSBz
ZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRy
YWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdEYXRhLmZs
YWdzKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3Np
dGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwgbV93ZWJQYWdl
SUQpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5z
aW9uc0ZvclVwbG9hZCksIG1fd2ViUGFnZUlEKTsKICNlbmRpZgogfQogCkBAIC0yMjA2LDcgKzIy
MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsbwogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0
aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSwgbV93
ZWJQYWdlSUQpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjIxOCwxMyAr
MjIxOSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9v
bCBoYW5kbGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0RHJhZygpCiB7CiAgICAgaWYg
KGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV93ZWJQYWdlSUQpOwogfQog
ICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYWdDYW5jZWxsZWQoKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQpAQCAtMjMyMyw3ICsyMzI0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCgpCiAgICAgfQog
CiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMg
KHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1f
bW91c2VFdmVudFF1ZXVlLnNpemUoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogI2lmIE1FUkdFX1dIRUVMX0VWRU5UUwpAQCAtMjQzMiw3ICsyNDMzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQogewog
ICAgIG1fcHJvY2Vzcy0+c2VuZCgKICAgICAgICAgTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6
V2hlZWxFdmVudCgKLSAgICAgICAgICAgIG1fcGFnZUlELAorICAgICAgICAgICAgbV93ZWJQYWdl
SUQsCiAgICAgICAgICAgICBldmVudCwKICAgICAgICAgICAgIHNob3VsZFVzZUltcGxpY2l0UnVi
YmVyQmFuZENvbnRyb2woKSA/ICFtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKSA6IHJ1YmJl
ckJhbmRzQXRMZWZ0KCksCiAgICAgICAgICAgICBzaG91bGRVc2VJbXBsaWNpdFJ1YmJlckJhbmRD
b250cm9sKCkgPyAhbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCkgOiBydWJiZXJCYW5k
c0F0UmlnaHQoKSwKQEAgLTI0ODMsNyArMjQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAg
ICAgaWYgKG1fa2V5RXZlbnRRdWV1ZS5zaXplKCkgPT0gMSkgeyAvLyBPdGhlcndpc2UsIHNlbnQg
ZnJvbSBEaWRSZWNlaXZlRXZlbnQgbWVzc2FnZSBoYW5kbGVyLgogICAgICAgICBMT0coS2V5SGFu
ZGxpbmcsICIgVUkgcHJvY2Vzczogc2VudCBrZXlFdmVudCBmcm9tIGhhbmRsZUtleWJvYXJkRXZl
bnQiKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVu
dChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpLZXlFdmVudChldmVudCksIG1fd2ViUGFnZUlEKTsKICAgICB9CiB9CiAKQEAgLTI2
NTYsNyArMjY1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICBlbHNlCiAgICAgICAgIHJlc3Bv
bnNpdmVuZXNzVGltZXIuc3RhcnQoKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
RXZlbnREaXNwYXRjaGVyOjpHZXN0dXJlRXZlbnQobV9wYWdlSUQsIGV2ZW50KSwgMCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Okdlc3R1cmVFdmVudCht
X3dlYlBhZ2VJRCwgZXZlbnQpLCAwKTsKIH0KICNlbmRpZgogCkBAIC0yNjg5LDcgKzI2OTAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3VzbHkoTmF0aXZl
V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGlt
ZXIoKS5zdGFydCgpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgcmVwbHlS
ZWNlaXZlZCA9IG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpSZXBseSho
YW5kbGVkKSwgbV9wYWdlSUQsIDFfcywgSVBDOjpTZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRj
aFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7CisgICAgYm9v
bCByZXBseVJlY2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6
OlJlcGx5KGhhbmRsZWQpLCBtX3dlYlBhZ2VJRCwgMV9zLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpG
b3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5
KTsKICAgICAvLyBJZiB0aGUgc3luYyByZXF1ZXN0IGhhcyB0aW1lZCBvdXQsIHdlIHNob3VsZCBj
b25zaWRlciB0aGUgZXZlbnQgaGFuZGxlZC4gVGhlIFdlYiBQcm9jZXNzIGlzIHRvbyBidXN5IHRv
IGFuc3dlciBhbnkgcXVlc3Rpb25zLCBzbyB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgYWxzbyBsaWtl
bHkgdG8gaGF2ZSBpc3N1ZXMuCiAgICAgaWYgKCFyZXBseVJlY2VpdmVkKQogICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKQEAgLTI3MDgsNyArMjcwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dFBvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVzZXRQb3RlbnRpYWxUYXBTZWN1cml0eU9yaWdpbigpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXNldFBvdGVudGlhbFRhcFNlY3Vy
aXR5T3JpZ2luKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVu
dCkKQEAgLTI3MjAsNyArMjcyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2
ZW50QXN5bmNocm9ub3VzbHkoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlCiAgICAgaWYg
KHRvdWNoRXZlbnRzVHJhY2tpbmdUeXBlID09IFRyYWNraW5nVHlwZTo6Tm90VHJhY2tpbmcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6RXZlbnREaXNw
YXRjaGVyOjpUb3VjaEV2ZW50KG1fcGFnZUlELCBldmVudCksIDApOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fd2ViUGFnZUlELCBl
dmVudCksIDApOwogCiAgICAgaWYgKGV2ZW50LmFsbFRvdWNoUG9pbnRzQXJlUmVsZWFzZWQoKSkg
ewogICAgICAgICBtX3RvdWNoQW5kUG9pbnRlckV2ZW50VHJhY2tpbmcucmVzZXQoKTsKQEAgLTI3
NDUsNyArMjc0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQp
IHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9w
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZl
bnQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fdG91Y2hFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZh
bHNlOwpAQCAtMjc2OCwxMiArMjc2OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoUE9J
TlRFUl9FVkVOVFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsUG9pbnRlcihXZWJDb3JlOjpQ
b2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZG9jdW1lbnRQb2lu
dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50
ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRlcihwb2ludGVySWQsIGRvY3VtZW50
UG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaFdpdGhJ
ZGVudGlmaWVyV2FzUmVtb3ZlZChXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldh
c1JlbW92ZWQocG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQocG9pbnRlcklkKSwg
bV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTI3ODIsNyArMjc4Myw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzY3JvbGxCeShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNp
YmxlQXJlYSgpCkBAIC0yNzkwLDcgKzI3OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVy
U2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25T
ZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lvblNlbmRlcj4gewpAQCAtMjkz
Myw3ICsyOTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3By
b3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29t
bWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9u
YWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAKICAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5G
cmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjk0OSwxNCArMjk1MCwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZwogCiAgICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9j
ZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKIAotICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlSUQpOwogICAgIGF1dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0
aW9uKG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBkaWRTdXNw
ZW5kUHJldmlvdXNQYWdlID0gbmF2aWdhdGlvbiA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoKm5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkgOiBmYWxzZTsKICAgICBt
X3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9
PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQ
cm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVu
ZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBi
ZSBhYmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9z
ZSBpdC4KICAgICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCi0gICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgcGFnZUlEKCkpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fd2ViUGFnZUlEKTsK
IAogICAgIHN3YXBUb1dlYlByb2Nlc3MobV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKSwgbV9w
cm92aXNpb25hbFBhZ2UtPnRha2VEcmF3aW5nQXJlYSgpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+bWFp
bkZyYW1lKCkpOwogCkBAIC0yOTczLDcgKzI5NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29t
bWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZp
ZwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJv
Y2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJv
Y2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQ
SUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGlu
dWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBu
YXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CiAK
ICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKQEAgLTI5OTgsNyArMjk5OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpICYmIChuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0b3J5OjpZ
ZXMpKSB7CiAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlz
dG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFi
b3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCiAgICAgICAgIC8v
IGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgotICAgICAgICBuZXdQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaCht
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpLCBtX3BhZ2VJRCk7
CisgICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRI
aXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5p
dGVtU3RhdGUoKSksIG1fd2ViUGFnZUlEKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV29yayBv
dXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0
YwpAQCAtMzA0OCw3ICszMDQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChT
dHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVz
ZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwODUsNyArMzA4Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAg
ICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzA5
NSw3ICszMDk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBj
b25zdApAQCAtMzExMiw3ICszMTEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1l
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJv
b2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMTM0LDcg
KzMxMzUsNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpG
dW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBz
ZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZy
b21TZXNzaW9uU3RhdGU6Iik7CiAKICAgICBtX3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVT
aXplID0gMDsKICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkID0gZmFsc2U7CkBAIC0z
MTUwLDcgKzMxNTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogICAgICAgICBsYXVuY2hJ
bml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3Qt
PnJlc3RvcmVGcm9tU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3Rh
dGUpKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVT
ZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbihtX2Jh
Y2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgICAgIGF1
dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICAgICAg
bV9wYWdlTG9hZFN0YXRlLnNldENhbkdvQmFjayh0cmFuc2FjdGlvbiwgbV9iYWNrRm9yd2FyZExp
c3QtPmJhY2tJdGVtKCkpOwpAQCAtMzE5OCw3ICszMTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFRleHRab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRUZXh0Wm9vbUZhY3RvcihtX3RleHRab29tRmFjdG9yKSwgbV9wYWdl
SUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRab29t
RmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKQEAgLTMyMTMsNyAr
MzIxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9v
bUZhY3RvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZVpvb21GYWN0
b3IobV9wYWdlWm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFj
dG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikKQEAgLTMy
MjksNyArMzIzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRaCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9vbUZhY3Rv
ciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0
b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGRvdWJsZSBXZWJQYWdl
UHJveHk6OnBhZ2Vab29tRmFjdG9yKCkgY29uc3QKQEAgLTMyNTksNyArMzI2MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3Jp
Z2luKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2Uoc2NhbGUsIG9y
aWdpbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoZG91YmxlIHNjYWxlLCBjb25zdCBJ
bnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpCkBAIC0zMjcxLDcgKzMyNzIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoZG91YmxlIHNjYWxl
LCBjb25zdCBJbnRQb2ludCYgY2VudAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
Y2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2Fs
ZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVZpZXcoZG91YmxlIHNj
YWxlKQpAQCAtMzI4Myw3ICszMjg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlVmlldyhk
b3VibGUgc2NhbGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlVmlldyhz
Y2FsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjYWxlVmlldyhzY2FsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQpAQCAtMzMw
Miw3ICszMzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlz
cGxheUlEKSwgbV93ZWJQYWdlSUQpOwogfQogCiBmbG9hdCBXZWJQYWdlUHJveHk6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKQEAgLTMzNDEsNyArMzM0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRp
bmdzRGlkQ2hhbmdlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCkBAIC0zMzU4LDcgKzMzNTksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChm
aXhlZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5
b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMzM3MSw3ICszMzcyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6ZSksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVk
TGF5b3V0U2l6ZShzaXplKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250
YWxTY3JvbGxlcikKQEAgLTMzODQsNyArMzM4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRB
bHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzSG9yaXpvbnRh
bFNjcm9sbGVyKGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIo
Ym9vbCBhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIpCkBAIC0zMzk3LDcgKzMzOTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVy
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykK
QEAgLTM0MTAsNyArMzQxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlvdXRN
aWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25l
cyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1
cHByZXNzQW5pbWF0aW9ucykKQEAgLTM0MjMsNyArMzQyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5p
bWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3Vw
cHJlc3NBbmltYXRpb25zKSwgbV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
cnViYmVyQmFuZHNBdExlZnQoKSBjb25zdApAQCAtMzQ3NSw3ICszNDc2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhib29sIGVuYWJsZVZlcnRp
Y2FsUnViYmVyQmFuZGkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxl
VmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZl
cnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6dmVydGljYWxSdWJiZXJCYW5kaW5n
SXNFbmFibGVkKCkgY29uc3QKQEAgLTM0OTIsNyArMzQ5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhib29sIGVuYWJsZUhvcml6b250YWxS
dWJiZXJCCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZUhvcml6b250
YWxSdWJiZXJCYW5kaW5nKGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlSG9yaXpv
bnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6aG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzUwOSw3ICszNTEwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShib29sIGJhY2tncm91bmRFeHRlbmRz
QmV5b25kUGEKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4
dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoKSBj
b25zdApAQCAtMzUyNiw3ICszNTI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRp
b25Nb2RlKFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZSkKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVo
YXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQpAQCAtMzUzOCw3ICszNTM5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMo
Ym9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3Ro
KQpAQCAtMzU1MCw3ICszNTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VMZW5ndGgo
ZG91YmxlIHBhZ2VMZW5ndGgpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBh
Z2VMZW5ndGgocGFnZUxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdlcyhkb3VibGUgZ2FwKQpA
QCAtMzU2Miw3ICszNTYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdl
cyhkb3VibGUgZ2FwKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3
ZWVuUGFnZXMoZ2FwKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBsaW5lR3Jp
ZEVuYWJsZWQpCkBAIC0zNTc0LDcgKzM1NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFn
aW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlkRW5hYmxlZCkKICAgICAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQobGlu
ZUdyaWRFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlU2NhbGVGYWN0b3JEaWRD
aGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9yKQpAQCAtMzU5OSwzMiArMzYwMCwzMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRP
cHRpb25zIG9wdGlvbnMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9u
cywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hD
b3VudCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5k
U3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRp
b25zLCBtYXhNYXRjaENvdW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJ
bmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0RmluZE1hdGNoKG1h
dGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluZGljYXRlRmluZE1hdGNo
KG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbmRpY2F0ZUZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZUZpbmRVSSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlRmluZFVJKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQpAQCAt
MzYzMiw3ICszNjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhW
ZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTM2NDMsNyArMzY0NCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2Vz
LCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQs
IHNlbGVjdGlvbk9ubHksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNl
cyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNl
c3NhcnkoKQpAQCAtMzY2OCwxNCArMzY2OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3
b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFt
ZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCkBAIC0zNjg2LDcgKzM2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdAogICAgIH0K
ICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTM2OTgsNyArMzY5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRT
b3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxi
YWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNl
Rm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1l
LT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3MTAs
NyArMzcxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhCiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0zNzIxLDcgKzM3MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBB
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc0F0dHJp
YnV0ZWRTdHJpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTM3MzQsNyArMzczNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50
U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVBy
b2ZpbGUoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Niw3
ICszNzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTM3NTgsNyArMzc1OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRh
KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMzc3MCw3ICszNzcx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc4MSw3ICszNzgyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGIKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKQEAgLTM3OTIsNyArMzc5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248
dm9pCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9t
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKQEAgLTM4MDMsNyArMzgwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAgICAg
fQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmco
KSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNv
dXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwg
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTM4MTQsNyArMzgxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJ
CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hp
dmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4m
JiBjYWxsYmFjaykKQEAgLTM4NDgsNyArMzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3Jj
ZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiBzdGF0aWMg
T3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRpbmdTZW5kT3B0aW9ucyhib29sIGlzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKQpAQCAtMzg3NCw3ICszODc1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICAvLyBldmVuIGlmIG5vdGhpbmcg
Y2hhbmdlZCBpbiBVSSBwcm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KIAog
ICAgIC8vIFByZWZlcmVuY2VzIG5lZWQgdG8gYmUgdXBkYXRlZCBkdXJpbmcgc3luY2hyb25vdXMg
cHJpbnRpbmcgdG8gbWFrZSAicHJpbnQgYmFja2dyb3VuZHMiIHByZWZlcmVuY2Ugd29yayB3aGVu
IHRvZ2dsZWQgZnJvbSBhIHByaW50IGRpYWxvZyBjaGVja2JveC4KLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3Rv
cmUoKSksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIG1fd2ViUGFnZUlELCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKQEAgLTQwMDQsOCArNDAwNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0
aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBu
YXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlv
bklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nl
c3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQ
Ukl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRC50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC00MDU4
LDcgKzQwNTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFt
ZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1l
SUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZy
YW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MDg3LDcgKzQwODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRl
bGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQu
dG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNDEwMCw3ICs0MTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY28K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQx
NDcsOCArNDE0OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBX
aWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGlu
ZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlk
ICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIs
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBw
cm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDIyNiw5ICs0
MjI3LDkgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
OjpGbGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRv
Y3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcp
IFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdh
dGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAg
TE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1p
dExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2Fy
ZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFj
a0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBm
cmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0Niw3ICs0MjQ3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWcKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IGN1cnJlbnREb21haW4geyBjdXJyZW50UmVxdWVzdC51cmwoKSB9OwogICAgICAgICAgICAgVVJM
IHJlcXVlc3RlclVSTCB7IFVSTCgpLCByZXF1ZXN0ZXJPcmlnaW4udG9TdHJpbmcoKSB9OwogICAg
ICAgICAgICAgaWYgKCFjdXJyZW50RG9tYWluLm1hdGNoZXMocmVxdWVzdGVyVVJMKSkKLSAgICAg
ICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZGlkQ29tbWl0Q3Jvc3NTaXRlTG9h
ZFdpdGhEYXRhVHJhbnNmZXIobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgUmVnaXN0
cmFibGVEb21haW4geyByZXF1ZXN0ZXJVUkwgfSwgY3VycmVudERvbWFpbiwgbmF2aWdhdGlvbkRh
dGFUcmFuc2ZlciwgbV9wYWdlSUQpOworICAgICAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5kaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihtX3dlYnNpdGVE
YXRhU3RvcmUtPnNlc3Npb25JRCgpLCBSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RlclVSTCB9
LCBjdXJyZW50RG9tYWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBtX3dlYlBhZ2VJRCk7CiAg
ICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTQzNDAsNyArNDM0MSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDM2
NCw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjQKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkg
JXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5h
dmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmlu
aXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQs
IGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC00NDA5LDcgKzQ0MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywg
Y29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVz
LCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ0NTEsNyArNDQ1Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDYzNyw3ICs0NjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAgICBNRVNT
QUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAogICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVj
aXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5
UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFy
Z3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4u
KSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogCiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlP
cmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZN
b3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKQEAgLTQ5MDgsNyArNDkwOSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8gc2Vu
ZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURd
IChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFy
Z3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICB9KTsKIAogICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3Zl
KHNlbmRlcikpOwpAQCAtNDk1Nyw3ICs0OTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5n
V2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyld
IChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdz
Li4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3Mu
Li4pLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTQ5OTQsNyArNDk5NSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsU3VibWl0Rm9ybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJZGVu
dGlmaWVyIHNvdXJjCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZyYW1lKTsK
IAogICAgIG1fZm9ybUNsaWVudC0+d2lsbFN1Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwgKnNvdXJj
ZUZyYW1lLCB0ZXh0RmllbGRWYWx1ZXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdKCkgewotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwg
bGlzdGVuZXJJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVySUQpLCBt
X3dlYlBhZ2VJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTUwMTAsNyArNTAxMSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFT
aGFyZWQ6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50
KCkpOwogCkBAIC01MDMwLDcgKzUwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJhbWVJRCA9ICUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwNTcsNyArNTA1OCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3Q6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC01MTAwLDcgKzUxMDEsNiBAQCBzdGF0aWMgdm9pZCB0cnlTT0F1dGhvcml6
YXRpb24oUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBXZQog
I2lmIEhBVkUoQVBQX1NTTykKICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zb0F1dGhvcml6
YXRpb25Db29yZGluYXRvcigpLnRyeUF1dGhvcml6ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24p
LCBwYWdlLCBXVEZNb3ZlKG5ld1BhZ2VDYWxsYmFjayksIFdURk1vdmUodWlDbGllbnRDYWxsYmFj
aykpOwogI2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKHBhZ2UsIHBhZ2UucGFnZUlEKCkpOwogICAg
IHVpQ2xpZW50Q2FsbGJhY2soV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShuZXdQ
YWdlQ2FsbGJhY2spKTsKICNlbmRpZgogfQpAQCAtNTEyMCw3ICs1MTIwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLAogCiAgICAgICAgIG5ld1BhZ2UtPnNldE9wZW5lZEJ5RE9NKCk7CiAKLSAg
ICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVy
cyhtX3Byb2Nlc3MsICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CisgICAgICAgIHJlcGx5KG5l
d1BhZ2UtPndlYlBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMobV9wcm9jZXNz
LCAqbmV3UGFnZS0+ZHJhd2luZ0FyZWEoKSkpOwogCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxk
U3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJl
RXF1YWwoVVJMKHsgfSwgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CiAKQEAgLTU0NTEs
NyArNTQ1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0CiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBT
aGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wgYWNjZXNzKSB7Ci0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2Vz
cywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNzLCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dTaGFyZVNo
ZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQ4Myw3ICs1
NDgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVt
ZSksIG1fcGFnZUlEKTsgICAgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mg
c3RhdGUpCkBAIC01NDk5LDcgKzU0OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQo
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVh
bXNFeGNlcHRJbigqdGhpcyk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0ZSksIG1fd2ViUGFnZUlEKTsKICAg
ICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rp
dml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NTIxLDcgKzU1MjEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSwgbV93ZWJQYWdlSUQp
OwogI2VuZGlmCiB9CiAKQEAgLTU1MzAsNyArNTUzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
dG9wQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU1NDIs
NyArNTU0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNr
KCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTU1NCw3ICs1NTU0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC01
NTYzLDcgKzU1NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRp
YUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1l
bnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAtNTU3MSw3ICs1NTcxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1
bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWb2x1bWVPZk1lZGlhRWxl
bWVudCh2b2x1bWUsIGVsZW1lbnRJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC01
NTg1LDcgKzU1ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQp
OworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlh
V2hlbkluV2luZG93KG1heVN0YXJ0TWVkaWEpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQp
CkBAIC01NjMyLDcgKzU2MzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlQ29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDaG9vc2VDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQpAQCAtNTY0MSw3
ICs1NjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNrZXIoKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNr
ZXIoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTU2NzUsNyArNTY3NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24gPSBudWxscHRyOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2xvc2VTdWdnZXN0aW9ucygpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1
Z2dlc3Rpb25zKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNl
bGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQpAQCAtNTY4Myw3ICs1Njgz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNl
bGVjdGVkT3B0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RE
YXRhTGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVk
T3B0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTU3MzYsNyArNTczNiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2so
Ym9vbCBhbGxvd3MpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjayA9IGFsbG93czsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93cyksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93
c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3dlYlBhZ2VJRCk7CiB9CiAj
ZW5kaWYKIApAQCAtNTc2NCw3ICs1NzY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY28KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmJiBpdGVtU3RhdGUpCiB7Ci0gICAgYXV0byBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKFdURk1vdmUoaXRlbVN0YXRlKSwgcGFnZUlEKCkpOworICAgIGF1dG8gaXRl
bSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGl0ZW1TdGF0ZSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgaXRlbS0+c2V0UmVzb3VyY2VEaXJlY3RvcnlVUkwoY3VycmVudFJl
c291cmNlRGlyZWN0b3J5VVJMKCkpOwogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJdGVtKFdU
Rk1vdmUoaXRlbSkpOwogfQpAQCAtNTkxOCwxNyArNTkxOCwxNyBAQCBJUEM6OkNvbm5lY3Rpb24q
IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRf
dCBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlSUQudG9V
SW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVu
dShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhG
b3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JB
Y3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQ
cm94eSosIGludDMyX3QgaW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGluZGV4KSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBvcHVw
TWVudShpbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmlzUHJv
Y2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkgY29uc3QKQEAgLTU5NjMsMTMgKzU5NjMsMTMgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSwg
bWFrZSBzdXJlIHdlIGxhdW5jaCB0aGUgaW5pdGlhbCBwcm9jZXNzIGlmIHRoZSBjbGllbnQgYXNr
cyB0byBwb3N0IGEgbWVzc2FnZSB0byBpdHMgaW5qZWN0ZWQgYnVuZGxlIGJlZm9yZSBkb2luZyBh
IGxvYWQuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2Uo
bWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVz
ZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5n
ZXQoKSkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGYWlsZWRUb1Nob3dQb3B1cE1l
bnUoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTYwMzYsNyArNjAzNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYm
IGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvdygpOwog
CiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUs
IGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28g
aXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MTE0LDEyICs2
MTE0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25z
dCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9y
SWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRl
bUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51
Rm9yS2V5RXZlbnQoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQogCkBAIC02MTM1LDEwICs2MTM1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmls
ZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVz
RnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyksIG1fd2ViUGFnZUlEKTsKICNl
bmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxh
eVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRh
UmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNv
bihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVy
ZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX29w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTYzLDEwICs2MTYzLDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRl
bnNpb25IYW5kbGVzKSwgbV93ZWJQYWdlSUQpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxz
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBt
X29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTc3LDcgKzYxNzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpLCBtX3dl
YlBhZ2VJRCk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0
ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjE4NSw3
ICs2MTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkK
QEAgLTYxOTMsNyArNjE5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1Rv
V29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5n
ZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29yZCh3b3JkKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRp
dENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKQEAg
LTYyMTIsNyArNjIxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFuZChX
ZWJFZGl0Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlRWRpdENv
bW1hbmQoY29tbWFuZC5jb21tYW5kSUQoKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQ
YWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjMwMSwxMiArNjMwMSwxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBU
ZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChy
ZXF1ZXN0SUQsIHJlc3VsdCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVz
dElEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCksIG1fd2ViUGFnZUlEKTsKIH0KIC8vIE90
aGVyCiAKQEAgLTY0MzUsNyArNjQzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
RXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNh
blByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAg
ICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhh
bmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQi
KTsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZl
bnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5m
aXJzdCgpKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGNhbGwg
dG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAtNjc5OSw3ICs2
Nzk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hhbmdlZChj
b25zdCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+JgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CkBAIC02ODExLDcgKzY4MTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJv
Y2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY5MDYsNyArNjkwNiw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
biByZWFzb24pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5h
dGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGU6IHdlYlBJRCA9
ICVpLCByZWFzb24gPSAlZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29u
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NE
aWRUZXJtaW5hdGU6IHJlYXNvbiA9ICVkIiwgcmVhc29uKTsKIAogICAgIGJvb2wgaGFuZGxlZEJ5
Q2xpZW50ID0gZmFsc2U7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQpAQCAtNzMyOSw3ICs3MzI5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVw
YWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRhcywg
c2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdhbWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0YXMsIHNob3Vs
ZE1ha2VHYW1lcGFkc1Zpc2libGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtNzYz
NCw3ICs3NjM0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Ny
b2xsRXZlbnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNp
dGVQb2xpY2llcyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03NjQ0LDcgKzc2NDQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRS
ZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2Fy
ZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwp
CkBAIC03NjU3LDcgKzc2NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwo
Ym9vbCBjYW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2Fu
UnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCkBAIC03NjcxLDcg
Kzc2NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBt
X3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0
aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbyksIG1fd2ViUGFnZUlELCBwcmludGluZ1Nl
bmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc2ODAsNyArNzY4MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblBy
aW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNr
KQpAQCAtNzY5Myw3ICs3NjkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzcwNiw3ICs3NzA2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUt
PmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9u
KSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1h
Z2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAg
LTc3MTgsNyArNzcxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwg
Y291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZp
cnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25z
KG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdU
SykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2Fs
bGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NzMxLDcgKzc3MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50
SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAg
ICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGlu
Z01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
d1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc3NzYsNyArNzc3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVNpemVGb3JBdXRvTGF5
b3V0KHNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoc2l6ZSksIG1fd2ViUGFnZUlEKTsKICAg
ICBtX2RyYXdpbmdBcmVhLT5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXREaWRDaGFuZ2UoKTsKIAog
I2lmIFVTRShBUFBLSVQpCkBAIC03Nzk1LDcgKzc3OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChib29sIHNob3VsZEV4cGFuZCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXV0b1NpemluZ1Nob3VsZEV4cGFu
ZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVp
Z2h0KHNob3VsZEV4cGFuZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplKQpAQCAtNzgwOCw3ICs3ODA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXoKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyh2aWV3cG9ydFNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdw
b3J0U2l6ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBM
QUNFTUVOVCkKQEAgLTc4NzksNyArNzg3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYKIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIHJlc3VsdCkKIHsKICAgICBpZiAoIWlzQ2xvc2VkKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVz
dWx0KSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpAQCAtNzkyMCw3ICs3OTIwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0
aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0
aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNv
bXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlv
bkxlbmd0aCkKQEAgLTc5MjgsNyArNzkyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJt
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0
aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24o
Y29tcG9zaXRpb25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCkBA
IC03OTM2LDcgKzc5MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24o
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCksIG1f
cGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29t
cG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIApA
QCAtNzk1Myw3ICs3OTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICBtX3Njcm9sbFBpbm5p
bmdCZWhhdmlvciA9IHBpbm5pbmc7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHls
ZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxl
KQpAQCAtNzk3MSw3ICs3OTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3Jv
bGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3QKICAgICAgICAg
c2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0
eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2Vz
cygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9s
bGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
I2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtODAxNiw3ICs4MDE2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbUNv
bnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKG1pbWVUeXBlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0
ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtODAyNCw3ICs4
MDI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQp
OworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250QXR0cmli
dXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCkBAIC04MDMy
LDcgKzgwMzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250
Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdl
Rm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwNDAsNyArODA0MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQogewog
ICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0
VGV4dE9wdGlvbnMmJiBvcHRpb25zKQpAQCAtODA0OCw3ICs4MDQ4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmVwbGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5
bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSksIG1fcGFnZUlEKTsK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRl
eHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC04MDU3LDcgKzgwNTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjayksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5j
dGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC04MDY4LDcgKzgwNjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFy
a2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJr
ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhX
VEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKQEAgLTgwNzksNyArODA3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2Us
IENhbGxiCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdURjo6RnVu
Y3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCkBAIC04MDkwLDcgKzgwOTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgVwogICAg
IH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3lu
Yyhwb2ludCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBy
YW5nZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
QEAgLTgxMDEsNyArODEwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdUCiAgICAgfQogCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBz
ZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKQpAQCAt
ODExMiw3ICs4MTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21w
b3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCByZXBsYWNlbWVu
dFJhbmdlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCBy
ZXBsYWNlbWVudFJhbmdlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAtODEyMCw3ICs4MTIwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTgxNDUsNyArODE0NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXpl
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9uCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYWtlU25hcHNob3QocmVjdCwgYml0bWFwU2l6ZSwgb3B0
aW9ucywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlv
bkdlc3R1cmVEaWRCZWdpbigpCkBAIC04MzAzLDcgKzgzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhSZWY8Tm93UGxheWluZ0luZm9D
YWxsYmFjawogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAg
ICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5m
byhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxs
YmFjayhib29sIGhhc0FjdGl2ZVNlc3Npb24sIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBl
bGFwc2VkVGltZSwgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpAQCAtODM0NiwyMiArODM0NiwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0
b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8QQogI2lm
IFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdEF0TG9jYXRpb24oRmxvYXRQb2ludCBwb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2Nh
dGlvbihwb2ludCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihwb2ludCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZFVw
ZGF0ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlh
dGVBY3Rpb25EaWRVcGRhdGUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRD
YW5jZWwoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVk
aWF0ZUFjdGlvbkRpZENvbXBsZXRlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RS
ZXN1bHREYXRhJiByZXN1bHQsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQpAQCAtODM3Niw3ICs4Mzc2LDcgQEAgTlNPYmplY3QgKldlYlBhZ2VQ
cm94eTo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQo
UmVmUHQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGFjY2Vw
dGVkQ2FuZGlkYXRlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRIYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZSgpCkBAIC04Mzk0LDE3ICs4Mzk0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VT
eXN0ZW1BcHBlYXJhbmNlKGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJh
bmNlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSwgbV93ZWJQYWdlSUQp
OwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEhlYWRlckJhbm5lckhlaWdodEZvclRl
c3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEhlYWRlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVySGVp
Z2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb290ZXJCYW5uZXJIZWlnaHRG
b3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV93
ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTg0MzAsNyArODQzMCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIG5ld1NpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMoYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1
dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtODQ3OSw3ICs4
NDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNv
bnRleHRJZCwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0
Q29udGV4dCgpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29u
dGV4dCgpKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBib29sIGF2
YWlsYWJsZSkKQEAgLTg0ODcsNyArODQ4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RGlkQ2hhbmdlKGNvbnRleHRJZCwgYXZhaWxhYmxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRD
aGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgc2hvdWxkUGxheSkKQEAgLTg0OTUsNyArODQ5NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgc2hvdWxkCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgog
CkBAIC04NTIxLDcgKzg1MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJXaGVlbEV2ZW50
VGVzdFRyaWdnZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJX
aGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
KQpAQCAtODU0NCw3ICs4NTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxl
Vmlld1RvRml0RG9jdW1lbnQoYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3UKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChz
aG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChz
aG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKQEAgLTg1NjQsNyArODU2NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNv
cmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAoYm9v
bCljYWxsYmFja0Z1bmN0aW9uOwogICAgICAgICBhdXRvIG5ld0NhbGxiYWNrSWRlbnRpZmllciA9
IGRlY2lzaW9uID8gT3B0aW9uYWxDYWxsYmFja0lEKG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwogCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lv
biwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSWRlbnRpZmllciksIG1fcGFnZUlEKTsKKyAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVy
KSwgbV93ZWJQYWdlSUQpOwogICAgIH0pOwogfQogCkBAIC04NTgzLDcgKzg1ODMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWQoZGlzYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJQYWdlUHJv
eHk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQpAQCAtODU5Niw3ICs4NTk2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oV2ViQ29y
ZTo6VXNlckludGVyZmFjZUxheW91dEQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4odXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbikpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0
YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVWYWxpZGF0aW9uTWVzc2FnZSgp
CkBAIC04NjQzLDE0ICs4NjQzLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBbGxvd1BvaW50
ZXJMb2NrKCkKICAgICBDR0Rpc3BsYXlIaWRlQ3Vyc29yKENHTWFpbkRpc3BsYXlJRCgpKTsKICAg
ICBDR0Fzc29jaWF0ZU1vdXNlQW5kTW91c2VDdXJzb3JQb3NpdGlvbihmYWxzZSk7CiAjZW5kaWYK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZERlbnlQb2ludGVyTG9jaygpCiB7CiAgICAgQVNTRVJUKG1faXNQb2lu
dGVyTG9ja1BlbmRpbmcgJiYgIW1faXNQb2ludGVyTG9ja2VkKTsKICAgICBtX2lzUG9pbnRlckxv
Y2tQZW5kaW5nID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkK
QEAgLTg2NjEsMTIgKzg2NjEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKICAgICAgICAgQ0dEaXNwbGF5U2hvd0N1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7
CiAjZW5kaWYKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fd2ViUGFnZUlEKTsKICAgICB9CiAKICAgICBp
ZiAobV9pc1BvaW50ZXJMb2NrUGVuZGluZykgewogICAgICAgICBtX3VpQ2xpZW50LT5kaWRMb3Nl
UG9pbnRlckxvY2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIAogICAgIG1faXNQb2ludGVyTG9ja2VkID0gZmFsc2U7
CkBAIC04Njg3LDcgKzg2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFu
ZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbAogICAgIGF1dG8g
aWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoaWRlbnRpZmll
clJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZp
ZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVu
dGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IFdlYlVSTFNjaGVtZUhhbmRsZXIqIFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKQEAgLTg3MzUsNyArODczNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2
YWxlbnRSZXNvdXJjZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oldhc0xvYWRl
ZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2FzTG9hZGVkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApA
QCAtODc1NCw3ICs4NzU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVmZmVjdGl2ZUFwcGVhcmFu
Y2VEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFZmZlY3RpdmVB
cHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNlKCksIHVzZUVsZXZhdGVkVXNlcklu
dGVyZmFjZUxldmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNl
KCksIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTg3OTMsNyArODc5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwg
RnVuY3Rpb248CiAKICAgICBhdXRvIGF0dGFjaG1lbnRJZGVudGlmaWVyID0gYXR0YWNobWVudC0+
aWRlbnRpZmllcigpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0
dGFjaG1lbnQoYXR0YWNobWVudElkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlz
cGxheSgpLCBhdHRhY2htZW50LT5maWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgp
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVu
dC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1l
bnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9hdHRh
Y2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoYXR0YWNobWVudElkZW50aWZpZXIs
IFdURk1vdmUoYXR0YWNobWVudCkpOwogfQogCkBAIC04ODA5LDcgKzg4MDksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2ht
ZW50JiBhdHRhY2htZW50LAogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAqZGF0YSB9OwogCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5
KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZN
b3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0
YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0
dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRh
dGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpAQCAtODk2
OSw3ICs4OTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3Qo
RnVuY3Rpb248dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjoKIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRp
ZgogCkBAIC05MDMzLDcgKzkwMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwb3J0UGFnZUxv
YWRSZXN1bHQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXREZWZlcnNMb2FkaW5nRm9yVGVzdGluZyhib29sIGRlZmVyc0xvYWRpbmcpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVy
c0xvYWRpbmcpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJc1ZpZXdWaXNpYmxlKGJvb2wmIHJlc3VsdCkKQEAgLTkw
NDUsNyArOTA0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVDdXJyZW50TW9kaWZpZXJT
dGF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dT
RVJWRVJfQkxPQ0tJTkcpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBtb2RpZmll
cnMgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRTdGF0ZU9mTW9kaWZpZXJLZXlzKCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9k
aWZpZXJTdGF0ZShtb2RpZmllcnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShtb2RpZmllcnMpLCBt
X3dlYlBhZ2VJRCk7CiAjZW5kaWYKIH0KIApAQCAtOTA4NywxOSArOTA4NywxOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24o
V2ViUHJvY2Vzc1Byb3h5JgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2ltdWxhdGVEZXZpY2VPcmll
bnRhdGlvbkNoYW5nZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaW11bGF0ZURldmljZU9y
aWVudGF0aW9uQ2hhbmdlKGFscGhhLCBiZXRhLCBnYW1tYSksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25D
aGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJh
bWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5
cGVzKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTkyNjks
NyArOTI2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0
c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0
SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtOTI3OSw3ICs5Mjc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBD
b21wbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0
Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIExvZ2dlciYgV2ViUGFnZVByb3h5Ojps
b2dnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1ODdhZWE4
NWNhYi4uYzlmODExZmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKQEAgLTM5Miw3ICszOTMsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0OwogCi0gICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICB1c2luZyBJ
ZGVudGlmaWVyID0gV2ViUGFnZVByb3h5SWRlbnRpZmllcjsKKworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CiAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMjExMyw3ICsyMTE3
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOworICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFdlYWtQdHI8UGFnZUNsaWVu
dD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmNhMGJi
MzJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBlPjsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDQ1OWE5ZDNhNGE4Li42
YjgyMjZkNjNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMzA5LDYgKzMwOSw5IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICBub3RpZnlUaGlz
V2ViUHJvY2Vzc1Bvb2xXYXNDcmVhdGVkKCk7CiAKICAgICB1cGRhdGVNYXhTdXNwZW5kZWRQYWdl
Q291bnQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuIFRoaXMgaXMgbWVyZWx5
IHVzZWQgdG8gbWFrZSB0aGUgV2ViUGFnZVByb3h5ICYgdGhlIFdlYlBhZ2UgaWRlbnRpZmllcnMg
ZGlmZmVyZW50LCB0byBoZWxwIGNhdGNoIGJ1Z3MuCisgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7IFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOyBQYWdlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKIFdlYlByb2Nlc3NQb29sOjp+
V2ViUHJvY2Vzc1Bvb2woKQpAQCAtMTMwNyw5ICsxMzEwLDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9v
bDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3Jl
JiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dl
YnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPigpKS5pdGVyYXRv
ci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJ
RHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0
YVN0b3JlLnNlc3Npb25JRCgpOwpAQCAtMTMyNyw3ICsxMzMwLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2Vic2kKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dl
YnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAg
ICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBhZjE2Y2VmOGQy
OC4uMDg2ZTM4NmE2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtMjA5LDggKzIwOSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
IAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAg
ICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikg
Y29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAgLTc4Myw3
ICs3ODMsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhzOwog
Ci0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7
CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2EzNjI0OGZlYTYu
LjY0YjMxZjc1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTM1MSwxMSArMzUxLDIyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93
bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdl
YlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCkuZ2V0KHBhZ2VJ
RCk7CiB9CiAKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKK3sKKyAgICAvLyBGSVhNRTogRG8gYmV0dGVyLgor
ICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKS52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAocGFnZS0+d2ViUGFnZUlEKCkgPT0gd2ViUGFnZUlEKQorICAgICAgICAgICAgcmV0dXJu
IHBhZ2U7CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQ
YWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKCkKIHsKQEAgLTM5MywxNiArNDA0
LDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojph
ZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBCZWdpbnNVc2luZ0RhdGFT
dG9yZSBiZWdpbnNVc2luZ0RhdGFTdG9yZSkKIHsKLSAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250
YWlucyh3ZWJQYWdlLnBhZ2VJRCgpKSk7Ci0gICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29u
dGFpbnMod2ViUGFnZS5wYWdlSUQoKSkpOworICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5z
KHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29u
dGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0lu
UHJvY2Vzc0NhY2hlKTsKICAgICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBtX3dlYnNp
dGVEYXRhU3RvcmUgPT0gJndlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAgIGlmIChi
ZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKQotICAgICAg
ICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5w
YWdlSUQoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3NQ
b29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCks
IHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAotICAgIG1fcGFnZU1hcC5zZXQod2ViUGFn
ZS5wYWdlSUQoKSwgJndlYlBhZ2UpOwotICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQod2ViUGFnZS5w
YWdlSUQoKSwgJndlYlBhZ2UpOworICAgIG1fcGFnZU1hcC5zZXQod2ViUGFnZS5pZGVudGlmaWVy
KCksICZ3ZWJQYWdlKTsKKyAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHdlYlBhZ2UuaWRlbnRpZmll
cigpLCAmd2ViUGFnZSk7CiAKICAgICB1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKQEAgLTQyMSwxNSAr
NDMyLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXJrSXNOb0xvbmdlckluUHJld2FybWVk
UG9vbCgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuZHNVc2luZ0RhdGFTdG9yZSkKIHsKLSAg
ICBhdXRvKiByZW1vdmVkUGFnZSA9IG1fcGFnZU1hcC50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwor
ICAgIGF1dG8qIHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2Uod2ViUGFnZS5pZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92ZWRQYWdlID09ICZ3ZWJQ
YWdlKTsKLSAgICByZW1vdmVkUGFnZSA9IGdsb2JhbFBhZ2VNYXAoKS50YWtlKHdlYlBhZ2UucGFn
ZUlEKCkpOworICAgIHJlbW92ZWRQYWdlID0gZ2xvYmFsUGFnZU1hcCgpLnRha2Uod2ViUGFnZS5p
ZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92ZWRQYWdl
ID09ICZ3ZWJQYWdlKTsKIAogICAgIGlmIChlbmRzVXNpbmdEYXRhU3RvcmUgPT0gRW5kc1VzaW5n
RGF0YVN0b3JlOjpZZXMpCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNp
dGVEYXRhU3RvcmUod2ViUGFnZS5wYWdlSUQoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
OworICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdl
YlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKLSAgICBy
ZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcih3ZWJQYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKSwgd2Vi
UGFnZS5wYWdlSUQoKSk7CisgICAgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIod2ViUGFnZS52
aXNpdGVkTGlua1N0b3JlKCksIHdlYlBhZ2UuaWRlbnRpZmllcigpKTsKICAgICB1cGRhdGVSZWdp
c3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7CiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NUaW1lcigpOwpAQCAtNDM3LDEwICs0NDgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUg
ZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRW
aXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYXV0byYgdXNlcnMgPSBtX3Zpc2l0ZWRMaW5r
U3RvcmVzV2l0aFVzZXJzLmVuc3VyZSgmdmlzaXRlZExpbmtTdG9yZSwgW10gewotICAgICAgICBy
ZXR1cm4gSGFzaFNldDxQYWdlSWRlbnRpZmllcj4geyB9OworICAgICAgICByZXR1cm4gSGFzaFNl
dDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
CiAgICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQ1MCw3ICs0NjEsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExp
bmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFBy
b2Nlc3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0
aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRM
aW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTYzLDEwICs1NzQsMTAgQEAgYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2VuZGlmCiAKLWJv
b2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFn
ZVdpdGhJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewotICAgICAgICBp
ZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICBp
ZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkuaWRlbnRpZmllcigpID09IHBhZ2VJRCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC01ODAsNyAr
NTkxLDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGkKICAgICBpZiAoaGFzUHJvdmlzaW9uYWxQ
YWdlV2l0aElEKGl0ZW0ucGFnZUlEKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChpdGVtLnN1c3BlbmRlZFBhZ2UoKSAmJiBpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cGFnZSgpLnBh
Z2VJRCgpID09IGl0ZW0ucGFnZUlEKCkgJiYgJml0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNz
KCkgPT0gdGhpcykKKyAgICBpZiAoaXRlbS5zdXNwZW5kZWRQYWdlKCkgJiYgaXRlbS5zdXNwZW5k
ZWRQYWdlKCktPnBhZ2UoKS5pZGVudGlmaWVyKCkgPT0gaXRlbS5wYWdlSUQoKSAmJiAmaXRlbS5z
dXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTMsNyArMTE2NCw3IEBAIFJlZlB0cjxBUEk6Ok9i
amVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2Jq
ZWN0KiBvYmplCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0
ZUF1dG9jb252ZXJ0aW5nKHN0YXRpY19jYXN0PGNvbnN0IFdlYkZyYW1lUHJveHkmPihvYmplY3Qp
LmZyYW1lSUQoKSk7CiAKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUhhbmRsZTo6Y3JlYXRlQXV0b2NvbnZl
cnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZVByb3h5Jj4ob2JqZWN0KS5wYWdlSUQoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUhhbmRsZTo6Y3JlYXRlQXV0b2NvbnZl
cnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZVByb3h5Jj4ob2JqZWN0KS53ZWJQYWdlSUQo
KSk7CiAKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91cDoKICAg
ICAgICAgICAgICAgICByZXR1cm4gQVBJOjpQYWdlR3JvdXBIYW5kbGU6OmNyZWF0ZShXZWJQYWdl
R3JvdXBEYXRhKHN0YXRpY19jYXN0PGNvbnN0IFdlYlBhZ2VHcm91cCY+KG9iamVjdCkuZGF0YSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGJmM2Nk
MmFkMTNmLi40N2EyNDNkOTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZXNwb25zaXZlbmVzc1RpbWVy
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5oPgpAQCAtOTksNyArMTAwLDcgQEAgZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3ND
YWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIEF1eGls
aWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94eU1hcDsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eSo+IFdlYlBhZ2VQcm94
eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7
CiAKICAgICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEzMSw2ICsxMzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAog
ICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIApAQCAt
MTU0LDggKzE1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJv
Y2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5r
U3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIo
VmlzaXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOwogCiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKICAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMzUxLDcgKzM1Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFi
bGUpOwogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpIGNvbnN0OworICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGJvb2wgaXNBbGxvd2VkVG9VcGRhdGVCYWNr
Rm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNvbnN0OwogCiAgICAgLy8gUGx1
Z2lucwpAQCAtNDQ2LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxQcm92aXNpb25h
bFBhZ2VQcm94eSo+IG1fcHJvdmlzaW9uYWxQYWdlczsKICAgICBVc2VySW5pdGlhdGVkQWN0aW9u
TWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAotICAgIEhhc2hNYXA8VmlzaXRlZExpbmtT
dG9yZSosIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Zpc2l0ZWRMaW5rU3Rv
cmVzV2l0aFVzZXJzOworICAgIEhhc2hNYXA8VmlzaXRlZExpbmtTdG9yZSosIEhhc2hTZXQ8V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAg
SGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVIYW5kbGVyLmNwcAppbmRleCA3ZDU3NWE0MDRiMC4uNWE2Y2M5NWQwZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgYXV0byByZXN1bHQgPSBtX3Rhc2tz
LmFkZCh0YXNrSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKCp0aGlzLCBwYWdl
LCBwcm9jZXNzLCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAg
YXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5hZGQocGFnZS5wYWdlSUQo
KSwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQ
YWdlSWRlbnRpZmllci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkp
OwogICAgIEFTU0VSVCghcGFnZUVudHJ5Lml0ZXJhdG9yLT52YWx1ZS5jb250YWlucyh0YXNrSWRl
bnRpZmllcikpOwogICAgIHBhZ2VFbnRyeS5pdGVyYXRvci0+dmFsdWUuYWRkKHRhc2tJZGVudGlm
aWVyKTsKIApAQCAtNzAsNyArNzAsNyBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlVSTFNjaGVtZUhh
bmRsZXI6OnByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCB0YXNrSWRlbgogCiB2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
dGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5wYWdlSUQoKSk7CisgICAgYXV0byBpdGVy
YXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5pZGVudGlmaWVyKCkpOwog
ICAgIGlmIChpdGVyYXRvciA9PSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6
c3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKICAg
ICBpdGVyYXRvci0+dmFsdWUtPnN0b3AoKTsKICAgICBwbGF0Zm9ybVN0b3BUYXNrKHBhZ2UsIGl0
ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICByZW1vdmVUYXNrRnJvbVBhZ2VNYXAocGFnZS5wYWdlSUQo
KSwgdGFza0lkZW50aWZpZXIpOworICAgIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChwYWdlLmlkZW50
aWZpZXIoKSwgdGFza0lkZW50aWZpZXIpOwogICAgIG1fdGFza3MucmVtb3ZlKGl0ZXJhdG9yKTsK
IH0KIApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0Nv
bXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRl
ZCh0YXNrKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBh
Z2VNYXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCit2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rh
c2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9
IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCAwOGY4ZjViYTQyMy4uZDU4YzdlNTY3MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAg
LTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BU
YXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAg
dm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lEKTsKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCkgY29uc3Q7CiAKICAgICB1aW50NjRfdCBtX2lk
ZW50aWZpZXI7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lVGFzaz4+
IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1
aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOworICAgIEhhc2hNYXA8V2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVy
OwogICAgIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRp
b25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IDAzNjIxYzBiYjM3Li5kNjFmMTM2MjI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViVVJMU2No
ZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBX
ZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcGFnZSgmcGFnZSkKICAgICAsIG1fcHJvY2VzcyhtYWtl
UmVmKHByb2Nlc3MpKQogICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmllcikKLSAg
ICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZS5wYWdlSUQoKSkKKyAgICAsIG1fcGFnZUlkZW50aWZp
ZXIocGFnZS5pZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkK
ICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5k
bGVyKSkKIHsKQEAgLTgyLDcgKzgyLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnMKICAgICAg
ICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxT
Y2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVl
c3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3Bh
Z2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQpA
QCAtMTA3LDcgKzEwNyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYgKGlzU3lu
YygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+
aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT53ZWJQYWdlSUQo
KSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2
ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgeyBi
dWZmZXIgfSksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpOb25lOwogfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQog
ICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBlcnJvciksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1l
VGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIGVycm9yKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV91cmxTY2hlbWVIYW5k
bGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDc2
NzMzZjc0Y2Y2Li4zOWIyZmViNDNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfldlYlVSTFNjaGVt
ZVRhc2soKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJl
dHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3BhZ2VJZGVu
dGlmaWVyOyB9CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSB7IEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIApAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQ
cm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fcmVxdWVzdDsKICAgICBtdXRhYmxlIExvY2sgbV9yZXF1ZXN0TG9jazsKICAgICBib29s
IG1fc3RvcHBlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGUyZGY0MTdkMmU4Li45
NWFlZGZlMTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQo
Ym9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklE
LCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBp
ZiAoIXdlYlBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2NmYzNTZhYmQ4Ni4uZjUyZmFkZWU4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgpAQCAtMTM5LDcgKzE0
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9nVGVzdGlu
Z0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKKyAgICB2b2lkIGdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRV
c2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVj
dGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCAzODkxOThhMjAzMy4u
MDg2N2Q5ODNlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElu
cHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q2Vu
dGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlckluVmlld0Nv
b3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKQogewotICAgIHByb2Nlc3MoKS5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY2VudGVy
SW5WaWV3Q29vcmRpbmF0ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdl
c3R1cmU6OlJlcGx5KGNlbnRlciksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlKGNlbnRlckluVmlld0Nv
b3JkaW5hdGVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlOjpS
ZXBseShjZW50ZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjptYWtl
R0xDb250ZXh0Q3VycmVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggNjFlODU5NGQ1YjcuLjU1M2EzYWNi
ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCkBAIC00NiwxMyArNDYsMTMgQEAgRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
KQogICAgIDogbV93ZWJQYWdlUHJveHkobWFrZVdlYWtQdHIod2ViUGFnZVByb3h5KSkKIHsKICAg
ICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gbV93ZWJQYWdlUHJveHkuZ2V0KCkpCi0gICAgICAg
IHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RWRp
dGFibGVJbWFnZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5
LT5wYWdlSUQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAog
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCiB7CiAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IG1fd2ViUGFnZVByb3h5LmdldCgpKQotICAgICAg
ICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQ
cm94eS0+cGFnZUlEKCkpOworICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+d2ViUGFnZUlEKCkpOwogfQogCiBFZGl0YWJs
ZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIubW0KaW5kZXggYzBlNDNkY2IxMjYuLjgwOGY3ZjcyMjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5tbQpAQCAtNTgsMTcgKzU4LDE3IEBAIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoV0tDb250ZW50VmlldyAqY29udGVu
CiAgICAgOiBtX3dlYlBhZ2VQcm94eSgqY29udGVudFZpZXcucGFnZSkKICAgICAsIG1fY29udGVu
dFZpZXcoY29udGVudFZpZXcpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMpOworICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlUHJveHkud2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlcjo6flNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoKQogewotICAgIG1fd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1
cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRy
eUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKG9yaWdpbiksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKIH0KIAog
dm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpoYW5kbGVSZXNldE1hZ25pZmljYXRp
b25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggY2VmZGU2MWM0
OWIuLmU0Zjc1N2NkZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbklu
dGVyYWN0aXZlVHJhbnNpdGlvbgogICAgICAgICBpZiAoZmluaXNoKQogICAgICAgICAgICAgbV93
ZWJQYWdlUHJveHlGb3JCYWNrRm9yd2FyZExpc3RGb3JDdXJyZW50U3dpcGUtPm5hdmlnYXRpb25H
ZXN0dXJlV2lsbEVuZCh0cmFuc2l0aW9uQ29tcGxldGVkLCAqdGFyZ2V0SXRlbSk7CiAgICAgfV07
Ci0gICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBh
Z2VJRCA9IG1fd2ViUGFnZVByb3h5LmlkZW50aWZpZXIoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVy
ZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIFttX3N3aXBlVHJhbnNpdGlvbkNvbnRleHQg
X3NldENvbXBsZXRpb25IYW5kbGVyOltwYWdlSUQsIGdlc3R1cmVJRCwgdGFyZ2V0SXRlbV0gKF9V
SVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKmNvbnRleHQsIEJPT0wgZGlkQ29tcGxl
dGUpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9y
R2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiB0YXJnZXRJdGVtLAogICAgICAgICBtX3dlYlBhZ2VQcm94eS5kaWRDaGFuZ2VCYWNrZ3JvdW5k
Q29sb3IoKTsKICAgICB9CiAKLSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAg
IEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV9sb2FkQ2Fs
bGJhY2sgPSBbdGhpcywgcGFnZUlELCBnZXN0dXJlSURdIHsKICAgICAgICAgYXV0byBkcmF3aW5n
QXJlYSA9IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsRHJhd2luZ0FyZWEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggMDRmOWM2ZTI3MDIu
LmFmOTJkZDIwMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQpAQCAtNzQ1LDcgKzc0NSw3IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZv
clByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAtIChD
R1BERkRvY3VtZW50UmVmKV93a19wcmludGVkRG9jdW1lbnQKIHsKICAgICBpZiAoX2lzUHJpbnRp
bmdUb1BERikgewotICAgICAgICBpZiAoIV9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEcmF3
VG9QREZDYWxsYmFjaz4oX3BhZ2UtPnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpKSkgewor
ICAgICAgICBpZiAoIV9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEcmF3VG9QREZDYWxsYmFj
az4oX3BhZ2UtPndlYlBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpKSkgewogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZTQ0ODVhOWYwYzkuLjcxMWJkMTU4NDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTE5OTgsOSArMTk5OCw5IEBAIC0gKEJPT0wpZW5zdXJlUG9zaXRpb25J
bmZvcm1hdGlvbklzVXBUb0RhdGU6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
CiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChbc2VsZiBfaGFzVmFsaWRPdXRzdGFuZGlu
Z1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OnJlcXVlc3RdKQotICAgICAgICByZXR1cm4gY29u
bmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24+KF9wYWdlLT5wYWdlSUQoKSwgMV9z
LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZl
cyk7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlv
bj4oX3BhZ2UtPndlYlBhZ2VJRCgpLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0
V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIAotICAgIGJvb2wgcmVjZWl2ZWRSZXNwb25z
ZSA9IF9wYWdlLT5wcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBvc2l0
aW9uSW5mb3JtYXRpb24ocmVxdWVzdCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbklu
Zm9ybWF0aW9uOjpSZXBseShfcG9zaXRpb25JbmZvcm1hdGlvbiksIF9wYWdlLT5wYWdlSUQoKSwg
MV9zLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpGb3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNX
YWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5KTsKKyAgICBib29sIHJlY2VpdmVkUmVzcG9uc2Ug
PSBfcGFnZS0+cHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlv
bkluZm9ybWF0aW9uKHJlcXVlc3QpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZv
cm1hdGlvbjo6UmVwbHkoX3Bvc2l0aW9uSW5mb3JtYXRpb24pLCBfcGFnZS0+d2ViUGFnZUlEKCks
IDFfcywgSVBDOjpTZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklz
V2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7CiAgICAgX2hhc1ZhbGlkUG9zaXRpb25JbmZv
cm1hdGlvbiA9IHJlY2VpdmVkUmVzcG9uc2UgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2FuQmVW
YWxpZDsKICAgICAKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGVzZSBoYW5k
bGVycyBpbiB0aGUgZXZlbnQgdGhhdCB3ZSBhcmUgbm90IGFibGUgdG8gY29sbGVjdCBkYXRhLCBv
ciBpZiB0aGUgV2ViUHJvY2VzcyBjcmFzaGVzLgpAQCAtMzk1Myw3ICszOTUzLDcgQEAgLSAodm9p
ZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShVSVdLQXV0b2NvcnIKICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dCgpOwogCiAgICAgaWYgKHVzZVN5bmNSZXF1ZXN0KSB7Ci0gICAgICAgIF9wYWdlLT5wcm9jZXNz
KCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQ+KF9wYWdlLT5wYWdlSUQo
KSwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdl
QXJyaXZlcyk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVBdXRv
Y29ycmVjdGlvbkNvbnRleHQ+KF9wYWdlLT53ZWJQYWdlSUQoKSwgMV9zLCBJUEM6OldhaXRGb3JP
cHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiAgICAgICAgIFtz
ZWxmIF9jYW5jZWxQZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcl07CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggYmJlMzlmNGYzZTUuLjBkOGQ4ZmRiZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oRnVuY3Rpb248dm9pZChj
b25zdCBGb2N1c2VkRQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpCkBAIC0yMTAsMTIgKzIx
MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25z
dCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpW
aWV3VXBkYXRlRGlzcGF0Y2hlcjo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKG1fcGFnZUlELCB2
aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUobV93ZWJQ
YWdlSUQsIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZW5kTGFzdFZpc2libGVDb250ZW50UmVjdHMoKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OlZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZShtX3BhZ2VJRCwgbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSwgMCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlKG1fd2ViUGFnZUlELCBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUpLCAwKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVN0cmluZ0ZvckZpbmQoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6
ZSwgY28KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkR5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGUodmlld0xheW91dFNpemUsCiAgICAgICAgIG1heGltdW1Vbm9ic2N1cmVk
U2l6ZSwgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwKICAg
ICAgICAgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgdW5vYnNj
dXJlZFNhZmVBcmVhSW5zZXRzLAotICAgICAgICB0YXJnZXRTY2FsZSwgZGV2aWNlT3JpZW50YXRp
b24sIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgdGFy
Z2V0U2NhbGUsIGRldmljZU9yaWVudGF0aW9uLCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZp
Z3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGRv
dWJsZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKQEAg
LTMxNSw3ICszMTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0
aW9uVmlld0xheW91dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaQogICAgIG1fdmlld3BvcnRD
b25maWd1cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoID0gbWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRDb25maWd1cmF0aW9u
Vmlld0xheW91dFNpemUoc2l6ZSwgc2NhbGVGYWN0b3IsIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VX
aWR0aCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShzaXplLCBzY2FsZUZh
Y3RvciwgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2Nh
bGFibGUpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQogICAgIG1fZm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUgPSB1c2VyU2NhbGFibGU7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb3JjZUFsd2F5
c1VzZXJTY2FsYWJsZSh1c2VyU2NhbGFibGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUodXNl
clNjYWxhYmxlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF4
aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKQEAgLTMz
Myw3ICszMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXpl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKICAgICBtX21heGltdW1Vbm9ic2N1cmVk
U2l6ZSA9IHNpemU7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUo
c2l6ZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoc2l6ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldERldmljZU9yaWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3Jp
ZW50YXRpb24pCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERldmlj
ZU9yaWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24pCiAgICAgaWYgKGRldmljZU9y
aWVudGF0aW9uICE9IG1fZGV2aWNlT3JpZW50YXRpb24pIHsKICAgICAgICAgbV9kZXZpY2VPcmll
bnRhdGlvbiA9IGRldmljZU9yaWVudGF0aW9uOwogICAgICAgICBpZiAoaGFzUnVubmluZ1Byb2Nl
c3MoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RGV2aWNlT3JpZW50YXRpb24oZGV2aWNlT3JpZW50YXRpb24pLCBtX3BhZ2VJRCk7CisgICAgICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERldmljZU9yaWVudGF0
aW9uKGRldmljZU9yaWVudGF0aW9uKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIH0KIApAQCAtMzUz
LDcgKzM1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1l
bnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzCiAgICAgbV9vdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzID0gdmlld3BvcnRBcmd1bWVudHM7CiAKICAgICBpZiAoaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRP
dmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1lbnRzKSwgbV9wYWdlSUQpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHMpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHN0
YXRpYyBib29sIGV4Y2VlZHNSZW5kZXJUcmVlU2l6ZVNpemVUaHJlc2hvbGQodWludDY0X3QgdGhy
ZXNob2xkU2l6ZSwgdWludDY0X3QgY29tbWl0dGVkU2l6ZSkKQEAgLTQxNSw3ICs0MTUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIFdlYkNvcmU6OlRleAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50MzJfdClncmFu
dWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50LCAodWludDMyX3QpZ3Jh
bnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTQyNiwxNyArNDI2LDE3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWluCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhwb2ludCwg
dG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhw
b2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJp
bmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VEaWN0YXRlZFRleHQob2xkVGV4dCwgbmV3VGV4
dCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cGxhY2VEaWN0YXRlZFRleHQob2xkVGV4dCwgbmV3VGV4dCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRU
ZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2Vs
ZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9u
RGF0YSk+JiYgY2FsbGJhY2spCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJl
Y3Rpb24KICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiks
IFdURk1vdmUoY2FsbGJhY2spLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uRGF0YSh0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCkBAIC00NTYsMTMgKzQ1NiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBs
eUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCkKIHsK
ICAgICBib29sIGF1dG9jb3JyZWN0aW9uQXBwbGllZCA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJl
Y3Rpb24sIG9yaWdpbmFsVGV4dCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTeW5jQXBwbHlBdXRvY29y
cmVjdGlvbjo6UmVwbHkoYXV0b2NvcnJlY3Rpb25BcHBsaWVkKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlN5bmNBcHBseUF1dG9jb3JyZWN0
aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTeW5jQXBw
bHlBdXRvY29ycmVjdGlvbjo6UmVwbHkoYXV0b2NvcnJlY3Rpb25BcHBsaWVkKSwgbV93ZWJQYWdl
SUQpOwogICAgIHJldHVybiBhdXRvY29ycmVjdGlvbkFwcGxpZWQ7CiB9CiAKQEAgLTQ3NCw3ICs0
NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbgogICAgIH0KICAgICAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlB
dFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0
eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC00ODUsNyArNDg1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pihk
aXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC00OTYsNyArNDk2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdU
Rjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJCiAgICAgfQogICAg
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRp
b25BdFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlv
biBkaXJlY3RpCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdp
blNlbGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQocG9pbnQsIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgCiB9CiAKQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29u
c3QgV2ViQ29yZTo6SW50UAogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5
KHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50LCBncmFu
dWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKICAgICAKIH0KIApAQCAtNTUzLDEyICs1NTMsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgY28KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RGljdGF0aW9uQ29u
dGV4dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29y
cmVjdGlvbkNvbnRleHQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dCYgY29udGV4dCkKQEAgLTU3NCwxNyArNTc0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRT
ZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVHdvRmluZ2Vy
VGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIE9wdGlvblNldDxXZWJF
dmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgdWludDY0X3QgcmVxdWVzdElEKQogewotICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50
KHBvaW50LCBtb2RpZmllcnMsIHJlcXVlc3RJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwg
bW9kaWZpZXJzLCByZXF1ZXN0SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgdWludDY0X3QgcmVxdWVzdElEKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpIYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KHBvaW50LCByZXF1ZXN0
SUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okhh
bmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTU5NSw3ICs1OTUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNoZXMoZnJvbSwgdG8sIGdl
c3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoVHdvVG91Y2hlcyhmcm9t
LCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQpAQCAtNjA1LDIy
ICs2MDUsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFAKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24ocmVxdWVzdCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RQb3NpdGlvbkluZm9ybWF0
aW9uKHJlcXVlc3QpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFy
dEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0
SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRBdFBvc2l0aW9uKHBvaW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RvcEludGVyYWN0aW9uKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN0b3BJbnRlcmFjdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wSW50ZXJhY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBh
Y3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
QWN0aW9uT25FbGVtZW50KGFjdGlvbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rpb25PbkVsZW1lbnQoYWN0aW9uKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0
IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VTaXplKQpA
QCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCgpCiAgICAgaWYgKGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogICAgICAgICBOYXZp
Z2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp0aGlzKS5yZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9r
ZW4oTmF2aWdhdGlvblN0YXRlOjpOZXR3b3JrQWN0aXZpdHlUb2tlblJlbGVhc2VSZWFzb246OlNj
cmVlbkxvY2tlZCk7CiAjZW5kaWYKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90
dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKCkKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5n
QmFja2dyb3VuZCgpCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnByZXBhcmVGb3JBcHBTdXNwZW5z
aW9uKCk7CiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPmhpZGVDb250ZW50VW50aWxQZW5kaW5nVXBk
YXRlKCk7CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBw
bGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCgpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNh
dGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmlzSW5IYXJkd2FyZUtleWJvYXJkTW9k
ZSgpCkBAIC02NjAsMTMgKzY2MCwxMyBAQCBib29sIFdlYlBhZ2VQcm94eTo6aXNJbkhhcmR3YXJl
S2V5Ym9hcmRNb2RlKCkKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQoKQogewogICAgIGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNT
dXNwZW5kZWRVbmRlckxvY2tdOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwg
bV9wYWdlSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFyZHdh
cmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQoaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCkp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBtX3dlYlBh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXJkd2FyZUtl
eWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKSksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBs
aWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0
aXZlKCkKQEAgLTY3NSwxNyArNjc1LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikKICAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSgpOwogI2VuZGlmCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RXh0ZW5kU2VsZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFu
dWxhcml0eSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFeHRlbmRTZWxlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdvcmRCYWNrd2Fy
ZCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXb3Jk
QmFja3dhcmQoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2VsZWN0V29yZEJhY2t3YXJkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IG9mZnNldCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC02OTYsNyArNjk2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3IKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIFdURjo6RnVuY3Rp
b248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzA3LDIyICs3MDcsMjIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50
MzJfdCBvZmZzZXQsIGNvbnN0IFMKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zm
c2V0LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KG9mZnNl
dCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZFN0b3JlKQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmVTZWxlY3Rpb25Gb3JB
Y2Nlc3NpYmlsaXR5KHNob3VsZFN0b3JlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KHNob3Vs
ZFN0b3JlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRBdXRv
c2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbkluV2lu
ZG93KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RhcnRBdXRv
c2Nyb2xsQXRQb3NpdGlvbihwb3NpdGlvbkluV2luZG93KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihw
b3NpdGlvbkluV2luZG93KSwgbV93ZWJQYWdlSUQpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNhbmNlbEF1dG9zY3JvbGwoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2FuY2VsQXV0b3Njcm9sbCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxBdXRvc2Nyb2xsKCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9m
ZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2Vs
ZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAg
ICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92
ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25CeU9mZnNldChv
ZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBFZGl0b3JTdGF0ZSYgc3RhdGUsIGJvb2wgaXNDaGFy
RXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93VG9rZW4pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCwg
Ym9vbCkKQEAgLTgwNiw1OCArODA2LDU4IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmly
c3RNb3VzZShpbnQsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpCiB7Ci0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2lsbFN0
YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cG90ZW50aWFsVGFwQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwb3NpdGlvbiwgYm9vbCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uLCB1
aW50NjRfdCYgcmVxdWVzdElEKQogewogICAgIGhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpOwotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3RlbnRpYWxUYXBBdFBvc2l0aW9u
KHJlcXVlc3RJRCwgcG9zaXRpb24sIHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRp
b24pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBv
dGVudGlhbFRhcEF0UG9zaXRpb24ocmVxdWVzdElELCBwb3NpdGlvbiwgc2hvdWxkUmVxdWVzdE1h
Z25pZmljYXRpb25JbmZvcm1hdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFBvdGVudGlhbFRhcChPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBt
b2RpZmllcnMsIFRyYW5zYWN0aW9uSUQgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNo
U3RhcnQsIFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbW1pdFBvdGVudGlhbFRhcChtb2RpZmllcnMsIGxheWVy
VHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0LCBwb2ludGVySWQpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbW1pdFBvdGVudGlhbFRh
cChtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0LCBwb2lu
dGVySWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxQb3Rl
bnRpYWxUYXAoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5j
ZWxQb3RlbnRpYWxUYXAoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDYW5jZWxQb3RlbnRpYWxUYXAoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBwb3NpdGlvbiwgdWludDY0X3QmIHJlcXVlc3RJRCkKIHsKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihyZXF1ZXN0SUQs
IHBvc2l0aW9uKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUYXBIaWdobGlnaHRBdFBvc2l0aW9uKHJlcXVlc3RJRCwgcG9zaXRpb24pLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUYXAoY29uc3QgRmxvYXRQb2lu
dCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgVHJh
bnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCkKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlVGFwKHJvdW5kZWRJbnRQ
b2ludChsb2NhdGlvbiksIG1vZGlmaWVycywgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRv
dWNoU3RhcnQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkhhbmRsZVRhcChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBtb2RpZmllcnMsIGxheWVy
VHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjb2duaXplTG9uZ1ByZXNzKCkKIHsKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjb2duaXplTG9uZ1ByZXNzKCksIG1fcGFn
ZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjb2duaXpl
TG9uZ1ByZXNzKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgVHJhbnNhY3Rp
b25JRCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCkKIHsKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xp
Y2tBdFBvaW50KHBvaW50LCBtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RU
b3VjaFN0YXJ0KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9pbnQocG9pbnQsIG1vZGlmaWVy
cywgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0
aW9uKHBvc2l0aW9uKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKHBvc2l0aW9uKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVu
ZGVkQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9kZVNlYXJjaEVu
ZGVkQXRQb3NpdGlvbihwb3NpdGlvbiksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihwb3Np
dGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJsdXJGb2N1c2Vk
RWxlbWVudCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJsdXJG
b2N1c2VkRWxlbWVudCgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkJsdXJGb2N1c2VkRWxlbWVudCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIEZsb2F0
U2l6ZSBXZWJQYWdlUHJveHk6OnNjcmVlblNpemUoKQpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgV2ViQ29yCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJc1Nob3dpbmdJbnB1
dFZpZXdGb3JGb2N1c2VkRWxlbWVudChib29sIHNob3dpbmdJbnB1dFZpZXcpCiB7Ci0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZv
Y3VzZWRFbGVtZW50KHNob3dpbmdJbnB1dFZpZXcpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRF
bGVtZW50KHNob3dpbmdJbnB1dFZpZXcpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1l
bnQoKQpAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWxlYXNlQWxs
VG91Y2hQb2ludHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2ZpbGxMb2dpbkNyZWRlbnRp
YWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdXRvZmlsbExvZ2luQ3JlZGVu
dGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKHVzZXJuYW1lLCBw
YXNzd29yZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dJbnNw
ZWN0b3JIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0JiBoaWdobGlnaHQpCkBAIC05
OTcsMjIgKzk5NywyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1l
bnQoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZChDYQogICAgIH0KICAgICAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0Rm9jdXNlZEVs
ZW1lbnQoaXNGb3J3YXJkLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRGb2N1c2VkRWxlbWVudChpc0ZvcndhcmQs
IGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRG
b2N1c2VkRWxlbWVudFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50VmFsdWUodmFsdWUpLCBt
X3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3Vz
ZWRFbGVtZW50VmFsdWUodmFsdWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXIoZG91YmxlIHZhbHVlKQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb2N1c2VkRWxlbWVudFZhbHVl
QXNOdW1iZXIodmFsdWUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50VmFsdWVBc051bWJlcih2YWx1ZSksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvY3VzZWRFbGVtZW50U2VsZWN0ZWRJ
bmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb2N1c2VkRWxlbWVudFNlbGVj
dGVkSW5kZXgoaW5kZXgsIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50U2VsZWN0
ZWRJbmRleChpbmRleCwgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERp
Y3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCkBAIC0xMDgyLDcgKzEwODIs
NyBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZQogICAgIHVpbnQzMl90IHBhZ2VDb3VudCA9IDA7
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2sp
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IHVzaW5nIE1lc3NhZ2UgPSBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREY7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2UoZnJhbWVJRCwg
cHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgTWVzc2FnZTo6UmVwbHkocGFnZUNvdW50KSwgbV9wYWdl
SUQsIFNlY29uZHM6OmluZmluaXR5KCkpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdl
KGZyYW1lSUQsIHByaW50SW5mbywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3Vu
dCksIG1fd2ViUGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpKTsKICAgICByZXR1cm4gcGFnZUNv
dW50OwogfQogCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1Rv
UERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBDYWxsYmFjawog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29udGVudFNpemVDYXRl
Z29yeSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50U2l6ZUNhdGVnb3J5KSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5kKQpAQCAt
MTEwMyw3ICsxMTAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWEKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGNvbW1hbmQp
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoY29tbWFuZCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBl
ZGl0b3JTdGF0ZSkKQEAgLTExNTgsNyArMTE1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJ
c1Njcm9sbGluZ09yWm9vbWluZyhib29sIGlzU2Nyb2xsaW5nT3Jab29taW5nKQogdm9pZCBXZWJQ
YWdlUHJveHk6OmhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wga2V5Ym9h
cmRJc0F0dGFjaGVkKQogewogICAgIHVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXJkd2FyZUtleWJvYXJkQXZhaWxh
YmlsaXR5Q2hhbmdlZChrZXlib2FyZElzQXR0YWNoZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5
Q2hhbmdlZChrZXlib2FyZElzQXR0YWNoZWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYpPiYmIGNhbGxiYWNr
KQpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RFdmFzaW9u
UmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVj
dGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RF
dmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGlu
dDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9u
RGVsdGEsIGludDY0X3QgbGVuZ3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShsb2NhdGlvbkRlbHRhLCBsZW5ndGhEZWx0YSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2Vs
ZWN0aW9uV2l0aERlbHRhKGxvY2F0aW9uRGVsdGEsIGxlbmd0aERlbHRhKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4
dFJlcXVlc3QgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkRvY3VtZW50
RWRpdGluZ0NvbnRleHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE4OCw3ICsxMTg4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KFdlYktp
dDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KHJlcXVlc3QpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REb2N1bWVudEVk
aXRpbmdDb250ZXh0KHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMjA2LDEzICsx
MjA2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1z
UmVxdWVzdChib29sIGFkZGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REcmFnU3RhcnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dl
ZEFjdGlvbnMpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERyYWdTdGFydChjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV9wYWdlSUQpOworICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REcmFnU3RhcnQoY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFn
U2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucykK
IHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24o
Y2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fcGFnZUlE
KTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBhbGxvd2VkQWN0aW9ucyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8VGV4dElu
ZGljYXRvckRhdGE+IGRhdGEpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb25jbHVkZURyb3Ao
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29uY2x1ZGVE
cm9wKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZENvbmNsdWRlRHJvcCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtMTI1Myw4
ICsxMjUzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW4KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQog
ewotICAgIHBhZ2VDbGllbnQoKS5yZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChm
aWxlTmFtZSwgW3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpLCBwYWdlSUQgPSBtX3BhZ2VJRF0o
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkgewotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChwYXNzd29y
ZCksIHBhZ2VJRCk7CisgICAgcGFnZUNsaWVudCgpLnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50KGZpbGVOYW1lLCBbcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyksIHdlYlBhZ2VJ
RCA9IG1fd2ViUGFnZUlEXShjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7CisgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50KHBhc3N3b3JkKSwgd2ViUGFnZUlEKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
TWFjLm1tCmluZGV4IDM0OWNlZDNlMTgwLi42ODZhMWYxNmM3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5t
bQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyCiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21p
Y2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0g
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwg
YWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgfTsK
IAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRVUkwsIGNvbnN0IFMKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKICAgICBXZWJQYWdl
UHJveHkqIGluc3BlY3RvclBhZ2UgPSB3ZWJWaWV3KCktPl9wYWdlLmdldCgpOwotICAgIGluc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6
RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgaW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgIGluc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwg
aW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDIxMzViZjExODhlLi5jYTdiNmM1MTM4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEyMiw3ICsxMjIsNyBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUdlb21l
dHJ5KCkKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQogewogICAgIFNlY29u
ZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRz
KDI1MCk7Ci0gICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1t
ZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4o
bV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6
OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7Cisg
ICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdl
UHJveHkud2ViUGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRG
b3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2lsbFNlbmRVcGRhdGVHZW9t
ZXRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCA1MDI0MWQ4YmY2Mi4uNDIzYTA2YWFjNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAK
ICAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBnZXN0dXJl
IG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQg
Ym91bmRzIHlldC4KICAgICAgICAgbV9tYWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHkucGFn
ZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpLCBt
X3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiAgICAgICAgIG1fbGFzdE1hZ25pZmljYXRpb25H
ZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuOwpA
QCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogICAgIGlmIChtX2FjdGl2
ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVBy
b3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
OjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiksIG1f
d2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKIH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0
YW5nbGVDb21wb25lbnREZWx0YShGbG9hdFJlY3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQppbmRleCAyMTUxNjYyZDM0Ny4uYWU4N2FhOWNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbQpAQCAtMTkzLDcgKzE5Myw3IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXpl
cldpbGxCZWdpbkFuaW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjCiAgICAgLy8g
RklYTUU6IENvbm5lY3Rpb24gY2FuIGJlIG51bGwgaWYgdGhlIHByb2Nlc3MgaXMgY2xvc2VkOyB3
ZSBzaG91bGQgY2xlYW4gdXAgYmV0dGVyIGluIHRoYXQgY2FzZS4KICAgICBpZiAoX3N0YXRlID09
IFdlYktpdDo6SW1tZWRpYXRlQWN0aW9uU3RhdGU6OlBlbmRpbmcpIHsKICAgICAgICAgaWYgKGF1
dG8qIGNvbm5lY3Rpb24gPSBfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkgewotICAgICAg
ICAgICAgYm9vbCByZWNlaXZlZFJlcGx5ID0gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFj
dGlvbkhpdFRlc3Q+KF9wYWdlLT5wYWdlSUQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1
MDApKTsKKyAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZv
cm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+d2ViUGFnZUlEKCksIFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMoNTAwKSk7CiAgICAgICAgICAgICBpZiAoIXJlY2VpdmVkUmVwbHkpCiAg
ICAgICAgICAgICAgICAgX3N0YXRlID0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6VGlt
ZWRPdXQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAyOWM2MTQwYjIwOS4uZTUzNzk3NDA5NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgYwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBh
dG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsK
IAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRl
U3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH07CiAKICAgICBp
ZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHJpbmcmCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSks
IG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjMzI1Njc4ZjM4Yy4uN2Q0MTFlODA4OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAt
MTcyLDcgKzE3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hh
bmdlZChjb25zdCBGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93CiAgICAgLy8gSW4gY2FzZSB0
aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5kb3dGcmFtZSgpLCB3ZSBjYWxsIGl0IGhlcmUg
dG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJvcHJpYXRlIHdpbmRvdyBmcmFtZS4KICAgICBt
X3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZp
ZXdDb29yZGluYXRlc10gKEZsb2F0UmVjdCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMp
IHsKICAgICAgICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGlu
YXRlcyA9IHBhZ2VDbGllbnQoKS5jb252ZXJ0VG9Vc2VyU3BhY2Uod2luZG93RnJhbWVJblNjcmVl
bkNvb3JkaW5hdGVzKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRl
cywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldp
bmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQp
OworICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93QW5kVmll
d0ZyYW1lc0NoYW5nZWQod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFt
ZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMsIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0
ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7
CiB9CiAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1l
SXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Njcm9sbGFibGUpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZShpc1Njcm9sbGFibGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3Rl
clVuZG9Hcm91cCkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5j
KHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJV
bmRvR3JvdXApLCBtX3dlYlBhZ2VJRCk7CiAjZWxzZQogICAgIEluc2VydFRleHRPcHRpb25zIG9w
dGlvbnM7CiAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3Vw
OwpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKIAotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9y
Q2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNo
YXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxs
YmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJpbmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
YWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9u
dEluZm8mLCBkb3VibGUsIGJvb2wsCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25D
YWxsYmFjayhjb25zdCBGb250SW5mbyYgZm9udEluZm8sIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBz
ZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNzAs
NyArMjcwLDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAKICAgICBjb25zdCBTZWNvbmRzIG1l
c3NhZ2VUaW1lb3V0KDIwKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV9wYWdlSUQs
IG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV93ZWJQYWdl
SUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI4Miw3ICsy
ODIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIHVpbnQ2NF90IHNpemUgPSAwOwog
ICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwogICAgIHByb2Nlc3MoKS5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFz
dGVib2FyZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpS
ZXBseShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgICAgICBN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhh
bmRsZSwgc2l6ZSksIG1fd2ViUGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRs
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKQEAgLTI5NiwxNCArMjk2LDE0IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3Qg
U2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShy
ZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHByb2Nlc3MoKS5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6
UmVwbHkocmVzdWx0KSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJv
YXJkRGF0YSh0eXBlcywgZGF0YSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywg
ZGF0YSksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC0zMzMsMjIgKzMzMywyMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIHRleHRJbnB1dCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnVwcGVyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcHBlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb3dlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG93ZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVX
b3JkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZChib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKQpAQCAtMzU4
LDcgKzM1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKIAogICAgIFRleHRDaGVja2VyOjpz
ZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOwog
ICAgIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZDsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQpAQCAtMzk0LDcgKzM5NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93
VG9rZW4pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRv
d1Rva2VuKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9j
dXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAtNDIzLDcg
KzQyMyw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9y
RXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50CiAKICAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2Vzcygp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZl
bnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2
ZW50OjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHByb2Nl
c3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmlu
Z0V2ZW50KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJp
bmdFdmVudDo6UmVwbHkocmVzdWx0KSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzQsNyArNDM0LDcgQEAgYm9vbCBXZWJQYWdlUHJv
eHk6OmFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJN
b3VzZUV2ZW4KIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBt
ZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCksIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VU
aW1lb3V0KTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vw
dHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nl
cHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMjZmODU3YWZkMy4uNDNhMGFkMTdhYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTE3LDYgKzkxNyw3IEBACiAJCTQ2QkVCNkRCMjJGQjlENDgwMDI2OTg2NyAvKiBMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QkVCNkQ5MjJGQjlENDgwMDI2OTg2NyAvKiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAq
LzsgfTsKIAkJNDZCRUI2REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJF
QjZERDIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsK
IAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
RUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5o
ICovOyB9OworCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
MzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsK
IAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2
M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9
OwogCQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4RDE5QjA2NDE5MDBEMTRBRUYgLyog
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0MxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCAqLzsgfTsKQEAgLTMyMjgsNiArMzIyOSw3IEBA
CiAJCTQ2QkVCNkRFMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVC
NkUyMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8q
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1
MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAv
KiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRBNDEwRjM1MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzg1OSw2ICs3ODYxLDcgQEAKIAkJCQlCQzExMUIwQjExMkY1RTRGMDAzMzdCQUIgLyog
V2ViUGFnZVByb3h5LmNwcCAqLywKIAkJCQlCQzAzMkRDQjEwRjQzODlGMDA1OEMxNUEgLyogV2Vi
UGFnZVByb3h5LmggKi8sCiAJCQkJQkNCRDM4RkExMjVCQUI5QTAwRDJDMjlGIC8qIFdlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oICovLAogCQkJCTdDNDY5NENEMUE1MUUzNjgwMEFENTg0NSAv
KiBXZWJQYXN0ZWJvYXJkUHJveHkuY3BwICovLAogCQkJCTdDNDY5NENFMUE1MUUzNjgwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHkuaCAqLywKIAkJCQk3QzQ2OTRDRjFBNTFFMzY4MDBBRDU4
NDUgLyogV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtMTAwMjUsNiArMTAw
MjgsNyBAQAogCQkJCUM1RkExRUQzMThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBp
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQxMkRBQjUyMDY2MkM3MzAwNkYwMEZCIC8qIFdL
QW5pbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJEMTI0RUMyRTEw
MDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzM5MjI5MjMxNkVD
NEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzREM2ODIyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc1RjQxMjRG
RjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377495</attachid>
            <date>2019-08-28 15:25:36 -0700</date>
            <delta_ts>2019-08-28 15:53:56 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>201233_wip.patch</filename>
            <type>text/plain</type>
            <size>327163</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5k
ZXggZGI3MmNhMTY1ODcuLmRhZjRkYTIyNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQorUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6
IG1faXRlbVN0YXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyKG1faXRlbVN0YXRl
LmlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggM2E0NWUxY2I3YTcuLjZkNjdlYzBiMmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJTZXNzaW9u
U3RhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
YWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGlj
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
KyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZv
aWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsg
fQpAQCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVt
b3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJMOwot
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA2MWE2OWIxZjNhNi4uMmY1ZjgwYzA3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcApAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRC
YXNlKgogICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQpOwogCiAgICAgaWYgKG1pbGVzdG9uZXMpCi0gICAgICAgIHdlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXMobWlsZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgICAgICB3ZWJQ
YWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPndlYlBhZ2VJRCgpKTsKIAog
ICAgIHdlYlBhZ2VQcm94eS0+c2V0TG9hZGVyQ2xpZW50KFdURk1vdmUobG9hZGVyQ2xpZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0OTY3Nzg4YTEwNS4uMTEw
MDMzYmE2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNzIwLDcgKzcy
MCw3IEBAIC0gKE5TVUludGVnZXIpcGFnZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlICopaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFs
bG9jXSBfaW5pdFdpdGhQYWdlSUQ6X3BhZ2UtPnBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6
X3BhZ2UtPndlYlBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZjQ0MTE0MzU1ZC4uY2M3ZjZjOTYy
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtODc3LDcgKzg3Nyw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtfY29udGVudFZpZXcg
X3dlYlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1vdGVPYmplY3RSZWdpc3RyeSkKLSAg
ICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICNlbmRpZgogCiAgICAg
X3BhZ2UtPmNsb3NlKCk7CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCAtICh2b2lkKV9kaWRDb21taXRM
YXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVy
VHJlZQogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1b
V0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2RpZENvbW1pdExheWVyVHJlZTpd
IHRyYW5zYWN0aW9uSUQgIiA8PCAgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgp
IDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9kaWRDb21taXRM
YXllclRyZWU6XSB0cmFuc2FjdGlvbklEICIgPDwgIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5z
YWN0aW9uSUQoKSA8PCAiIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBib29sIG5lZWRVcGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzID0gX3BhZ2UtPnVwZGF0ZUxheW91dFZpZXdwb3J0UGFyYW1ldGVycyhsYXllclRy
ZWVUcmFuc2FjdGlvbik7CiAKQEAgLTI5MDgsNyArMjkwOCw3IEBAIC0gKHZvaWQpX2Rpc3BhdGNo
U2V0Vmlld0xheW91dFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0U2l6ZQogICAg
IGlmIChfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShfbGFzdFNl
bnRWaWV3TGF5b3V0U2l6ZS52YWx1ZSgpLCB2aWV3TGF5b3V0U2l6ZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZGlzcGF0Y2hTZXRWaWV3TGF5b3V0U2l6
ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9vbVNjYWxlICIgPDwgY29udGVu
dFpvb21TY2FsZShzZWxmKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfZGlzcGF0
Y2hTZXRWaWV3TGF5b3V0U2l6ZTpdICIgPDwgdmlld0xheW91dFNpemUgPDwgIiBjb250ZW50Wm9v
bVNjYWxlICIgPDwgY29udGVudFpvb21TY2FsZShzZWxmKSk7CiAgICAgX3BhZ2UtPnNldFZpZXdw
b3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBfcGFnZS0+bGF5
b3V0U2l6ZVNjYWxlRmFjdG9yKCksIF9wYWdlLT5taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgo
KSk7CiAgICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSB2aWV3TGF5b3V0U2l6ZTsKIH0KQEAg
LTMyMTIsNyArMzIxMiw3IEBAIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9yaWVudGF0aW9uKFdLV2Vi
VmlldyAqd2ViVmlldykKIAogLSAodm9pZClfY2FuY2VsQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwg
X3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2NhbmNlbEFuaW1hdGVkUmVzaXplOl0gIiA8PCAiIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2Vi
VmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfY2FuY2VsQW5pbWF0ZWRSZXNpemU6
XSAiIDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlKTsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykKICAgICAgICAg
cmV0dXJuOwogCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogI2Vsc2UKICAgICBpZiAoIV9yZW1vdGVPYmplY3RS
ZWdpc3RyeSkgewogICAgICAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBhZG9wdE5TKFtbX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0aFdlYlBhZ2VQcm94eToqX3BhZ2Vd
KTsKLSAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgX3BhZ2UtPnBhZ2VJRCgpLCBbX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJl
Z2lzdHJ5XSk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIF9wYWdlLT53ZWJQYWdlSUQoKSwgW19yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1v
dGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAogICAgIHJldHVybiBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkuZ2V0KCk7CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCAtIChfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxs
b2NdIF9pbml0V2l0aFBhZ2VJRDpfcGFnZS0+cGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpf
cGFnZS0+d2ViUGFnZUlEKCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoX1dLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHMpX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMKQEAgLTUwMTcsNyAr
NTAxNyw3IEBAIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29u
dGV4dCAqKXRleHRJbnB1dENvbnRleHQgY29tcGxldGlvCiAjZW5kaWYKIAogICAgIGF1dG8gd2Vi
Q29udGV4dCA9IFt0ZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5wdXRDb250ZXh0XTsKLSAgICBpZiAo
d2ViQ29udGV4dC53ZWJQYWdlSWRlbnRpZmllciAhPSBfcGFnZS0+cGFnZUlEKCkpCisgICAgaWYg
KHdlYkNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgIT0gX3BhZ2UtPndlYlBhZ2VJRCgpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiVGhlIHByb3ZpZGVkIF9XS1RleHRJbnB1dENvbnRleHQgd2FzIG5vdCBjcmVhdGVkIGJ5IHRo
aXMgV0tXZWJWaWV3LiJdOwogCiAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwpAQCAt
NjIzMyw3ICs2MjMzLDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6
ZQogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dl
YlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfZW5kQW5pbWF0ZWRSZXNpemU6XSAiIDw8
ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
Ii1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9lbmRBbmltYXRlZFJl
c2l6ZTpdICIgPDwgIiBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAiIDw8IChpbnQpX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIHVw
LXRvLWRhdGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAvLyB0aGUgcmVz
aXplLiBPdGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3ZSBkby4KQEAg
LTYyNDQsNyArNjI0NCw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAKIC0gKHZvaWQp
X3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogewotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAi
LVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+cGFnZUlEKCkgPDwgIiBfcmVzaXplV2hpbGVIaWRpbmdD
b250ZW50V2l0aFVwZGF0ZXM6XSIpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMs
IHN0cmVhbSA8PCAiLVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+aWRlbnRpZmllcigpIDw8ICIgX3Jl
c2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iKTsKICAgICBbc2VsZiBfYmVnaW5B
bmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOnVwZGF0ZUJsb2NrXTsKICAgICBpZiAoX2R5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpS
ZXNpemluZ1dpdGhBbmltYXRpb24pIHsKICAgICAgICAgW19jb250ZW50VmlldyBzZXRIaWRkZW46
WUVTXTsKQEAgLTYzNDUsNyArNjM0NSw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0
KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAKIC0g
KHZvaWQpX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTooQ0dT
aXplKW1pbmltdW1MYXlvdXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1Np
emUpbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgp
IDw8ICIgX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZToiIDw8
IFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSkgPDwgIiBtYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZToiIDw8IFdlYkNvcmU6OkZsb2F0U2l6ZShtYXhpbXVtVW5vYnNjdXJl
ZFNpemVPdmVycmlkZSkgPDwgIl0iKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3Rz
LCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9v
dmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6IiA8PCBXZWJDb3Jl
OjpGbG9hdFNpemUobWluaW11bUxheW91dFNpemUpIDw8ICIgbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU6IiA8PCBXZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVVub2JzY3VyZWRTaXplT3Zl
cnJpZGUpIDw8ICJdIik7CiAKICAgICBbc2VsZiBfc2V0Vmlld0xheW91dFNpemVPdmVycmlkZTpt
aW5pbXVtTGF5b3V0U2l6ZV07CiAgICAgW3NlbGYgX3NldE1heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlOm1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IGFjN2U0OWFiMDI1Li4zZGQxMGU1ZjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC01MDksNyArNTA5
LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5wYWdlSUQoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
b21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5z
OwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDIyYTg2NDU5MWRmLi42MzVmN2RhNWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE3NzUsNSArMTc3NSw1
IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyoKIAogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29u
dGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gcGFnZSA/IGNvbnRleHQtPnByaXYtPndlYlZpZXdz
LmdldChwYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHBh
Z2UgPyBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggM2E1MjE0MmVkNzUuLjNmYjkwY2IxODgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bh
Z2VfaWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uo
d2ViVmlldykucGFnZUlEKCkudG9VSW50NjQoKTsKKyAgICByZXR1cm4gZ2V0UGFnZSh3ZWJWaWV3
KS5pZGVudGlmaWVyKCkudG9VSW50NjQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IGJlYWE4OThiYWRiLi40N2Y5MTc0MDUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
QEAgLTE4NywxNiArMTg3LDE2IEBAIFdlYlBhZ2VQcm94eSogV2ViQXV0b21hdGlvblNlc3Npb246
OndlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSkKIAogU3RyaW5nIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCiB7Ci0gICAgYXV0byBpdGVyID0gbV93ZWJQYWdlSGFuZGxlTWFw
LmZpbmQod2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBhdXRvIGl0ZXIgPSBtX3dlYlBhZ2VI
YW5kbGVNYXAuZmluZCh3ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpKTsKICAgICBpZiAoaXRlciAh
PSBtX3dlYlBhZ2VIYW5kbGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsK
IAogICAgIFN0cmluZyBoYW5kbGUgPSAicGFnZS0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAKLSAgICBhdXRvIGZpcnN0QWRkUmVzdWx0
ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJveHkucGFnZUlEKCksIGhhbmRsZSk7
CisgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5hZGQod2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKSwgaGFuZGxlKTsKICAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0gbV9oYW5k
bGVXZWJQYWdlTWFwLmFkZChoYW5kbGUsIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgYXV0
byBzZWNvbmRBZGRSZXN1bHQgPSBtX2hhbmRsZVdlYlBhZ2VNYXAuYWRkKGhhbmRsZSwgd2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0
LmlzTmV3RW50cnkpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dAogCiAgICAgbV9jbGllbnQtPnJlcXVlc3RTd2l0Y2hUb1Bh
Z2UoKnRoaXMsICpwYWdlLCBbZnJhbWVJRCwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKICAgICAgICAgcGFnZS0+c2V0Rm9jdXModHJ1ZSk7
Ci0gICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CisgICAg
ICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlEKSwgMCk7CiAKICAgICAg
ICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfSk7CkBAIC00OTcsMTAgKzQ5NywxMCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVP
blBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCh0
aW1lb3V0KTsKICAgICBzd2l0Y2ggKGxvYWRTdHJhdGVneSkgewogICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAg
ICBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQ
YWdlLnNldChwYWdlLnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIG1fcGVu
ZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2Uuc2V0
KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgIG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlclBhZ2Uuc2V0KHBhZ2UuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
UGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmln
YXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNh
bGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKIHsKICAgICBJbnNwZWN0
b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJvciA9IFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJP
Ul9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAoYXV0byBpZCA6IGNvcHlUb1ZlY3RvcihtYXAua2V5
cygpKSkgewpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5h
dmlnYXRpb25PY2N1cnJlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lCiAgICAg
ICAgIC8vIE5ldyBwYWdlIGxvYWRlZCwgY2xlYXIgZnJhbWUgaGFuZGxlcyBwcmV2aW91c2x5IGNh
Y2hlZC4KICAgICAgICAgbV9oYW5kbGVXZWJGcmFtZU1hcC5jbGVhcigpOwogICAgICAgICBtX3dl
YkZyYW1lSGFuZGxlTWFwLmNsZWFyKCk7Ci0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50
YWtlKGZyYW1lLnBhZ2UoKS0+cGFnZUlEKCkpKSB7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZS50YWtlKGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9s
b2FkVGltZXIuc3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046
Ok9iamVjdDo6Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGlvbk9jY3VycmVkRm9yRnJhbWUoY29uc3QgV2Vi
RnJhbWVQcm94eSYgZnJhbWUKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRvY3VtZW50TG9h
ZGVkRm9yRnJhbWUoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1l
LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2UudGFrZShmcmFt
ZS5wYWdlKCktPnBhZ2VJRCgpKSkgeworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVu
ZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtl
KGZyYW1lLnBhZ2UoKS0+aWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgbV9sb2FkVGltZXIu
c3RvcCgpOwogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKEpTT046Ok9iamVjdDo6
Y3JlYXRlKCkpOwogICAgICAgICB9CkBAIC03OTIsMTQgKzc5MiwxNCBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpkb2N1bWVudExvYWRlZEZvckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkm
IGZyYW1lKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExv
YWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sg
PSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkp
CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQog
ewogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRv
IGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkK
ICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBX
ZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRF
UkFDVElPTlMpCi0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC04MjQsMTcgKzgyNCwxNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQ
cm94eSYgcGFnZSkKICAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFjdGlvbnMgb24gdGhpcyBw
YWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVzZSBzdWJzZXF1ZW50CiAg
ICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgogI2lmIEVOQUJMRShXRUJEUklW
RVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
TW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQor
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKICAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRp
bmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlm
aWVyKCkpKQogICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9O
QU1FKFdpbmRvd05vdEZvdW5kKSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNU
SU9OU19BUEkpCiAgICAgLy8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNl
bCBzbyB0aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgotICAg
IE9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIg
PSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBPcHRp
b25hbDxSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gaW5wdXREaXNwYXRjaGVyID0gbV9p
bnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpOwogICAgIGlmIChp
bnB1dERpc3BhdGNoZXIuaGFzVmFsdWUoKSkKICAgICAgICAgaW5wdXREaXNwYXRjaGVyLnZhbHVl
KCktPmNhbmNlbCgpOwogI2VuZGlmCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnQKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZhbHVhdGVKYXZhU2Ny
aXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbihwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgZnVuY3Rpb24sIGFyZ3Vt
ZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1l
b3V0LCBjYWxsYmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja1RpbWVvdXQsIGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtOTg3LDE3ICs5ODcsMTcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHQKICAgICB9OwogCiAgICAgaWYgKG9wdGlvbmFsTm9kZUhhbmRsZSkgewotICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHBhZ2Ut
PnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxOb2RlSGFu
ZGxlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG9wdGlvbmFsTmFtZSkgewotICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNv
bHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxO
YW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCAq
b3B0aW9uYWxOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsT3JkaW5hbCkgewotICAgICAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBhZ2VJRCgpLCBmcmFt
ZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPndl
YlBhZ2VJRCgpLCBmcmFtZUlELCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDI0LDcgKzEwMjQsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleAogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3Mo
aGFuZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlEKSk7CiAgICAgfTsKIAotICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OlJlc29sdmVQYXJlbnRGcmFtZShwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlUGFyZW50RnJh
bWUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBwcm90b2NvbFN0cmlu
Z1RvQ29vcmRpbmF0ZVN5c3RlbShjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW1TdHJpbmcp
CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRl
RWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbgogICAgIH07CiAK
ICAgICBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSBvcHRpb25hbFNjcm9sbEludG9WaWV3
SWZOZWVkZWQgPyAqb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkIDogZmFsc2U7Ci0gICAg
cGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFnZS0+cGFnZUlEKCksIGZyYW1l
SUQsIG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvb3JkaW5hdGVTeXN0ZW0u
dmFsdWUoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhh
bmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29vcmRpbmF0ZVN5c3RlbS52YWx1ZSgpKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUs
IFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0xMTA5LDcg
KzExMDksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50
KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZAogICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6U2VsZWN0T3B0aW9uRWxl
bWVudChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50KHBh
Z2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1Nob3dpbmdKYXZh
U2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgYm9vbCogcmVzdWx0KQpAQCAtMTI3OSw3ICsx
Mjc5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgUmUKICAgICAgICAgY2FsbGJhY2stPnNlbmRT
dWNjZXNzKGJ1aWxkQXJyYXlGb3JDb29raWVzKGNvb2tpZXMpKTsKICAgICB9OwogCi0gICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6R2V0Q29va2llc0ZvckZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxv
cHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6R2V0
Q29va2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRl
bGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpkZWxldGVTaW5nbGVDb29raWUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbAog
ICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6RGVsZXRlQ29va2llKHBhZ2UtPnBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5h
bWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVs
ZXRlQ29va2llKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluQnlB
ZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChTdHJpbmcgZG9tYWluKQpAQCAtMTQ0NSw3ICsxNDQ1LDcg
QEAgYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3QKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQogU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFn
ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXREaXNwYXRjaGVyc0J5
UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICByZXR1cm4gbV9pbnB1dERpc3Bh
dGNoZXJzQnlQYWdlLmVuc3VyZShwYWdlLmlkZW50aWZpZXIoKSwgWyZdIHsKICAgICAgICAgcmV0
dXJuIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQ
cm94eSYgcGFnZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQb2ludCwg
V1RGOjpudWxsb3B0KTsKICAgICB9OwogCi0gICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVu
dExheW91dChwYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRp
bmF0ZVN5c3RlbTo6TGF5b3V0Vmlld3BvcnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVtZW50TGF5
b3V0SGFuZGxlcikpOworICAgIHBhZ2UucHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVsZW1lbnRMYXlvdXQocGFn
ZS53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgZmFsc2UsIENvb3JkaW5hdGVTeXN0
ZW06OkxheW91dFZpZXdwb3J0KSwgV1RGTW92ZShkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRs
ZXIpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQpAQCAt
MTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxs
YmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5h
ZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0
byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1Bl
clBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxi
YWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE1MDcs
NyArMTUwNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50CiAKICAgICAgICAgLy8gSWYgdGhl
IGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQg
bWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAm
JiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewotICAgICAgICAgICAgYXV0byBj
YWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0Nh
bmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShw
YWdlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51
bGxvcHQpOwogICAgICAgICB9CiAKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBh
Z2UsIEtleWJvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKICAgICB9OwogCi0g
ICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS5pZGVudGlmaWVyKCksIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgY2FsbGJhY2tJbk1h
cChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICBjYWxs
YmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CkBAIC0x
NTUzLDcgKzE1NTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlibwogICAgIC8vIElmIHRoZSBp
bnRlcmFjdGlvbiBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzLCB0aGVuIGRvIG5vdCB3YWl0
IGZvciBldmVudHMgdG8gYmUgZmx1c2hlZC4KICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gc29tZSBj
b3JuZXIgY2FzZXMgb24gbWFjT1MsIHN1Y2ggYXMgcmVsZWFzaW5nIGEga2V5IHdoaWxlIENvbW1h
bmQgaXMgcHJlc3NlZC4KICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS5pc1Byb2Nlc3Np
bmdLZXlib2FyZEV2ZW50cygpKSB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1f
cGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBh
Z2VJRCgpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nS2V5Ym9h
cmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKTsK
ICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOwogICAgIH0KIApAQCAtMTYz
Nyw3ICsxNjM3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VF
dmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UtPmlkZW50aWZpZXIo
KSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCkK
ICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhf
TkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZl
bnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBKCiAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVczQyBkcml2
ZXIgaW1wbGVtZW50YXRpb25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBqdXN0IGRv
IG5vdGhpbmcgc2lsZW50bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0aHMsIHdl
IGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBhcmUgb3V0
c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KICAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXAgJiYgIXBh
Z2UtPmlzUHJvY2Vzc2luZ01vdXNlRXZlbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FsbGJh
Y2tUb0NhbmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwg
PSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS0+
aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpudWxsb3B0
KTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb24KICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgIH07
CiAKLSAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+aWRlbnRpZmllcigpLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNhbGxiYWNrSW5NYXApCiAgICAgICAgIGNhbGxi
YWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAg
ICAgY2FsbGJhY2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sp
OwpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3AKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0U2NyZWVuc2hvdENhbGxiYWNrSUQrKzsKICAgICBtX3Nj
cmVlbnNob3RDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAot
ICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpUYWtlU2NyZWVuc2hvdChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIGNhbGxiYWNrSUQpLCAwKTsK
KyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6VGFrZVNjcmVlbnNob3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5k
bGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNsaXBUb1ZpZXdwb3J0LCBjYWxsYmFja0lEKSwg
MCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURh
dGFIYW5kbGUsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4
IGViNGJkMmJhNTNjLi5kY2Y5ZjRkMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsOCAr
MzQsOCBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAgICB2b2lk
IHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VO
YXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGlt
ZXJGaXJlZCgpOwogCkBAIC0yODIsMjIgKzI4MiwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXI+IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOworICAgIEhh
c2hNYXA8U3RyaW5nLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7
CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYkZy
YW1lSGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZp
Z2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAg
IEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlckZyYW1lOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJ
bnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+
IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZF
Ul9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBt
X3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElP
TlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3Bl
bmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1
aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzIx
LDcgKzMyMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQ
SXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAg
IC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlh
bCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5w
dXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJz
QnlQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmPFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJh
Y2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9r
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCmluZGV4IGRmMjZhY2RiMWNhLi41
MGY0MjdlZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAgLTUwLDkg
KzUwLDkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4
dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgYm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0lu
c3BlY3RvckNhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkpKQogICAgICAg
ICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUo
VGltZW91dCkpOwotICAgIG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2Uuc2V0KHBh
Z2UtPnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9wZW5kaW5nSW5zcGVjdG9y
Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAKICAgICAvLyBEb24ndCBicmluZyB0aGUgaW5zcGVjdG9yIHRvIGZyb250IHNpbmNlIHRo
aXMgbWF5IGJlIGRvbmUgYXV0b21hdGljYWxseS4KICAgICAvLyBXZSBqdXN0IHdhbnQgaXQgbG9h
ZGVkIHNvIGl0IGNhbiBwYXVzZSBpZiBhIGJyZWFrcG9pbnQgaXMgaGl0IGR1cmluZyBhIGNvbW1h
bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZTU5YmU5MWE0MjAuLjkyY2YyMDhhYTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmPFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVh
dGUoV2ViUGFnZVByb3gKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZSgmcGFnZSkK
IHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQogCiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQpAQCAtMzE0LDcg
KzMxNCw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6flBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSgpCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGlk
YXRlKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRy
OwogCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXIubW0KaW5kZXggZjAyMDgzZGNlYzcuLmFkNGI2MWVjMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KQEAg
LTQ0LDcgKzQ0LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZXBsYWNlUmVsYXRp
dmVUb1NlbGVjdGlvbihOU0F0dHJpYnV0ZWRTdHJpbmcgKmFubm8KICAgICBpZiAoIW1fcGFnZS5o
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJl
bGF0aXZlVG9TZWxlY3Rpb24oYW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0
aCwgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3Ro
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24o
YW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCwgcmVsYXRpdmVSZXBsYWNl
bWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKSwgbV9wYWdlLndlYlBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZW1vdmVBbm5vdGF0aW9u
UmVsYXRpdmVUb1NlbGVjdGlvbihOU1N0cmluZyAqYW5ub3RhdGlvbk5hbWUsIGludDY0X3Qgc2Vs
ZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgpCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgVGV4
dENoZWNraW5nQ29udHJvbGxlcjo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24o
TlNTdHJpbmcgKmFubm90CiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0
aW9uKGFubm90YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9uKGFubm90
YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4
IGY3OGE4MDRiMjM1Li43YWIzNGUwYmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAt
MzI1LDcgKzMyNSw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAgICAgOiBtX3BhZ2UoJnBh
Z2UpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAog
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KCkKQEAgLTMzNyw3ICszMzcsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6On5WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV9w
YWdlID0gbnVsbHB0cjsKIAogICAgIGF1dG8gY29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0
TWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggOGEzOTRhZmU3MzguLjJhMjhiMTU5MjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjEwLDcg
KzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigp
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV9wYWdl
SUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIGNvbnN0IFN0cmluZyYg
V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKIHsKLSAgICBwcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIG1fcGFnZUlELCBtZXNzYWdlUmVjZWl2ZXIpOworICAgIHByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQsIG1l
c3NhZ2VSZWNlaXZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25z
dCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlE
KTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1fd2ViUGFnZUlEKTsKIH0KIAogI2VuZGlmCkBAIC0yODUsMTcgKzI4NSwxNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtpbmdFcnJvck9j
Y3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKIHsKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVk
KCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Bl
YWtpbmdFcnJvck9jY3VycmVkKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5IHNwZWVjaEJvdW5kYXJ5LCB1bnNp
Z25lZCBjaGFySW5kZXgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hC
b3VuZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChz
cGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5k
YXJ5LCBjaGFySW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2
b2ljZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDhkZjRkYTdiMzIwLi5mNDA0MmZlNzBkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzNjIs
NyArMTM2Miw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBs
RGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6fldlYlZp
ZXdJbXBsKCkKIHsKICAgICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgW21fcmVtb3Rl
T2JqZWN0UmVnaXN0cnkgX2ludmFsaWRhdGVdOwogICAgICAgICBtX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5ID0gbmlsOwogICAgIH0KQEAgLTE5NzksMTMgKzE5NzksMTMgQEAgZmxvYXQgV2ViVmlld0lt
cGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1w
bDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwg
IldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMs
IG1fcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNTMsNyArMjA1
Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAK
IHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0Rp
ZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdp
bmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIyMTYsMTkgKzIyMTYsMTkgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkKIAogdm9p
ZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBh
Z2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwg
JXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0Rp
ZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFn
ZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZp
ZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2Uo
KQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkg
YWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkp
OworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0
aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMzgyMyw3ICszODIzLDcgQEAgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgKldlYlZpZXdJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB7CiAgICAg
aWYgKCFtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7CiAgICAgICAgIG1fcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBhZG9wdE5TKFtbX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0V2l0
aFdlYlBhZ2VQcm94eTptX3BhZ2VdKTsKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIFttX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmpl
Y3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpLCBb
bV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIAog
ICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjYTc2ODdmNmI1Mi4uMWU4MGZmNTI4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShH
RU9MT0NBVElPTikKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBh
bGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihn
ZW9sb2NhdGlvbklELCBhbGxvd2VkKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGFsbG93ZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKaW5kZXggNjJiMDcyOWY4YTUuLjYxYjhmMzZl
ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuY3BwCkBAIC01MCwxOSArNTAsMTkgQEAgSW5zcGVjdG9yVGFyZ2V0UHJveHk6Okluc3BlY3Rv
clRhcmdldFByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0YXIKIHZvaWQg
SW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwm
IGNoYW5uZWwpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0
b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNv
bm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBt
X3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpkaXNj
b25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJikKIHsKICAgICBpZiAobV9wYWdlLmhh
c1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChpZGVudGlmaWVyKCksIG1lc3NhZ2UpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSks
IG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAppbmRleCBmODc2MWIxZjNmNC4uNzQ0Mzk4ODM3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byByZXF1ZXN0
ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90aWZpY2F0
aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAgICAgICBt
X3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJt
aXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBhbGxvd2Vk
KSwgcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH0pOwogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFk
ZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDdhM2U5YjIzYmEu
Ljc2MDYzMWM0OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAgdWludDY0
X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7
CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwg
Ym9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZp
Y2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+IG5vdGlm
aWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90
aWZpY2F0aW9uSUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3Bh
aXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkp
KTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwpA
QCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGwKIAogdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoV2ViTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpKS5zZWNvbmQuZ2V0KCkpCisgICAgaWYgKFdl
Yk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1h
a2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29u
ZC5nZXQoKSkKICAgICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKCpub3RpZmljYXRpb24pOwogfQog
ICAgIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQp
CiB7Ci0gICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMu
dGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KSk7CisgICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMu
dGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRp
b25JRCkpOwogICAgIGlmICh1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdsb2JhbElE
Tm90aWZpY2F0aW9uUGFpci5maXJzdCkgewogICAgICAgICBXZWJOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9IGdsb2JhbElETm90aWZpY2F0aW9uUGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25JRCk7CkBA
IC0xMTksMTIgKzExOSwxMiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQogfQogCi1z
dGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCwg
UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCitz
dGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0K
IAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBQYWdlSWRlbnRpZmllciBkZXNp
cmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRl
c2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJl
ZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZp
Y2F0aW9uSUQpOwogfQpAQCAtMTQxLDE1ICsxNDEsMTUgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3Rp
ZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQog
ewotICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgYXV0byB0
YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKIAogICAgIFZlY3Rvcjx1
aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklE
cy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAg
IGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNh
dGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9
IGl0LT5rZXkuZmlyc3Q7CisgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBpdC0+a2V5LmZpcnN0
OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsK
LSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25J
RCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYgKCFmaWx0
ZXJGdW5jdGlvbihwYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJv
eHlJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5maXJzdDsKQEAg
LTE3MCw4ICsxNzAsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAgIGlmIChpdCA9PSBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Ci0gICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CisgICAgYXV0byogd2ViUGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOwogICAgIGlmICgh
d2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODUsOCArMTg0LDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1
ZS5maXJzdDsKLSAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2Uod2ViUGFnZUlEKTsKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDExNTc4MWU0
MzMzLi40OGFiNThlODFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9v
bCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3Rp
ZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0
aW9uKShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdl
Tm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBX
ZWJDb250ZXh0U3VwcGxlbWVudApAQCAtODksOSArODksOSBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAg
Ly8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5v
dGlmaWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0
X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQg
b2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFs
dWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNh
dGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+
Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZp
Y2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmlu
ZGV4IGQ3ZjBjM2M5NTAyLi4wYzAzNDA2OTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBzdXNwZW5kZWRQYWdlLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1f
d2ViUGFnZUlEKHBhZ2Uud2ViUGFnZUlEKCkpCiAgICAgLCBtX3Byb2Nlc3MoV1RGTW92ZShwcm9j
ZXNzKSkKICAgICAsIG1fbmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCkKICAgICAsIG1faXNTZXJ2
ZXJSZWRpcmVjdChpc1NlcnZlclJlZGlyZWN0KQpAQCAtNjMsMTMgKzY0LDEzIEBAIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJl
ZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3Bl
bmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2Vi
UGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3VzcGVuZGVk
UGFnZTogJXAiLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJ
RCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50
aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAgLy8gSWYgd2Ug
YXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUgV2ViUHJvY2Vzcycg
V2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAvLyBXZWJQYWdlUHJveHk6OmRpZENyZWF0
ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFsaXplIG1fbWFpbkZyYW1l
LiBJbiBzdWNoCkBAIC05MywxMSArOTQsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92
aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgmbV9wcm9jZXNz
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAg
ICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSht
X3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0ZWRMaW5r
U3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3Nl
KCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVV
c2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogCiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYo
KV0gewogICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKCk7CkBAIC0xMDYsNyArMTA3LDcg
QEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1p
bmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNz
RGlkVGVybWluYXRlOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAK
QEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQog
ICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94
eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBT
aW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9tYWlu
RnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVz
dCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOwpAQCAtMTM2LDIwICsxMzcsMjAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gbV9wYWdlLmNy
ZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKTsKICAgICBwYXJhbWV0
ZXJzLmlzUHJvY2Vzc1N3YXAgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZShtX3BhZ2UucGFnZUlEKCksIHBhcmFtZXRlcnMpLCAw
KTsKLSAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVk
TGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBwYXJhbWV0ZXJzKSwg
MCk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2UudmlzaXRl
ZExpbmtTdG9yZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24s
IGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykp
OwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVj
dCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwg
b3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFz
IHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBo
YXBwZW4gaW4gdGhlCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMK
IAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTog
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVt
OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1T
dGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xNzEsOCArMTcyLDgg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1cm4gJml0
ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0
YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBp
dGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1T
dGF0ZXMpKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVt
Lml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS5zdGFydCgpOwogfQogCkBAIC0xODcsNyArMTg4LDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKICAg
ICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMjUsNyArMjI2LDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlv
bklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmln
YXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAi
IHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHVybDsKIApAQCAtMjQ1LDcgKzI0Niw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25J
RCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIg
d2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBB
U1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHsgfTsKIApAQCAtMjYxLDkgKzI2Miw5IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50
b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6
IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRp
ZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50
NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9IHRydWU7
CiAgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGUzZWU2ODdmYTcu
LjViNGM5Y2YyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFsaWRh
dGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90
PiYgbmF2aWdhdGlvbklEID0gV1RGOjpudWxsb3B0KTsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9w
YWdlOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9tYWlu
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5jcHAKaW5kZXggNGFhMzQ0NDkwZDguLjU3N2M0MzQyMzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29uc3QgU3Ry
aW5nJiBkZWJ1Z2dhYmxlVHlwZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dhYmxlVHlw
ZSA9IGRlYnVnZ2FibGVUeXBlOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENv
bW1hbmRzVVJMOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tl
bmRDb21tYW5kc1VSTCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJ
bml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpLCBtX2luc3BlY3Rv
clBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVz
c2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkKQEAgLTE1
Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVu
ZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFn
ZSwgbnVsbHB0cik7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+
d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JCYXNlVVJMKCkpOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIGlm
ICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICB1bnRyYWNrSW5zcGVj
dG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBjNjRkN2VmMTliZC4uNzkyNGU0ZWYzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAt
ODAsNiArODAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4m
IG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogCiBTdXNwZW5kZWRQYWdlUHJv
eHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX3dlYlBhZ2VJRChwYWdlLndlYlBhZ2VJRCgpKQogICAgICwg
bV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAgICAgLCBtX21haW5GcmFtZUlEKG1haW5GcmFt
ZUlEKQogICAgICwgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKQpAQCAtODksMTAgKzkwLDEwIEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6
U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3Vu
dCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cisg
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAgICAgbV9zdXNw
ZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5zaW9uVGltZW91dCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTE0LDcgQEAgU3VzcGVuZGVk
UGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgpOwogCiAgICAgaWYg
KG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZykKLSAgICAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3By
b2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAogICAgIC8vIFdlIGNhbGwgbWF5YmVT
aHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBTdXNwZW5kZWRQYWdlIGlzIGN1cnJl
bnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sCiAgICAgLy8gYW5kIHdl
IHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vzc1Bvb2wgbWV0aG9kcy4KQEAgLTE0
Nyw3ICsxNDgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKICAgICBB
U1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kZWQpOwog
CiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBTdXNwZW5k
ZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNjAsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAg
LSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0g
dHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpwYWdl
RW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTIwMyw3ICsyMDQsNyBAQCB2
b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVu
c2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0cjsK
ICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgaWYgKG1fc3Vz
cGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQogICAgICAg
ICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgi
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBXZWJQYWdlIElEICIs
IG1fd2ViUGFnZUlELnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCA5MTY1M2Nj
NzhlYS4uN2I5NWI2ZWRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5oCkBAIC03NCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdl
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9t
YWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDAyMzg3ZDQzYmNjLi5iNjYyMGRjMWYwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZChQZXJtaXNzaW9uSW5mCiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZCgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTE5MSw3ICsx
OTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZW55
UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgICAgICBtX2RlbmllZFJlcXVlc3Rz
LmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
IH0pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZChyZXF1ZXN0LnVz
ZXJNZWRpYUlEKCksIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQocmVxdWVzdC51c2VyTWVkaWFJRCgpLCB0b1dlYkNv
cmUocmVhc29uKSwgaW52YWxpZENvbnN0cmFpbnQpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKICAgICBVTlVTRURfUEFSQU0oaW52YWxpZENv
bnN0cmFpbnQpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC0tbV9o
YXNQZW5kaW5nQ2FwdHVyZTsKLSAgICB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0sIG1fcGFn
ZS53ZWJQYWdlSUQoKSk7CiAKICAgICBwcm9jZXNzTmV4dFVzZXJNZWRpYVJlcXVlc3RJZk5lZWRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKaW5kZXggMWU5MWFiYjZlZmQuLmI0ODI3NzI5ZDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2
NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lw
ZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRy
ZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xs
ZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwg
Vmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdl
cygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdl
IElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmll
d0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtODYsMTQgKzg2LDE0IEBAIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5KQogICAgIGlmICh3ZWJQYWdlUHJveHkuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgY29ubmVjdFRvUHJvY2VzcygpOwogCi0gICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CisgICAgdmlld0dl
c3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5pZGVudGlmaWVy
KCksIHRoaXMpOwogfQogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNvbnRy
b2xsZXIoKQogewogICAgIHBsYXRmb3JtVGVhcmRvd24oKTsKIAotICAgIHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnNGb3JBbGxQYWdlcygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkucmVtb3ZlKG1fd2ViUGFnZVBy
b3h5LmlkZW50aWZpZXIoKSk7CiAKICAgICBkaXNjb25uZWN0RnJvbVByb2Nlc3MoKTsKIH0KQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
b21Qcm9jZXNzKCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKICAgICBt
X2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gZmFsc2U7CiB9CiAKQEAgLTExMiwxMSArMTEyLDExIEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAgICBpZiAo
bV9pc0Nvbm5lY3RlZFRvUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgp
LCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9pc0Nvbm5lY3RlZFRv
UHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVD
b250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKK1ZpZXdHZXN0dXJlQ29u
dHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gdmlld0dl
c3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlmIChnZXN0
dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCku
ZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmZv
cmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVz
dCA9IHRydWU7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAgIEdlc3R1
cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdlUHJveHku
Zm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRy
b2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC02MTcs
NyArNjE3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVlc3RSZW5kZXJUcmVl
U2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvJiBwcm9jZXNzID0gbV93ZWJQYWdl
UHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFs
UGFnZVByb3h5KCktPnByb2Nlc3MoKSA6IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKTsKICAgICBh
dXRvIHRocmVzaG9sZCA9IG1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5yZW5kZXJUcmVlU2l6ZVRo
cmVzaG9sZCgpOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh0aHJl
c2hvbGQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaAppbmRleCA3Y2Q2ZThmZTA5MS4uMTcxYjViNjg0ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yNyw5ICsyNyw5
IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01v
bm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250
cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgR2Vz
dHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9y
R2VzdHVyZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGlj
IEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVy
ZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1N0b3JlLmNwcAppbmRleCBlYzUzZGQ2YTVkZi4uZDc5ZDdhZDg0NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDIsNiArMTAyLDcgQEAg
dm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGwoKQogCiB2b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hh
cmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKKyAgICAvLyBGSVhNRTogTmVlZHMgdG8gbG9vayB1
cCBXZWJQYWdlUHJveHkgZnJvbSBXZWJQYWdlSUQuCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94
eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKSB7CiAgICAgICAgIGlmICghd2Vi
UGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5k
ZXggYjVhNWM4MjM0ZDguLmM2NWUxNmI5YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAg
ICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQog
CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDgyNzVjZjZlYzk1Li41MzcwMzcxYzRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRl
bUZvcklEKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50CiAgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChpdGVtLT5wYWdlSUQoKSA9PSBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBBU1NFUlQoaXRlbS0+cGFnZUlEKCkgPT0gbV9wYWdlLT5pZGVudGlm
aWVyKCkpOwogICAgIHJldHVybiBpdGVtOwogfQogCkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBX
ZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0ZvcndhcmRMaXN0U3RhdGUg
YmFja0ZvcndhcmRMaXN0U3QKICAgICAvLyBGSVhNRTogRW5hYmxlIHJlc3RvcmluZyByZXNvdXJj
ZURpcmVjdG9yeVVSTC4KICAgICBmb3IgKGF1dG8mIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSA6
IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zKSB7CiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVjdElkZW50
aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPjo6Z2Vu
ZXJhdGUoKSB9OwotICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9wYWdl
LT5wYWdlSUQoKSkpOworICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9w
YWdlLT5pZGVudGlmaWVyKCkpKTsKICAgICB9CiAgICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9y
d2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpiYWNrRm9yd2Fy
ZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OwogICAgIG1fZW50cmllcyA9
IFdURk1vdmUoaXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29t
bWFuZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4uMGZlNmQ4MzQ5ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRD
b21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2Nv
bW1hbmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hN
ZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVy
RWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlJlZG8pOwogfQogCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6cmVhcHBseSgpCiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBseUVkaXRDb21t
YW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1h
bmRJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRp
dENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlVuZG8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGVlMzM3MTA4MTcwLi5kYjIyNGI2MWNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFt
ZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmws
IHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwg
ZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJh
bWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSwgbV9w
YWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmco
KSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRp
bmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUo
bV9mcmFtZUlEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1l
UHJveHk6OmNhblByb3ZpZGVTb3VyY2UoKSBjb25zdApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQg
V2ViRnJhbWVQcm94eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29sbGFw
c2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDAuLjcyMTI1YjBlZTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmNwcApAQCAtNDQsMjUgKzQ0LDI1IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGdWxsCiAgICAgOiBt
X3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBt
X3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCks
ICp0aGlzKTsKIH0KIAogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkoKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICAgICBtX2NsaWVudC5jbG9zZUZ1
bGxTY3JlZW5NYW5hZ2VyKCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53
aWxsRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4oKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2Ny
ZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEVudGVyRnVsbHNjcmVl
bigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpE
aWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIAogICAgIGlmIChtX3Bh
Z2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRp
b25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtNzMsMTMgKzczLDEzIEBAIHZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVs
bHNjcmVlbkNsaWVudCgpLndpbGxFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1
bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSwgbV9w
YWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpk
aWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRF
eGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAgICAg
CiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBp
ZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC04OSwxMiArODksMTIg
QEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAK
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihi
b29sIGFuaW1hdGluZykKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmltYXRpbmdGdWxsU2NyZWVuKGFuaW1hdGluZyksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3Bh
Z2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJl
cXVlc3RFeGl0RnVsbFNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2Ny
ZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTA4LDI3ICsxMDgsMjcgQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBs
ZXRpb24KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzYXZlU2Nyb2xsUG9zaXRp
b24oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVT
Y3JvbGxQb3NpdGlvbigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0aW9u
KCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c2V0RnVsbHNjcmVlbkluc2V0cyhjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYg
aW5zZXRzKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRzKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGluc2V0cyksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9
CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJh
dGlvbihkdXJhdGlvbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihib29sIGhp
ZGRlbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLndl
YlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
ZjkzZmE2NzY4YTIuLmU2MjFhOGZkODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3RvclByb3h5
OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiB7CiAgICAg
aWYgKGluc3BlY3RlZFBhZ2UgJiYgaW5zcGVjdGVkUGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewogICAgICAgICBtX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0ZWRQYWdlOwotICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgfQogfQog
CkBAIC04OSw3ICs4OSw3IEBAIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
dmFsaWRhdGUoKQogewogICAgIGlmIChtX2luc3BlY3RlZFBhZ2UpCi0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwpAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5z
cGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogICAgIGNyZWF0ZUZy
b250ZW5kUGFnZSgpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Tm90aWZ5TmVlZERlYnVnZ2Vy
QnJlYWsoKSwgMCk7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2hvdygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvdygpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OkNsb3NlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnJlc2V0U3RhdGUoKQogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVzZXQoKQogewogICAgIGlm
IChtX2luc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9p
bnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PndlYlBhZ2VJRCgpKTsKICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsKICAgICB9
CiB9CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp1cGRhdGVG
b3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgQVNTRVJU
KGluc3BlY3RlZFBhZ2UpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVkUGFnZTsK
LSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIAogICAg
IGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6VXBkYXRlQ29ubmVjdGlvbigpLCBtX2lu
c3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
cikKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVu
ZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaQogICAgIGlmICgh
bV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9pbnNwZWN0
ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dD
b25zb2xlKCkKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93
Q29uc29sZSgpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d1Jlc291cmNlcygpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jl
c291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2Uo
KTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yODAsMTkgKzI4MCwxOSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBp
ZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldElu
c3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9p
bnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9pbnNwZWN0
ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsK
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRv
bSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9t
KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9p
bnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDksOCArMzA5
LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2li
bGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAg
IHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zNDMsOSArMzQzLDkgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmls
aW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2Zp
bGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6dG9nZ2xlRWxlbWVudFNlbGVjdGlvbigpCkBAIC0zNTUsMTAgKzM1NSwxMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAg
IGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUpIHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50
U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigp
LCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBj
b25uZWN0KCk7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3Rl
ZFBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9CiB9CiAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAgdHJhY2tJbnNw
ZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSwgbV9pbnNwZWN0ZWRQYWdlKTsKIAotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFn
ZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTQxMSw3
ICs0MTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9u
dGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAgIGlmICghbV9pbnNwZWN0b3JQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3Bl
Y3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBt
X2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0FjdGl2ZUZy
b250ZW5kKTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIyLDI2ICs0MjIs
MjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQo
Ym9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVkID0gc2hv
dWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2Fz
dDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0
YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQp
LCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFj
aGVkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAg
ICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdo
dDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
Y2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFj
aGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVk
KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCi0gICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5n
VW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQ
YWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIG1fdW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clRlc3RQYWdlVVJMKCkgOiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7
CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKICAg
ICBTZXRGb3JTY29wZTxib29sPiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwogICAgIG1f
aXNWaXNpYmxlID0gdHJ1ZTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1f
aW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAg
ICAgICAgcGxhdGZvcm1BdHRhY2goKTsKQEAgLTQ4NCw4ICs0ODQsOCBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICB1bnRyYWNrSW5z
cGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlz
aWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
bnNwZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBpZiAobV9pc0FjdGl2ZUZyb250ZW5k
KSB7CiAgICAgICAgIG1faXNBY3RpdmVGcm9udGVuZCA9IGZhbHNlOwpAQCAtNTQ4LDcgKzU0OCw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9v
bCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2Ug
JiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0
dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1Vu
YXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwog
CiAgICAgcGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2FuQXR0YWNoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIyZTlhNWFlZWQ2
Li5jMTQyMTQwODQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0yNTYsOCArMjU2LDggQEAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBhc3Nl
cnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24o
KSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdFX0NIRUNL
X0JBU0UoY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJv
Y2VzcywgdXJsKSwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQogCi0jZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNo
YW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIl
cCAtIFtwYWdlUHJveHlJRD0lbGx1LCB3ZWJQYWdlSUQ9JWxsdSwgUElEPSVpXSBXZWJQYWdlUHJv
eHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQor
I2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwg
IiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0lbGx1LCBQSUQ9JWldIFdlYlBhZ2VQ
cm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18p
CiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQg
aW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsK
QEAgLTM5Myw3ICszOTMsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmCiB9CiAKIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikK
LSAgICA6IG1fcGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgIDogbV9pZGVu
dGlmaWVyKElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX3dlYlBhZ2VJRChQYWdlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdl
Q2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQog
ICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xp
ZW50PigpKQpAQCAtNDQxLDcgKzQ0Miw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAjZW5k
aWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3Ry
dWN0b3I6Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkp
CiAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsK
QEAgLTQ3MCw3ICs0NzEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCk7CiAK
LSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3Zl
cnJpZGUocHJlZmVyZW5jZXNTdG9yZSgpLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZUtleSgpKSk7CkBAIC00OTIsOSArNDkzLDkg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKLSAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdl
KG1fcGFnZUlEKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1faWRl
bnRpZmllcikgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGZvciAoV2ViUGFn
ZVByb3h5KiBwYWdlIDogbV9wcm9jZXNzLT5wYWdlcygpKQogICAgICAgICBBU1NFUlQocGFnZSAh
PSB0aGlzKTsKQEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiAgICAgbV91aUNs
aWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1fd2ViUGFnZUlEKTsKIAogICAgIHNl
dENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5lZWRzRm9u
dEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAgLTYzNSw3
ICs2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGlu
Z0NsaWVudChoYXNDbGllbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6
Ok9ic2VydmVyPiYmIG9ic2VydmVyKQpAQCAtNzIzLDEwICs3MjQsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5n
UHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiIFBSSXU2NCk7CiAKICAgICBtX3By
b2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0
YVN0b3JlOjpZZXMpOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgYXV0byYgcHJvY2Vz
c1Bvb2wgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCk7CiAKQEAgLTczOCw3ICs3MzksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpC
ZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMp
OwogCiAgICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKElzUHJvY2Vzc1N3YXA6Ok5vKTsK
IH0KQEAgLTc3OCw3ICs3NzksNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQ
b3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBt
YWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCks
ICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1
c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBz
dXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVz
IiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5n
U3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9t
SXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQg
Zm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0
aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVy
IGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBk
byBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAtNzk2LDcgKzc5Nyw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYm
IGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6Iik7CiAKICAg
ICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9
IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODExLDcgKzgxMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2Vzcywgc3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpC
ZWdpbnNVc2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7
CiAKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoSXNQcm9jZXNzU3dhcDo6WWVzKTsK
IH0KQEAgLTg4MSwxMCArODgyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NG
b3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNs
b3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9z
ZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODkzLDcgKzg5
NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7CiAKICAg
ICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1
cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxv
YWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC05MDYsNyArOTA3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKICAgICB9CiAKICAgICAvLyBXZSBh
bGxvdyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5nIGEgV2ViUHJvY2VzcyB0aGF0J3MgYmVl
biBraWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5k
ZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51
bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4
ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxs
b3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTkxNCwxMCArOTE1LDEwIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJv
Y2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRo
SXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRl
bTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC05MjksNyArOTMwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogICAgIGF1dG8gbmF2
aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24o
aXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIEZyYW1lTG9hZFR5cGU6Oklu
ZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIGl0ZW0u
aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhl
ZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxv
cHQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTYwLDkgKzk2MSw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAgICAgc2V0RHJhd2luZ0FyZWEo
cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdBcmVhUHJveHkobV9wcm9jZXNzKSk7CiAgICAgQVNT
RVJUKG1fZHJhd2luZ0FyZWEpOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nl
c3MsICptX2RyYXdpbmdBcmVhKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBjcmVhdGlvblBhcmFtZXRlcnMo
bV9wcm9jZXNzLCAqbV9kcmF3aW5nQXJlYSkpLCAwKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkVmlz
aXRlZExpbmtTdG9yZVVzZXIodmlzaXRlZExpbmtTdG9yZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcih2aXNpdGVkTGlua1N0b3JlKCksIG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCkBAIC05NzAsNyArOTcx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xv
c2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAt
MTAyMSw5ICsxMDIyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBt
X3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9j
ZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlE
KTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsKIAogICAgIC8vIE51
bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgpAQCAtMTA0MywxNCAr
MTA0NCwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZToiKTsKIAog
ICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIg
Z29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBw
ZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3VkZGVuVGVybWlu
YXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC0xMTE4LDcgKzExMTksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwog
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRS
ZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVu
Y2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTExMzIs
NyArMTEzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lz
Q2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246Iik7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAKQEAgLTExNTQsMTYgKzExNTUsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAg
IGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBt
X3BhZ2VJRCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVl
c3QobG9hZFBhcmFtZXRlcnMpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTExNzIsNyArMTE3Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAg
aWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xMTgyLDcgKzExODMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVz
b3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5
VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwNyw3ICsxMjA4LDcg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2Fk
UGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xMjE1LDEwICsx
MjE2LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiIp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQoIW1faXND
bG9zZWQpOwogCkBAIC0xMjUzLDE5ICsxMjU0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIHBy
b2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwotICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwg
bV9wYWdlSUQpOworICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQYWdlSUQpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUwiKTsK
IAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGlu
ZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBz
dGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQg
dGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4K
ICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JG
YWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVy
KSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjk2LDE2ICsxMjk3LDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCgqdGhpcywgdW5yZWFjaGFibGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJu
YXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2Vi
QXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdl
YkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzIzLDE2ICsxMzI0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQ
YWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9p
bnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0MiwyMCArMTM0MywyMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQ
cm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBz
Y3JlZW5Qb2ludCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInN0b3BMb2FkaW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fd2ViUGFnZUlEKTsKICAgICBpZiAo
bV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgp
OwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0xMzY1LDcgKzEzNjYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0
aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
bG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM5MCw3ICsxMzkxLDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6
OlJlbG9hZE9wdGlvbj4gb3AKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJDb3JlOjpSZWxv
YWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZpZ2F0aW9uLT5z
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSks
IG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCkBAIC0xNDQ2LDcgKzE0NDcsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRl
bSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tG
b3J3YXJkSXRlbToiKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFj
a0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0NTksNyArMTQ2MCw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5n
QVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0o
bmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQo
KSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpu
dWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE0NjcsMTQgKzE0Njgs
MTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9z
aXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQp
CkBAIC0xNTM2LDcgKzE1MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9t
YXRpb24oY29udHJvbGxlZCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0xNTYxLDcgKzE1
NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGlu
ZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU5Nyw3ICsxNTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRh
cmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBT
dHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3dlYlBhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdl
dChwYWdlVGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9
CiAKQEAgLTE2MDgsNyArMTYwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBjb2xvcikKIAogICAgIG1fYmFja2dyb3VuZENv
bG9yID0gY29sb3I7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSwg
bV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEJhY2tncm91bmRDb2xvcihjb2xvciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC0xNjI0LDkg
KzE2MjUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNv
bnRlbnRJbnNldCkKICAgICBNYWNoU2VuZFJpZ2h0IGZlbmNlID0gbV9kcmF3aW5nQXJlYS0+Y3Jl
YXRlRmVuY2UoKTsKIAogICAgIGF1dG8gZmVuY2VBdHRhY2htZW50ID0gSVBDOjpBdHRhY2htZW50
KGZlbmNlLmxlYWtTZW5kUmlnaHQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0RmVuY2Vk
KGNvbnRlbnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGNvbnRl
bnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSwgbV93ZWJQYWdlSUQpOwogI2Vsc2UKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldChjb250ZW50
SW5zZXQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0KSwgbV93ZWJQYWdlSUQpOwogI2VuZGlm
CiB9CiAKQEAgLTE2MzgsNyArMTYzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVbmRlcmxh
eUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsK
IAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xv
cihjb2xvciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxs
U3RhcnRMaXZlUmVzaXplKCkKQEAgLTE2NDcsMTQgKzE2NDgsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xv
c2VPdmVybGF5ZWRWaWV3cygpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxFbmRMaXZlUmVzaXplKCkK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3
V2lsbEVuZExpdmVSZXNpemUoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBSZWdpb24mIHJlZ2lvbikKQEAgLTE3MTIsNyAr
MTcxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlI
YXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHksIEFjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQogewotICAgIExPR19XSVRIX1NUUkVBTShBY3Rp
dml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgYWN0
aXZpdHlTdGF0ZURpZENoYW5nZSAtIG1heUhhdmVDaGFuZ2VkICIgPDwgbWF5SGF2ZUNoYW5nZWQp
OworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQ
cm94eSAiIDw8IGlkZW50aWZpZXIoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlI
YXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2VkKTsKIAogICAgIG1fcG90ZW50aWFsbHlDaGFu
Z2VkQWN0aXZpdHlTdGF0ZUZsYWdzLmFkZChtYXlIYXZlQ2hhbmdlZCk7CiAgICAgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdl
V2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hyb25vdXNSZXBseTsKQEAgLTE3NDgs
NyArMTc0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3coKQogICAg
IExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSA9IHBhZ2VDbGllbnQoKS52aWV3TGF5
ZXJIb3N0aW5nTW9kZSgpOwogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUgIT0gbGF5ZXJIb3N0
aW5nTW9kZSkgewogICAgICAgICBtX2xheWVySG9zdGluZ01vZGUgPSBsYXllckhvc3RpbmdNb2Rl
OwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9z
dGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGlu
Z01vZGUpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfQogfQogCkBAIC0xNzYxLDcgKzE3NjIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPR19XSVRIX1NU
UkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgp
IDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlIC0gcG90ZW50aWFsbHlDaGFuZ2VkQWN0
aXZpdHlTdGF0ZUZsYWdzICIgPDwgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxh
Z3MpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBh
Z2VQcm94eSAiIDw8IGlkZW50aWZpZXIoKSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSAtIHBvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAiIDw8IG1fcG90ZW50aWFs
bHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKTsKIAogICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5
IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxlICYg
b2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0
aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMTc3NCw3ICsx
Nzc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgp
CiAgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gcHJldmlvdXNBY3Rpdml0eVN0
YXRlOwogCiAgICAgaWYgKGNoYW5nZWQpCi0gICAgICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0
eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgZGlzcGF0
Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlOiBzdGF0ZSBjaGFuZ2VkIGZyb20gIiA8PCBwcmV2aW91c0Fj
dGl2aXR5U3RhdGUgPDwgIiB0byAiIDw8IG1fYWN0aXZpdHlTdGF0ZSk7CisgICAgICAgIExPR19X
SVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IGlk
ZW50aWZpZXIoKSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdl
ZCBmcm9tICIgPDwgcHJldmlvdXNBY3Rpdml0eVN0YXRlIDw8ICIgdG8gIiA8PCBtX2FjdGl2aXR5
U3RhdGUpOwogCiAgICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUpICYmIGlzVmlld1dpbmRvd0FjdGl2ZSgpKQogICAgICAgICB1cGRhdGVDdXJyZW50TW9kaWZp
ZXJTdGF0ZSgpOwpAQCAtMTc5Nyw3ICsxNzk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgYXV0byBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
PSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPyB0YWtlTmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCgpIDogc3RhdGljX2Nhc3Q8QWN0aXZpdHlTdGF0ZUNoYW5nZUlE
PihBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKTsKIAogICAgIGlmIChjaGFuZ2VkIHx8
IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
IHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1f
YWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0
eVN0YXRlQ2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpLCBtX3dl
YlBhZ2VJRCk7CiAKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmNsZWFy
KCk7CiAKQEAgLTE4OTksNyArMTkwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllckhvc3Rp
bmdNb2RlRGlkQ2hhbmdlKCkKICAgICBtX2xheWVySG9zdGluZ01vZGUgPSBsYXllckhvc3RpbmdN
b2RlOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdN
b2RlKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCkBAIC0xOTQxLDIxICsx
OTQyLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJk
LCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zCiAgICAgfQogCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNL
ZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMo
Zm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclNlbGVjdGlvbigp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlbGVjdGlvbigpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlbGVj
dGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlU2Vs
ZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNl
bGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMTk2Niw3ICsxOTY3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVsKCkKQEAgLTE5NzQsNyAr
MTk3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVs
KCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExl
dmVsKCkKQEAgLTE5ODIsNyArMTk4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxp
c3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExl
dmVsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRlY3JlYXNlTGlzdExldmVsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNoYW5nZUxpc3RUeXBlKCkKQEAgLTE5OTAsNyArMTk5MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VMaXN0VHlwZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNo
YW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0
aW9uKQpAQCAtMTk5OCw3ICsxOTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKQpAQCAt
MjAyMiw3ICsyMDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE5lZWRzRm9udEF0dHJpYnV0
ZXMoYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgIG1fbmVlZHNGb250QXR0cmlidXRlcyA9
IG5lZWRzRm9udEF0dHJpYnV0ZXM7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0ZvbnRBdHRy
aWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0ZXMpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNGb250QXR0cmlidXRlcyhuZWVkc0Zv
bnRBdHRyaWJ1dGVzKSwgbV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6bWFp
bnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oKSBjb25zdApAQCAtMjA0NSw3ICsyMDQ2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1
bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0QWxsKCkKQEAgLTIwNTMsNyArMjA1NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZWxlY3RBbGwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RB
bGwoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VsZWN0QWxsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1
dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFy
Z3VtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTIwNjQsNyArMjA2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBh
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVj
dXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudCkKQEAgLTIwNzcsNyArMjA3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRl
RWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAg
ICAgaWYgKGNvbW1hbmROYW1lID09IGlnbm9yZVNwZWxsaW5nQ29tbWFuZE5hbWUpCiAgICAgICAg
ICsrbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFt
ZSwgYXJndW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVz
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC0yMDg4LDcgKzIwODksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFy
dChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2so
Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKQEAgLTIxMDksNyArMjExMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFZGl0
YWJsZShib29sIGVkaXRhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRF
ZGl0YWJsZShlZGl0YWJsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEVkaXRhYmxlKGVkaXRhYmxlKSwgbV93ZWJQYWdlSUQpOwogfQogICAg
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhU3RyZWFtQ2FwdHVyZU11dGVkKGJvb2wgbXV0
ZWQpCkBAIC0yMTc0LDkgKzIxNzUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogCiAgICAg
QVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICBXZWJTZWxlY3Rpb25EYXRhIHNl
bGVjdGlvbigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJh
Z0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0Rh
dGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxh
Z3MoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0
aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdEYXRhLmZsYWdzKCkpLCBtX3dlYlBhZ2VJ
RCk7CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNp
b25zRm9yVXBsb2FkKSwgbV93ZWJQYWdlSUQpOwogI2VuZGlmCiB9CiAKQEAgLTIyMDYsNyArMjIw
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRp
b24pLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
cmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pLCBtX3dl
YlBhZ2VJRCk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0pOwogfQogCkBAIC0yMjE4LDEzICsy
MjE5LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29s
IGhhbmRsZWQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnREcmFnKCkKIHsKICAgICBpZiAo
aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAg
ICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0NhbmNlbGxlZCgpCiB7CiAgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RHJhZ0NhbmNlbGxlZCgpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCkBAIC0yMzIzLDcgKzIzMjQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICB9CiAK
ICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAo
cXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9t
b3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV93ZWJQYWdlSUQpOwogfQog
CiAjaWYgTUVSR0VfV0hFRUxfRVZFTlRTCkBAIC0yNDMyLDcgKzI0MzMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2VuZFdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKAogICAgICAgICBNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpX
aGVlbEV2ZW50KAotICAgICAgICAgICAgbV9wYWdlSUQsCisgICAgICAgICAgICBtX3dlYlBhZ2VJ
RCwKICAgICAgICAgICAgIGV2ZW50LAogICAgICAgICAgICAgc2hvdWxkVXNlSW1wbGljaXRSdWJi
ZXJCYW5kQ29udHJvbCgpID8gIW1fYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpIDogcnViYmVy
QmFuZHNBdExlZnQoKSwKICAgICAgICAgICAgIHNob3VsZFVzZUltcGxpY2l0UnViYmVyQmFuZENv
bnRyb2woKSA/ICFtX2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZEl0ZW0oKSA6IHJ1YmJlckJhbmRz
QXRSaWdodCgpLApAQCAtMjQ4Myw3ICsyNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAg
ICBpZiAobV9rZXlFdmVudFF1ZXVlLnNpemUoKSA9PSAxKSB7IC8vIE90aGVyd2lzZSwgc2VudCBm
cm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIuCiAgICAgICAgIExPRyhLZXlIYW5k
bGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gaGFuZGxlS2V5Ym9hcmRFdmVu
dCIpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50
KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OktleUV2ZW50KGV2ZW50KSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIH0KIApAQCAtMjY1
Niw3ICsyNjU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUdlc3R1cmVFdmVudChjb25z
dCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgIGVsc2UKICAgICAgICAgcmVzcG9u
c2l2ZW5lc3NUaW1lci5zdGFydCgpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpF
dmVudERpc3BhdGNoZXI6Okdlc3R1cmVFdmVudChtX3BhZ2VJRCwgZXZlbnQpLCAwKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6R2VzdHVyZUV2ZW50KG1f
d2ViUGFnZUlELCBldmVudCksIDApOwogfQogI2VuZGlmCiAKQEAgLTI2ODksNyArMjY5MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50U3luY2hyb25vdXNseShOYXRpdmVX
ZWJUb3VjaEV2ZW50JiBldmVudCkKIAogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCByZXBseVJl
Y2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVu
dFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6OlJlcGx5KGhh
bmRsZWQpLCBtX3BhZ2VJRCwgMV9zLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpGb3JjZURpc3BhdGNo
V2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5KTsKKyAgICBib29s
IHJlcGx5UmVjZWl2ZWQgPSBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
b3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6
UmVwbHkoaGFuZGxlZCksIG1fd2ViUGFnZUlELCAxX3MsIElQQzo6U2VuZFN5bmNPcHRpb246OkZv
cmNlRGlzcGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkp
OwogICAgIC8vIElmIHRoZSBzeW5jIHJlcXVlc3QgaGFzIHRpbWVkIG91dCwgd2Ugc2hvdWxkIGNv
bnNpZGVyIHRoZSBldmVudCBoYW5kbGVkLiBUaGUgV2ViIFByb2Nlc3MgaXMgdG9vIGJ1c3kgdG8g
YW5zd2VyIGFueSBxdWVzdGlvbnMsIHNvIHRoZSBkZWZhdWx0IGFjdGlvbiBpcyBhbHNvIGxpa2Vs
eSB0byBoYXZlIGlzc3Vlcy4KICAgICBpZiAoIXJlcGx5UmVjZWl2ZWQpCiAgICAgICAgIGhhbmRs
ZWQgPSB0cnVlOwpAQCAtMjcwOCw3ICsyNzA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0
UG90ZW50aWFsVGFwU2VjdXJpdHlPcmlnaW4oKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXNldFBvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luKCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc2V0UG90ZW50aWFsVGFwU2VjdXJp
dHlPcmlnaW4oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxl
VG91Y2hFdmVudEFzeW5jaHJvbm91c2x5KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50
KQpAQCAtMjcyMCw3ICsyNzIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZl
bnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmUKICAgICBpZiAo
dG91Y2hFdmVudHNUcmFja2luZ1R5cGUgPT0gVHJhY2tpbmdUeXBlOjpOb3RUcmFja2luZykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3Bh
dGNoZXI6OlRvdWNoRXZlbnQobV9wYWdlSUQsIGV2ZW50KSwgMCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OlRvdWNoRXZlbnQobV93ZWJQYWdlSUQsIGV2
ZW50KSwgMCk7CiAKICAgICBpZiAoZXZlbnQuYWxsVG91Y2hQb2ludHNBcmVSZWxlYXNlZCgpKSB7
CiAgICAgICAgIG1fdG91Y2hBbmRQb2ludGVyRXZlbnRUcmFja2luZy5yZXNldCgpOwpAQCAtMjc0
NSw3ICsyNzQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFtX2lzUGFnZVN1c3BlbmRlZCkg
ewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQpOwogICAgICAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVu
dCksIG1fd2ViUGFnZUlEKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV90b3VjaEV2ZW50
UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5kbGVkID0gZmFs
c2U7CkBAIC0yNzY4LDEyICsyNzY5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogI2lmIEVOQUJMRShQT0lO
VEVSX0VWRU5UUykKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxQb2ludGVyKFdlYkNvcmU6OlBv
aW50ZXJJRCBwb2ludGVySWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkb2N1bWVudFBvaW50
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRl
cihwb2ludGVySWQsIGRvY3VtZW50UG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQ
b2ludCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoV2l0aElk
ZW50aWZpZXJXYXNSZW1vdmVkKFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVyV2Fz
UmVtb3ZlZChwb2ludGVySWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChwb2ludGVySWQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMjc4Miw3ICsyNzgzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nyb2xsQnko
ZGlyZWN0aW9uLCBncmFudWxhcml0eSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2li
bGVBcmVhKCkKQEAgLTI3OTAsNyArMjc5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJT
ZWxlY3Rpb25JblZpc2libGVBcmVhKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNl
bmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CkBAIC0yOTMz
LDcgKzI5MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1l
bnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1
cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJv
dmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21t
aXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25h
bFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25h
bFBhZ2U6IG5ld1BJRCA9ICVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKIAogICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1l
SURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZy
YW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yOTQ5LDE0ICsyOTUwLDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnCiAKICAgICBwcm9jZXNzRGlkVGVybWluYXRlKFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApOwogCi0gICAgbV9wcm9jZXNzLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2VJRCk7CiAgICAgYXV0byogbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRp
b24obV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25JRCgpKTsKICAgICBib29sIGRpZFN1c3Bl
bmRQcmV2aW91c1BhZ2UgPSBuYXZpZ2F0aW9uID8gc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZSgqbmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcywgbV9wcm92aXNpb25h
bFBhZ2UtPnByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5n
VW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKSA6IGZhbHNlOwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09
ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlBy
b2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5k
c1VzaW5nRGF0YVN0b3JlOjpZZXMpOwogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJl
IGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3Nl
IGl0LgogICAgIGlmICghZGlkU3VzcGVuZFByZXZpb3VzUGFnZSkKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CisgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV93ZWJQYWdlSUQpOwog
CiAgICAgc3dhcFRvV2ViUHJvY2VzcyhtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLCBtX3By
b3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdpbmdBcmVhKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5tYWlu
RnJhbWUoKSk7CiAKQEAgLTI5NzMsNyArMjk3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9j
ZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9j
ZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJ
RCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51
aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5h
dmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAog
ICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewpAQCAtMjk5OCw3ICsyOTk5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIHMKICAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCkgJiYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2Fy
ZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6Olll
cykpIHsKICAgICAgICAgLy8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0
b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJv
dXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKICAgICAgICAgLy8g
aXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCi0gICAgICAgIG5ld1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1f
YmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSksIG1fcGFnZUlEKTsK
KyAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhp
c3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0
ZW1TdGF0ZSgpKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXb3JrIG91
dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRj
CkBAIC0zMDQ4LDcgKzMwNDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0
cmluZyYmIHVzZXJBZ2VudCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNl
ckFnZW50KG1fdXNlckFnZW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VXNlckFnZW50KG1fdXNlckFnZW50KSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lKQpAQCAtMzA4NSw3ICszMDg2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogICAg
IG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCkBAIC0zMDk1
LDcgKzMwOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCkKIAogICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1ZTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygpIGNv
bnN0CkBAIC0zMTEyLDcgKzMxMTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVGV4
dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSkKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
dXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
U2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9v
bCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZpbHRlcikgY29uc3QKQEAgLTMxMzQsNyAr
MzEzNSw3IEBAIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1
bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNl
c3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJv
bVNlc3Npb25TdGF0ZToiKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNp
emUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTMx
NTAsNyArMzE1MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVz
dG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3NpCiAgICAgICAgIGxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+
cmVzdG9yZUZyb21TdGF0ZShXVEZNb3ZlKHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0
ZSkpOwotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNl
c3Npb24obV9iYWNrRm9yd2FyZExpc3QtPml0ZW1TdGF0ZXMoKSksIG1fcGFnZUlEKTsKKyAgICAg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFj
a0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICAgICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgICAgICBt
X3BhZ2VMb2FkU3RhdGUuc2V0Q2FuR29CYWNrKHRyYW5zYWN0aW9uLCBtX2JhY2tGb3J3YXJkTGlz
dC0+YmFja0l0ZW0oKSk7CkBAIC0zMTk4LDcgKzMxOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VGV4dFpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJ
RCk7IAorICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21G
YWN0b3IobV90ZXh0Wm9vbUZhY3RvciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQpAQCAtMzIxMyw3ICsz
MjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29t
RmFjdG9yKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3Rv
cihtX3BhZ2Vab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQpAQCAtMzIy
OSw3ICszMjMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFoKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9y
LCBtX3RleHRab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9vbUZhY3Rv
ciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fd2ViUGFnZUlEKTsKIH0KIAogZG91YmxlIFdlYlBhZ2VQ
cm94eTo6cGFnZVpvb21GYWN0b3IoKSBjb25zdApAQCAtMzI1OSw3ICszMjYwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmln
aW4pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3Jp
Z2luKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2NhbGUsIGNvbnN0IElu
dFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcykKQEAgLTMyNzEsNyArMzI3Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2NhbGUs
IGNvbnN0IEludFBvaW50JiBjZW50CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNj
YWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcyks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxl
UGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcyksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlVmlldyhkb3VibGUgc2Nh
bGUpCkBAIC0zMjgzLDcgKzMyODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRv
dWJsZSBzY2FsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNj
YWxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2NhbGVWaWV3KHNjYWxlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCkBAIC0zMzAy
LDcgKzMzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGZsb2F0IFdlYlBhZ2VQcm94eTo6ZGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdApAQCAtMzM0MSw3ICszMzQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGlu
Z3NEaWRDaGFuZ2UoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKQEAgLTMzNTgsNyArMzM1OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChmaXhlZCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZp
eGVkKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlv
dXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0zMzcxLDcgKzMzNzIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRM
YXlvdXRTaXplKHNpemUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRh
bFNjcm9sbGVyKQpAQCAtMzM4NCw3ICszMzg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEFs
d2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2MK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NIb3Jpem9udGFs
U2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6b250
YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihi
b29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikKQEAgLTMzOTcsNyArMzM5OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYm9vbCBhbHdh
eXNTaG93c1ZlcnRpY2FsU2Nyb2xsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRB
bHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWls
ZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzKQpA
QCAtMzQxMCw3ICszNDExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4KICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVz
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlz
dGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3Vw
cHJlc3NBbmltYXRpb25zKQpAQCAtMzQyMyw3ICszNDI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0aW9ucykK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBw
cmVzc0FuaW1hdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpy
dWJiZXJCYW5kc0F0TGVmdCgpIGNvbnN0CkBAIC0zNDc1LDcgKzM0NzYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5hYmxlVmVydGlj
YWxSdWJiZXJCYW5kaQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVW
ZXJ0aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlVmVy
dGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyksIG1fd2ViUGFn
ZUlEKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojp2ZXJ0aWNhbFJ1YmJlckJhbmRpbmdJ
c0VuYWJsZWQoKSBjb25zdApAQCAtMzQ5Miw3ICszNDkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1
YmJlckIKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlSG9yaXpvbnRh
bFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9u
dGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyksIG1fd2ViUGFn
ZUlEKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojpob3Jpem9udGFsUnViYmVyQmFuZGlu
Z0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNTA5LDcgKzM1MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJvb2wgYmFja2dyb3VuZEV4dGVuZHNC
ZXlvbmRQYQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kRXh0
ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4dGVu
ZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSksIG1fd2ViUGFnZUlEKTsK
IH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSgpIGNv
bnN0CkBAIC0zNTI2LDcgKzM1MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlv
bk1vZGUoV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtb2RlKQogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTW9kZShtb2RlKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25CZWhh
dmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCkBAIC0zNTM4LDcgKzM1Mzks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhi
b29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0
aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgp
CkBAIC0zNTUwLDcgKzM1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChk
b3VibGUgcGFnZUxlbmd0aCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFn
ZUxlbmd0aChwYWdlTGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0d2VlblBhZ2VzKGRvdWJsZSBnYXApCkBA
IC0zNTYyLDcgKzM1NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0d2VlblBhZ2Vz
KGRvdWJsZSBnYXApCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEdhcEJldHdl
ZW5QYWdlcyhnYXApLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlk
RW5hYmxlZCkKQEAgLTM1NzQsNyArMzU3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQogICAgIAogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5l
R3JpZEVuYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VTY2FsZUZhY3RvckRpZENo
YW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCkBAIC0zNTk5LDMyICszNjAwLDMyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25z
LCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRT
dHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlv
bnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaElu
ZGV4KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RGaW5kTWF0Y2gobWF0
Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6aW5kaWNhdGVGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5kaWNhdGVGaW5kTWF0Y2go
bWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkluZGljYXRlRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRVSSgpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCkBAIC0z
NjMyLDcgKzM2MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhN
YXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZl
Y3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRU
ZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMzY0Myw3ICszNjQ0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMs
IGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwg
c2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VNYXRjaGVzKFdURk1vdmUobWF0Y2hJbmRpY2Vz
KSwgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vz
c2FyeSgpCkBAIC0zNjY4LDE0ICszNjY5LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAg
ICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdv
cmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFpbkZyYW1lKCktPmZyYW1l
SUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2Vy
R2VzdHVyZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKQEAgLTM2ODYsNyArMzY4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgfQog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQpAQCAtMzY5OCw3ICszNjk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNv
dXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGMK
ICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzcxMCw3
ICszNzExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWRE
ZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRD
b250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKQEAgLTM3MjEsNyArMzcyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEF0
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmli
dXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMzczNCw3ICszNzM1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJv
ZmlsZShjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzQ2LDcg
KzM3NDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQog
CiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzc1OCw3ICszNzU5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEo
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC0zNzcwLDcgKzM3NzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
ZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzgxLDcgKzM3ODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYgogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQpAQCAtMzc5Miw3ICszNzkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2
b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21G
cmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMzgwMyw3ICszODA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICB9
CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygp
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291
cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQpAQCAtMzgxNCw3ICszODE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdl
YkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkK
ICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2
ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYm
IGNhbGxiYWNrKQpAQCAtMzg0OCw3ICszODQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNl
UmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2sp
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7IAorICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHN0YXRpYyBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmludGluZ1NlbmRPcHRpb25zKGJvb2wgaXNQZXJm
b3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pCkBAIC0zODc0LDcgKzM4NzUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBj
aGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJpZGVzIGdldCByZW1vdmVkLgogCiAg
ICAgLy8gUHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRhdGVkIGR1cmluZyBzeW5jaHJvbm91cyBw
cmludGluZyB0byBtYWtlICJwcmludCBiYWNrZ3JvdW5kcyIgcHJlZmVyZW5jZSB3b3JrIHdoZW4g
dG9nZ2xlZCBmcm9tIGEgcHJpbnQgZGlhbG9nIGNoZWNrYm94LgotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9y
ZSgpKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Qcmlu
dE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UHJl
ZmVyZW5jZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV93ZWJQYWdlSUQsIHByaW50
aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlEKQpAQCAtNDAwNCw4ICs0MDA1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgIGlm
IChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRp
b24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAgICBM
T0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5h
dmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9u
SUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQo
KSk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2Vz
cyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBS
SXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELnRvVUludDY0
KCksIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRv
IHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTQwNTgs
NyArNDA1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50CiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1l
SUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJ
RC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCwgZnJh
bWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKQEAgLTQwODcsNyArNDA4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChS
ZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVs
YXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50
b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQu
dG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00MTAwLDcgKzQxMDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjbwog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDE0
Nyw4ICs0MTQ4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdp
bGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9t
YWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIExPRyhMb2FkaW5n
LCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQg
JWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHBy
b3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJv
ci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MjI2LDkgKzQy
MjcsOSBAQCBzdGF0aWMgT3B0aW9uU2V0PENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6
OkZsYWc+IGNoZWNrSWZOYXZpZ2F0aW9uQ29udGFpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykg
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0
aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKKyAgICBM
T0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0
TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJk
KSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVzIiwgbV9iYWNr
Rm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZy
YW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MjQ2LDcgKzQyNDcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZwogICAgICAgICAgICAgUmVnaXN0cmFibGVEb21haW4g
Y3VycmVudERvbWFpbiB7IGN1cnJlbnRSZXF1ZXN0LnVybCgpIH07CiAgICAgICAgICAgICBVUkwg
cmVxdWVzdGVyVVJMIHsgVVJMKCksIHJlcXVlc3Rlck9yaWdpbi50b1N0cmluZygpIH07CiAgICAg
ICAgICAgICBpZiAoIWN1cnJlbnREb21haW4ubWF0Y2hlcyhyZXF1ZXN0ZXJVUkwpKQotICAgICAg
ICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlcihtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBSZWdpc3Ry
YWJsZURvbWFpbiB7IHJlcXVlc3RlclVSTCB9LCBjdXJyZW50RG9tYWluLCBuYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKG1fd2Vic2l0ZURh
dGFTdG9yZS0+c2Vzc2lvbklEKCksIFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdGVyVVJMIH0s
IGN1cnJlbnREb21haW4sIG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIG1fd2ViUGFnZUlEKTsKICAg
ICAgICAgfQogI2VuZGlmCiAgICAgfQpAQCAtNDM0MCw3ICs0MzQxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWcKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAg
ICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzY0
LDcgKzQzNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAl
cCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2
aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCwg
ZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ0MDksNyArNDQxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBj
b2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwg
ZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZEZhaWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMs
IGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDQ1MSw3ICs0NDUyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQo
KSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00NjM3LDcgKzQ2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogICAgIE1FU1NB
R0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNp
c2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlS
ZWYoKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJn
cy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4p
LCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9y
aWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELApAQCAtNDkwOCw3ICs0OTA5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJv
d3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5k
ZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0g
KGF1dG8uLi4gYXJncykgewotICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJn
cy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFy
Z3MuLi4pLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUo
c2VuZGVyKSk7CkBAIC00OTU3LDcgKzQ5NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdX
YXJuaW5nKTsKIAogICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0g
KGF1dG8uLi4gYXJncykgewotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3Mu
Li4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4u
LiksIG1fd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDk5NCw3ICs0OTk1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxTdWJtaXRGb3JtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUlkZW50
aWZpZXIgc291cmMKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywgc291cmNlRnJhbWUpOwog
CiAgICAgbV9mb3JtQ2xpZW50LT53aWxsU3VibWl0Rm9ybSgqdGhpcywgKmZyYW1lLCAqc291cmNl
RnJhbWUsIHRleHRGaWVsZFZhbHVlcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0oKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVXaWxsU3VibWl0Rm9ybShmcmFtZUlELCBs
aXN0ZW5lcklEKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwgbGlzdGVuZXJJRCksIG1f
d2ViUGFnZUlEKTsKICAgICB9KTsKIH0KIApAQCAtNTAxMCw3ICs1MDExLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRp
b25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNo
YXJlZDoiKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTUwMzAsNyArNTAzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiBmcmFtZUlEID0gJSIg
UFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTA1Nyw3ICs1MDU4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdDoiKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTUxMDAsNyArNTEwMSw2IEBAIHN0YXRpYyB2b2lkIHRyeVNPQXV0aG9yaXph
dGlvbihSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlCiAj
aWYgSEFWRShBUFBfU1NPKQogICAgIHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNvQXV0aG9yaXph
dGlvbkNvb3JkaW5hdG9yKCkudHJ5QXV0aG9yaXplKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
IHBhZ2UsIFdURk1vdmUobmV3UGFnZUNhbGxiYWNrKSwgV1RGTW92ZSh1aUNsaWVudENhbGxiYWNr
KSk7CiAjZWxzZQotICAgIEFTU0VSVF9VTlVTRUQocGFnZSwgcGFnZS5wYWdlSUQoKSk7CiAgICAg
dWlDbGllbnRDYWxsYmFjayhXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKG5ld1Bh
Z2VDYWxsYmFjaykpOwogI2VuZGlmCiB9CkBAIC01MTIwLDcgKzUxMjAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsCiAKICAgICAgICAgbmV3UGFnZS0+c2V0T3BlbmVkQnlET00oKTsKIAotICAg
ICAgICByZXBseShuZXdQYWdlLT5wYWdlSUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJz
KG1fcHJvY2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVhKCkpKTsKKyAgICAgICAgcmVwbHkobmV3
UGFnZS0+d2ViUGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3Ms
ICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CiAKICAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRT
dXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNBcmVF
cXVhbChVUkwoeyB9LCBtYWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKIApAQCAtNTQ1MSw3
ICs1NDUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXQKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
aG93U2hhcmVTaGVldChjb25zdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzaGFyZURhdGEsIFNo
YXJlU2hlZXRDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSAoYm9vbCBhY2Nlc3MpIHsKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNz
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlU2hhcmVTaGVldChhY2Nlc3MsIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiAgICAgfTsKICAgICAKICAgICBwYWdlQ2xpZW50KCkuc2hvd1NoYXJlU2hl
ZXQoc2hhcmVEYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01NDgzLDcgKzU0
ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVkaWFWb2x1bWUoZmxvYXQgdm9sdW1lKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1l
KSwgbV9wYWdlSUQpOyAgICAKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldE1lZGlhVm9sdW1lKHZvbHVtZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBz
dGF0ZSkKQEAgLTU0OTksNyArNTQ5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCiAgICAgICAgIFVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5tdXRlQ2FwdHVyZU1lZGlhU3RyZWFt
c0V4Y2VwdEluKCp0aGlzKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSwgbV93ZWJQYWdlSUQpOwogICAg
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUsIEFjdGl2
aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEgfSk7CiB9CiAKQEAgLTU1MjEsNyArNTUyMSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0dXJlKCkKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlhQ2FwdHVyZSgpLCBtX3dlYlBhZ2VJRCk7
CiAjZW5kaWYKIH0KIApAQCAtNTUzMCw3ICs1NTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BBbGxNZWRpYVBsYXliYWNrKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Rv
cEFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJhY2soKSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTU0Miw3
ICs1NTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2so
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Vz
cGVuZEFsbE1lZGlhUGxheWJhY2soKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCkBAIC01NTU0LDcgKzU1NTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQbGF5YmFj
aygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKQEAgLTU1
NjMsNyArNTU2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlh
RXZlbnRUeXBlIGV2ZW50VHlwZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVu
dChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCkBAIC01NTcxLDcgKzU1NzEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVt
ZSwgdWludDY0X3QgZWxlbWVudElEKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIGVsZW1lbnRJRCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFFbGVt
ZW50KHZvbHVtZSwgZWxlbWVudElEKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTU1
ODUsNyArNTU4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1heVN0YXJ0TWVkaWEpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFX
aGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3dubG9hZCkK
QEAgLTU2MzIsNyArNTYzMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigpCkBAIC01NjQxLDcg
KzU2NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tl
cigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtNTY3NSw3ICs1Njc1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93biA9IG51bGxwdHI7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENsb3NlU3Vn
Z2VzdGlvbnMoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2Vs
ZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCkBAIC01NjgzLDcgKzU2ODMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0ZWRPcHRpb24pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERh
dGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRP
cHRpb24pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtNTczNiw3ICs1NzM2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhi
b29sIGFsbG93cykKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWxsb3dzTWVkaWFEb2N1bWVudElu
bGluZVBsYXliYWNrID0gYWxsb3dzOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYWxsb3dzKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWxsb3dz
TWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93cyksIG1fd2ViUGFnZUlEKTsKIH0KICNl
bmRpZgogCkBAIC01NzY0LDcgKzU3NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERP
TVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBjbwogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYmIGl0ZW1TdGF0ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpjcmVhdGUoV1RGTW92ZShpdGVtU3RhdGUpLCBwYWdlSUQoKSk7CisgICAgYXV0byBpdGVt
ID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoaXRlbVN0YXRlKSwgaWRl
bnRpZmllcigpKTsKICAgICBpdGVtLT5zZXRSZXNvdXJjZURpcmVjdG9yeVVSTChjdXJyZW50UmVz
b3VyY2VEaXJlY3RvcnlVUkwoKSk7CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmFkZEl0ZW0oV1RG
TW92ZShpdGVtKSk7CiB9CkBAIC01OTE4LDE3ICs1OTE4LDE3IEBAIElQQzo6Q29ubmVjdGlvbiog
V2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90
IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOworICAgIHJldHVybiBtX3dlYlBhZ2VJRC50b1VJ
bnQ2NCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51
KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZv
ckFjdGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFj
dGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVBy
b3h5KiwgaW50MzJfdCBpbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Rm9yQWN0aXZlUG9wdXBN
ZW51KGluZGV4KSwgbV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQcm9j
ZXNzaW5nS2V5Ym9hcmRFdmVudHMoKSBjb25zdApAQCAtNTk2MywxMyArNTk2MywxMyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZU5hbWUsIEFQSTo6TwogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LCBt
YWtlIHN1cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFsIHByb2Nlc3MgaWYgdGhlIGNsaWVudCBhc2tz
IHRvIHBvc3QgYSBtZXNzYWdlIHRvIGl0cyBpbmplY3RlZCBidW5kbGUgYmVmb3JlIGRvaW5nIGEg
bG9hZC4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZSht
ZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
bWVzc2FnZUJvZHkpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNl
ckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdl
dCgpKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFn
ZVByb3h5OjpmYWlsZWRUb1Nob3dQb3B1cE1lbnUoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RmFpbGVkVG9TaG93UG9wdXBNZW51KCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVu
dSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtNjAzNiw3ICs2MDM2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhJiYg
Y29udGV4dE1lbnVDb250ZXh0RGEKICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93KCk7CiAK
ICAgICAvLyBObyBtYXR0ZXIgdGhlIHJlc3VsdCBvZiBpbnRlcm5hbFNob3dDb250ZXh0TWVudSwg
YWx3YXlzIG5vdGlmeSB0aGUgV2ViUHJvY2VzcyB0aGF0IHRoZSBtZW51IGlzIGhpZGRlbiBzbyBp
dCBzdGFydHMgaGFuZGxpbmcgbW91c2UgZXZlbnRzIGFnYWluLgotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVIaWRkZW4oKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVIaWRkZW4oKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKQEAgLTYxMTQsMTIgKzYx
MTQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0g
Q29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyB8fCBpdGVtLmFjdGlvbigpID09IENvbnRl
eHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKQogICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJ
Z25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVt
RnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudUtleUV2ZW50KCkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51Rm9yS2V5RXZlbnQoKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVG
b3JLZXlFdmVudCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAKQEAgLTYxMzUsMTAgKzYxMzUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVVUkxzLnNpemUoKTsgKytpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVVSTHNbaV0sIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxl
c0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNG
cm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV93ZWJQYWdlSUQpOwogI2Vu
ZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5
U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFS
ZWZlcmVuY2UoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29u
KGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJl
bmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSksIG1fd2ViUGFnZUlEKTsKIAogICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYxNjMsMTAgKzYxNjMsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlVVJMcykKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMpLCBtX3dlYlBhZ2VJRCk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcyksIG1fd2ViUGFnZUlEKTsKIAogICAgIG1f
b3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJl
c3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYxNzcsNyArNjE3Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fd2Vi
UGFnZUlEKTsKICAgICAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRl
KCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTg1LDcg
KzYxODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQpA
QCAtNjE5Myw3ICs2MTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9X
b3JkKGNvbnN0IFN0cmluZyYgd29yZCkKICAgICBpZiAod29yZC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdl
U3BlbGxpbmdUb1dvcmQod29yZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmIGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQpAQCAt
NjIxMiw3ICs2MjEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZUVkaXRDb21tYW5kKFdl
YkVkaXRDb21tYW5kUHJveHkmIGNvbW1hbmQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQuY29tbWFuZElEKCkpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29t
bWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV93ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBh
Z2VQcm94eTo6Y2FuVW5kbygpCkBAIC02MzAxLDEyICs2MzAxLDEyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFRl
eHRDaGVja2luCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hDaGVja2luZ1RleHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
RmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVzdWx0KSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJl
cXVlc3RJRCwgcmVzdWx0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbENoZWNraW5nVGV4dChyZXF1ZXN0
SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSwgbV93ZWJQYWdlSUQpOwogfQogLy8gT3Ro
ZXIKIApAQCAtNjQzNSw3ICs2NDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVF
dmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgICAgIGJvb2wgY2Fu
UHJvY2Vzc01vcmVLZXlFdmVudHMgPSAhbV9rZXlFdmVudFF1ZXVlLmlzRW1wdHkoKTsKICAgICAg
ICAgaWYgKGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzKSB7CiAgICAgICAgICAgICBMT0coS2V5SGFu
ZGxpbmcsICIgVUkgcHJvY2Vzczogc2VudCBrZXlFdmVudCBmcm9tIGRpZFJlY2VpdmVFdmVudCIp
OwotICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVu
dChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZp
cnN0KCkpLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgY2FsbCB0
byBkb25lV2l0aEtleUV2ZW50IG1heSBjbG9zZSB0aGlzIFdlYlBhZ2UuCkBAIC02Nzk5LDcgKzY3
OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVTZXRMYXJnZXN0RnJhbWVDaGFuZ2VkKGNv
bnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY4MTEsNyArNjgxMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZToiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkwNiw3ICs2OTA2LDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHJlYXNvbikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0
ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZTogd2ViUElEID0g
JWksIHJlYXNvbiA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24p
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZTogcmVhc29uID0gJWQiLCByZWFzb24pOwogCiAgICAgYm9vbCBoYW5kbGVkQnlD
bGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9sb2FkZXJDbGllbnQpCkBAIC03MzI5LDcgKzczMjks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRDbGVhcigpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBh
ZERhdGFzLCBib29sIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzLCBz
aG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRhcywgc2hvdWxk
TWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2VuZGlmCkBAIC03NjM0
LDcgKzc2MzQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6d2lsbEhhbmRsZUhvcml6b250YWxTY3Jv
bGxFdmVudHMoKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlV2Vic2l0ZVBvbGlj
aWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNpZXMod2Vic2l0
ZVBvbGljaWVzKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcyksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
Q29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKQEAgLTc2NDQsNyArNzY0NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92
aWRlcihjb25zdCBTdHJpbmcmIHN1CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZFJl
bW92ZWRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJk
SXRlbShpdGVtSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkK
QEAgLTc2NTcsNyArNzY1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChi
b29sIGNhblJ1bk1vZGFsKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5S
dW5Nb2RhbChtX2NhblJ1bk1vZGFsKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNhblJ1bk1vZGFsKCkKQEAgLTc2NzEsNyAr
NzY3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblByaW50aW5nKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpCZWdpblByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbyksIG1f
cGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luUHJpbnRp
bmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2Vu
ZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQpAQCAtNzY4MCw3ICs3NjgwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmVuZFByaW50aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0luUHJp
bnRpbmdNb2RlID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFbmRQcmludGluZygpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpFbmRQcmludGluZygpLCBtX3dlYlBhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyht
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZm8sIFJlZjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CkBAIC03NjkzLDcgKzc2OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbwogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHBy
aW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwog
fQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NzA2LDcgKzc3MDYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmlu
dEluZm8mIHByaW50SQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFn
ZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwgY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAt
NzcxOCw3ICs3NzE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW4KICAgICAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBj
b3VudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJm
b3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmly
c3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogI2VsaWYgUExBVEZPUk0oR1RL
KQogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgUmVmPFByaW50RmluaXNoZWRDYWxs
YmFjaz4mJiBjYWxsYmFjaykKQEAgLTc3MzEsNyArNzczMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJ
bmZvJiBwCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAg
ICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5n
TW9kZSA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFn
ZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CiB9CiAjZW5kaWYKIApAQCAtNzc3Niw3ICs3Nzc2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldE1pbmltdW1TaXplRm9yQXV0b0xheW91dChjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlv
dXQoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE1pbmltdW1TaXplRm9yQXV0b0xheW91dChzaXplKSwgbV93ZWJQYWdlSUQpOwogICAg
IG1fZHJhd2luZ0FyZWEtPm1pbmltdW1TaXplRm9yQXV0b0xheW91dERpZENoYW5nZSgpOwogCiAj
aWYgVVNFKEFQUEtJVCkKQEAgLTc3OTUsNyArNzc5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wgc2hvdWxkRXhwYW5kKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5k
VG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWln
aHQoc2hvdWxkRXhwYW5kKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9y
dFNpemUpCkBAIC03ODA4LDcgKzc4MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpegogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHModmlld3Bv
cnRTaXplKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExB
Q0VNRU5UKQpAQCAtNzg3OSw3ICs3ODc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZSwgY29uc3QgU3RyaW5nJgogdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KQogewogICAgIGlmICghaXNDbG9zZWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1
bHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV93ZWJQYWdlSUQpOwog
fQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCkBAIC03OTIwLDcgKzc5MjAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rp
b25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fcGFn
ZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRp
b24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgcmVwbGFj
ZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29t
cG9zaXRpb25TdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIGludDY0X3Qgc2VsZWN0aW9u
TGVuZ3RoKQpAQCAtNzkyOCw3ICs3OTI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1D
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHMKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRp
b25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAg
LTc5MzYsNyArNzkzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21w
b3NpdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBA
IC03OTUzLDcgKzc5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmluZ0Jl
aGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAgIG1fc2Nyb2xsUGlubmlu
Z0JlaGF2aW9yID0gcGlubmluZzsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxl
KE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUp
CkBAIC03OTcxLDcgKzc5NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9s
bGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdAogICAgICAgICBz
Y3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5
bGU+KHNjcm9sbGJhclN0eWxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSksIG1fcGFnZUlEKTsKKyAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlKSwgbV93ZWJQYWdlSUQpOwogfQogCiAj
aWYgRU5BQkxFKFdFQl9DUllQVE8pCkBAIC04MDE2LDcgKzgwMTYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJ
bmRleCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlk
ZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRl
cyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCkBAIC04MDI0LDcgKzgw
MjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1
dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKQEAgLTgwMzIs
NyArODAzMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRD
aGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VG
b250KFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSksIG1fd2ViUGFnZUlE
KTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODA0MCw3ICs4MDQwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRBc3luYyh0ZXh0KSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRU
ZXh0T3B0aW9ucyYmIG9wdGlvbnMpCkBAIC04MDQ4LDcgKzgwNDgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1Jh
bmdlJiByZXBsYQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3lu
Yyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4
dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6Omhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTgwNTcsNyArODA1Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpIYXNNYXJrZWRUZXh0KCksIFdURk1vdmUoY2FsbGJhY2spLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0
aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKQEAgLTgwNjgsNyArODA2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJr
ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAg
ICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtl
ZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdU
Rjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQpAQCAtODA3OSw3ICs4MDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwg
Q2FsbGIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV1RGOjpGdW5j
dGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKQEAgLTgwOTAsNyArODA5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAg
fQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5j
KHBvaW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpA
QCAtODEwMSw3ICs4MTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgV1QKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3lu
YyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNl
bGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpCkBAIC04
MTEyLDcgKzgxMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBv
c2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50
UmFuZ2UpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJl
cGxhY2VtZW50UmFuZ2UpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b25maXJtQ29tcG9zaXRpb25Bc3luYygpCkBAIC04MTIwLDcgKzgxMjAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCksIG1fcGFnZUlEKTsKKyAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFu
Y2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtODE0NSw3ICs4MTQ1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUg
Yml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRp
b25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxi
YWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9u
R2VzdHVyZURpZEJlZ2luKCkKQEAgLTgzMDMsNyArODMwMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKFJlZjxOb3dQbGF5aW5nSW5mb0Nh
bGxiYWNrCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAg
ICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZv
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpub3dQbGF5aW5nSW5mb0NhbGxi
YWNrKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBw
bGljYXRpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVs
YXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCkBAIC04MzQ2LDIyICs4MzQ2LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRv
cGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxBCiAjaWYg
UExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25I
aXRUZXN0QXRMb2NhdGlvbihGbG9hdFBvaW50IHBvaW50KQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0
aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkVXBk
YXRlKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0
ZUFjdGlvbkRpZFVwZGF0ZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENh
bmNlbCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRp
YXRlQWN0aW9uRGlkQ29tcGxldGUoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJl
c3VsdERhdGEmIHJlc3VsdCwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCkBAIC04Mzc2LDcgKzgzNzYsNyBAQCBOU09iamVjdCAqV2ViUGFnZVBy
b3h5OjppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChS
ZWZQdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0IGFjY2VwdGVkQ2FuZGlkYXRlKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0
ZWRDYW5kaWRhdGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlk
YXRlKCkKQEAgLTgzOTQsMTcgKzgzOTQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZVN5
c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFu
Y2UpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVz
dGluZyhpbnQgaGVpZ2h0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWln
aHRGb3JUZXN0aW5nKGhlaWdodCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZv
clRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtODQzMCw3ICs4NDMwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgbmV3U2kKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyhib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZERpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50cyhzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91
bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRzKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0
b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC04NDc5LDcgKzg0
NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGxheWJhY2tUYXJnZXQodWludDY0X3QgY29u
dGV4dElkLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRD
b250ZXh0KCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250
ZXh0KCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgYXZh
aWxhYmxlKQpAQCAtODQ4Nyw3ICs4NDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm8KICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlE
aWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENo
YW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCBzaG91bGRQbGF5KQpAQCAtODQ5NSw3ICs4NDk1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCBzaG91bGQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAK
QEAgLTg1MjEsNyArODUyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZlbnRU
ZXN0VHJpZ2dlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldo
ZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2sp
CkBAIC04NTQ0LDcgKzg1NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2NhbGVW
aWV3VG9GaXREb2N1bWVudChib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNo
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNo
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQpAQCAtODU2NCw3ICs4NTY0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29y
ZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29s
KWNhbGxiYWNrRnVuY3Rpb247CiAgICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0g
ZGVjaXNpb24gPyBPcHRpb25hbENhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSkpIDogT3B0aW9uYWxDYWxsYmFja0lEKCk7CiAKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9u
LCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVyKSwgbV9wYWdlSUQpOworICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lv
bkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIp
LCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTg1ODMsNyArODU4Myw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sIGRpc2FibGVkKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZChkaXNhYmxlZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSwgbV93ZWJQYWdlSUQp
OwogfQogCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94
eTo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpCkBAIC04NTk2LDcgKzg1OTYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihXZWJDb3Jl
OjpVc2VySW50ZXJmYWNlTGF5b3V0RAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVZhbGlkYXRpb25NZXNzYWdlKCkK
QEAgLTg2NDMsMTQgKzg2NDMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEFsbG93UG9pbnRl
ckxvY2soKQogICAgIENHRGlzcGxheUhpZGVDdXJzb3IoQ0dNYWluRGlzcGxheUlEKCkpOwogICAg
IENHQXNzb2NpYXRlTW91c2VBbmRNb3VzZUN1cnNvclBvc2l0aW9uKGZhbHNlKTsKICNlbmRpZgot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQWNxdWlyZVBvaW50ZXJM
b2NrKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRGVueVBvaW50ZXJMb2NrKCkKIHsKICAgICBBU1NFUlQobV9pc1BvaW50
ZXJMb2NrUGVuZGluZyAmJiAhbV9pc1BvaW50ZXJMb2NrZWQpOwogICAgIG1faXNQb2ludGVyTG9j
a1BlbmRpbmcgPSBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQpA
QCAtODY2MSwxMiArODY2MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJV
bmxvY2soKQogICAgICAgICBDR0Rpc3BsYXlTaG93Q3Vyc29yKENHTWFpbkRpc3BsYXlJRCgpKTsK
ICNlbmRpZgogICAgICAgICBtX3VpQ2xpZW50LT5kaWRMb3NlUG9pbnRlckxvY2sodGhpcyk7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJM
b2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSwgbV93ZWJQYWdlSUQpOwogICAgIH0KIAogICAgIGlm
IChtX2lzUG9pbnRlckxvY2tQZW5kaW5nKSB7CiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQ
b2ludGVyTG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
LCBtX3dlYlBhZ2VJRCk7CiAgICAgfQogCiAgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsK
QEAgLTg2ODcsNyArODY4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPiYmIGhhbmRsCiAgICAgYXV0byBp
ZGVudGlmaWVyUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5hZGQoaWRl
bnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChpZGVudGlmaWVy
UmVzdWx0LCBpZGVudGlmaWVyUmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaWRlbnRpZmll
ciwgY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50
aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
V2ViVVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQpAQCAtODczNSw3ICs4NzM1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZh
bGVudFJlc291cmNlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2FzTG9hZGVk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpLCBtX3BhZ2VJRCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXYXNMb2FkZWRXaXRoRGF0YVRyYW5z
ZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgogCkBA
IC04NzU0LDcgKzg3NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWZmZWN0aXZlQXBwZWFyYW5j
ZURpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFw
cGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2Uo
KSwgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwoKSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODc5Myw3ICs4NzkzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBG
dW5jdGlvbjwKIAogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZpZXIgPSBhdHRhY2htZW50LT5p
ZGVudGlmaWVyKCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0
YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNw
bGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCks
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50
LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVu
dC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICBtX2F0dGFj
aG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChhdHRhY2htZW50SWRlbnRpZmllciwg
V1RGTW92ZShhdHRhY2htZW50KSk7CiB9CiAKQEAgLTg4MDksNyArODgwOSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1l
bnQmIGF0dGFjaG1lbnQsCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpkYXRhIH07CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXko
KSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1v
dmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRh
Y2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0
YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0
YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBAIC04OTY5
LDcgKzg5NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChG
dW5jdGlvbjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OgogCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlm
CiAKQEAgLTkwMzMsNyArOTAzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBvcnRQYWdlTG9h
ZFJlc3VsdChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldERlZmVyc0xvYWRpbmdGb3JUZXN0aW5nKGJvb2wgZGVmZXJzTG9hZGluZykKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJz
TG9hZGluZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZyksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmdldElzVmlld1Zpc2libGUoYm9vbCYgcmVzdWx0KQpAQCAtOTA0
NSw3ICs5MDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1cnJlbnRNb2RpZmllclN0
YXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NF
UlZFUl9CTE9DS0lORykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIG1vZGlmaWVy
cyA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudFN0YXRlT2ZNb2RpZmllcktleXMoKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2Rp
ZmllclN0YXRlKG1vZGlmaWVycyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycyksIG1f
d2ViUGFnZUlEKTsKICNlbmRpZgogfQogCkBAIC05MDg3LDE5ICs5MDg3LDE5IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbihX
ZWJQcm9jZXNzUHJveHkmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzaW11bGF0ZURldmljZU9yaWVu
dGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3Jp
ZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNo
YW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZXRlY3REYXRhSW5BbGxGcmFt
ZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlw
ZXMpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpE
ZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5cGVzKSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3RlZExpbmtzKCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtOTI2OSw3
ICs5MjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdl
YkNvcmU6OkZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGEKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRz
SW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJ
bnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC05Mjc5LDcgKzkyNzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENv
bXBsZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNUZXh0SW5wdXRD
b250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKIH0KIAogTG9nZ2VyJiBXZWJQYWdlUHJveHk6Omxv
Z2dlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDU4N2FlYTg1
Y2FiLi5jOWY4MTFmZTViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgpAQCAtMzkyLDcgKzM5MywxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Q7CiAKLSAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHVzaW5nIElk
ZW50aWZpZXIgPSBXZWJQYWdlUHJveHlJZGVudGlmaWVyOworCisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KIAog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBAIC0yMTEzLDcgKzIxMTcs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNlUmVxdWVzdChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJy
ZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7CisgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2Vha1B0cjxQYWdlQ2xpZW50
PiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mY2EwYmIz
MmZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gV2ViUGFnZVBy
b3h5SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV2ViUGFnZVByb3h5SWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8V2ViUGFnZVByb3h5SWRlbnRpZmllclR5cGU+OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNDU5YTlkM2E0YTguLjZi
ODIyNmQ2M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0zMDksNiArMzA5LDkgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIG5vdGlmeVRoaXNX
ZWJQcm9jZXNzUG9vbFdhc0NyZWF0ZWQoKTsKIAogICAgIHVwZGF0ZU1heFN1c3BlbmRlZFBhZ2VD
b3VudCgpOworICAgIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4gVGhpcyBpcyBtZXJlbHkg
dXNlZCB0byBtYWtlIHRoZSBXZWJQYWdlUHJveHkgJiB0aGUgV2ViUGFnZSBpZGVudGlmaWVycyBk
aWZmZXJlbnQsIHRvIGhlbHAgY2F0Y2ggYnVncy4KKyAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7IFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOyBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAogV2ViUHJvY2Vzc1Bvb2w6On5X
ZWJQcm9jZXNzUG9vbCgpCkBAIC0xMzA3LDkgKzEzMTAsOSBAQCBib29sIFdlYlByb2Nlc3NQb29s
OjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUm
IHN0bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFT
dG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChk
YXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9y
LT52YWx1ZS5hZGQocGFnZUlEKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlE
c01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50
aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRh
U3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzI3LDcgKzEzMzAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJzaQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSkKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGFmMTZjZWY4ZDI4
Li4wODZlMzg2YTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CkBAIC0yMDksOCArMjA5LDggQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3Jl
YXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwog
Ci0gICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNp
dGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsK
KyAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAg
ICBib29sIGhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBj
b25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtNzgzLDcg
Kzc4Myw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAK
LSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsK
ICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzVGVybWluYXRpb25UaW1lcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzYTM2MjQ4ZmVhNi4u
NjRiMzFmNzU5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMzUxLDExICszNTEsMjIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNodXREb3du
KCkKICAgICBtX3Byb2Nlc3NQb29sLT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIAotV2Vi
UGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlE
KTsKIH0KIAorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQoreworICAgIC8vIEZJWE1FOiBEbyBiZXR0ZXIuCisg
ICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpLnZhbHVlcygpKSB7CisgICAgICAg
IGlmIChwYWdlLT53ZWJQYWdlSUQoKSA9PSB3ZWJQYWdlSUQpCisgICAgICAgICAgICByZXR1cm4g
cGFnZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBh
Z2VTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQoKQogewpAQCAtMzkzLDE2ICs0MDQs
MTYgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEkKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFk
ZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5nRGF0YVN0
b3JlIGJlZ2luc1VzaW5nRGF0YVN0b3JlKQogewotICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRh
aW5zKHdlYlBhZ2UucGFnZUlEKCkpKTsKLSAgICBBU1NFUlQoIWdsb2JhbFBhZ2VNYXAoKS5jb250
YWlucyh3ZWJQYWdlLnBhZ2VJRCgpKSk7CisgICAgQVNTRVJUKCFtX3BhZ2VNYXAuY29udGFpbnMo
d2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKKyAgICBBU1NFUlQoIWdsb2JhbFBhZ2VNYXAoKS5jb250
YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5Q
cm9jZXNzQ2FjaGUpOwogICAgIEFTU0VSVCghbV93ZWJzaXRlRGF0YVN0b3JlIHx8IG1fd2Vic2l0
ZURhdGFTdG9yZSA9PSAmd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAgaWYgKGJl
Z2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpCi0gICAgICAg
IG1fcHJvY2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLnBh
Z2VJRCgpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vzc1Bv
b2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwg
d2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCi0gICAgbV9wYWdlTWFwLnNldCh3ZWJQYWdl
LnBhZ2VJRCgpLCAmd2ViUGFnZSk7Ci0gICAgZ2xvYmFsUGFnZU1hcCgpLnNldCh3ZWJQYWdlLnBh
Z2VJRCgpLCAmd2ViUGFnZSk7CisgICAgbV9wYWdlTWFwLnNldCh3ZWJQYWdlLmlkZW50aWZpZXIo
KSwgJndlYlBhZ2UpOworICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQod2ViUGFnZS5pZGVudGlmaWVy
KCksICZ3ZWJQYWdlKTsKIAogICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKTsK
ICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwpAQCAtNDIxLDE1ICs0
MzIsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om1hcmtJc05vTG9uZ2VySW5QcmV3YXJtZWRQ
b29sKCkKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5
JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW5kc1VzaW5nRGF0YVN0b3JlKQogewotICAg
IGF1dG8qIHJlbW92ZWRQYWdlID0gbV9wYWdlTWFwLnRha2Uod2ViUGFnZS5wYWdlSUQoKSk7Cisg
ICAgYXV0byogcmVtb3ZlZFBhZ2UgPSBtX3BhZ2VNYXAudGFrZSh3ZWJQYWdlLmlkZW50aWZpZXIo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUGFnZSwgcmVtb3ZlZFBhZ2UgPT0gJndlYlBh
Z2UpOwotICAgIHJlbW92ZWRQYWdlID0gZ2xvYmFsUGFnZU1hcCgpLnRha2Uod2ViUGFnZS5wYWdl
SUQoKSk7CisgICAgcmVtb3ZlZFBhZ2UgPSBnbG9iYWxQYWdlTWFwKCkudGFrZSh3ZWJQYWdlLmlk
ZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUGFnZSwgcmVtb3ZlZFBhZ2Ug
PT0gJndlYlBhZ2UpOwogCiAgICAgaWYgKGVuZHNVc2luZ0RhdGFTdG9yZSA9PSBFbmRzVXNpbmdE
YXRhU3RvcmU6OlllcykKLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZSh3ZWJQYWdlLnBhZ2VJRCgpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7
CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUod2Vi
UGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAotICAgIHJl
bW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKHdlYlBhZ2UudmlzaXRlZExpbmtTdG9yZSgpLCB3ZWJQ
YWdlLnBhZ2VJRCgpKTsKKyAgICByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcih3ZWJQYWdlLnZp
c2l0ZWRMaW5rU3RvcmUoKSwgd2ViUGFnZS5pZGVudGlmaWVyKCkpOwogICAgIHVwZGF0ZVJlZ2lz
dHJhdGlvbldpdGhEYXRhU3RvcmUoKTsKIAogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZl
bmVzc1RpbWVyKCk7CkBAIC00MzcsMTAgKzQ0OCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEVuZHNVc2luZ0RhdGFTdG9yZSBl
bgogICAgIG1heWJlU2h1dERvd24oKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZp
c2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlu
a1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvJiB1c2VycyA9IG1fdmlzaXRlZExpbmtT
dG9yZXNXaXRoVXNlcnMuZW5zdXJlKCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7Ci0gICAgICAgIHJl
dHVybiBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPiB7IH07CisgICAgICAgIHJldHVybiBIYXNoU2V0
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAK
ICAgICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDUwLDcgKzQ2MSw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJv
Y2VzcygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlu
a1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9y
ZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgYXV0byBpdCA9IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRo
VXNlcnMuZmluZCgmdmlzaXRlZExpbmtTdG9yZSk7CiAgICAgaWYgKGl0ID09IG1fdmlzaXRlZExp
bmtTdG9yZXNXaXRoVXNlcnMuZW5kKCkpCkBAIC01NjMsMTAgKzU3NCwxMCBAQCBib29sIFdlYlBy
b2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotYm9v
bCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChQYWdlSWRlbnRpZmll
ciBwYWdlSUQpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdl
V2l0aElEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGZvciAo
YXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7Ci0gICAgICAgIGlm
IChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCisgICAgICAgIGlm
IChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5pZGVudGlmaWVyKCkgPT0gcGFnZUlEKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTU4MCw3ICs1
OTEsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6aXNBbGxvd2VkVG9VcGRhdGVCYWNrRm9yd2Fy
ZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaQogICAgIGlmIChoYXNQcm92aXNpb25hbFBh
Z2VXaXRoSUQoaXRlbS5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGl0ZW0uc3VzcGVuZGVkUGFnZSgpICYmIGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wYWdlKCkucGFn
ZUlEKCkgPT0gaXRlbS5wYWdlSUQoKSAmJiAmaXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3Mo
KSA9PSB0aGlzKQorICAgIGlmIChpdGVtLnN1c3BlbmRlZFBhZ2UoKSAmJiBpdGVtLnN1c3BlbmRl
ZFBhZ2UoKS0+cGFnZSgpLmlkZW50aWZpZXIoKSA9PSBpdGVtLnBhZ2VJRCgpICYmICZpdGVtLnN1
c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09IHRoaXMpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1Myw3ICsxMTY0LDcgQEAgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJOjpPYmpl
Y3QqIG9iamUKICAgICAgICAgICAgICAgICByZXR1cm4gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRl
QXV0b2NvbnZlcnRpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViRnJhbWVQcm94eSY+KG9iamVjdCku
ZnJhbWVJRCgpKTsKIAogICAgICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gQVBJOjpQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVy
dGluZyhzdGF0aWNfY2FzdDxjb25zdCBXZWJQYWdlUHJveHkmPihvYmplY3QpLnBhZ2VJRCgpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQVBJOjpQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVy
dGluZyhzdGF0aWNfY2FzdDxjb25zdCBXZWJQYWdlUHJveHkmPihvYmplY3QpLndlYlBhZ2VJRCgp
KTsKIAogICAgICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZUdyb3VwOgogICAg
ICAgICAgICAgICAgIHJldHVybiBBUEk6OlBhZ2VHcm91cEhhbmRsZTo6Y3JlYXRlKFdlYlBhZ2VH
cm91cERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViUGFnZUdyb3VwJj4ob2JqZWN0KS5kYXRhKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYmYzY2Qy
YWQxM2YuLjQ3YTI0M2Q5NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlc3BvbnNpdmVuZXNzVGltZXIu
aCIKICNpbmNsdWRlICJWaXNpYmxlV2ViUGFnZUNvdW50ZXIuaCIKICNpbmNsdWRlICJXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmg+CkBAIC05OSw3ICsxMDAsNyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0Nh
Y2hpbmcgeyBObywgWWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
UmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJQYWdl
UHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNlckluaXRpYXRlZEFjdGlvbk1hcDsK
IAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAtMTMxLDYgKzEzMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAg
ICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvcklkZW50aWZpZXIoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UoV2Vi
UGFnZVByb3h5SWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCkBAIC0x
NTQsOCArMTU2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRDcmVhdGVXZWJQYWdlSW5Qcm9j
ZXNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgYWRkVmlzaXRlZExpbmtT
dG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihW
aXNpdGVkTGlua1N0b3JlJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CisgICAgdm9pZCByZW1v
dmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViUGFnZVByb3h5SWRl
bnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYp
OwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0zNTEsNyArMzUzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VC
YXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0
aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGlzTG9jYWxseVJlYWNoYWJs
ZSk7CiAKLSAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcikgY29uc3Q7CisgICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViUGFn
ZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tG
b3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVn
aW5zCkBAIC00NDYsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFs
UGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25N
YXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0
b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9y
ZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKICAgICBI
YXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0
aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuY3BwCmluZGV4IDdkNTc1YTQwNGIwLi41YTZjYzk1ZDBmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3Mu
YWRkKHRhc2tJZGVudGlmaWVyLCBXZWJVUkxTY2hlbWVUYXNrOjpjcmVhdGUoKnRoaXMsIHBhZ2Us
IHByb2Nlc3MsIHRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBh
dXRvIHBhZ2VFbnRyeSA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmFkZChwYWdlLnBhZ2VJRCgp
LCBIYXNoU2V0PHVpbnQ2NF90PigpKTsKKyAgICBhdXRvIHBhZ2VFbnRyeSA9IG1fdGFza3NCeVBh
Z2VJZGVudGlmaWVyLmFkZChwYWdlLmlkZW50aWZpZXIoKSwgSGFzaFNldDx1aW50NjRfdD4oKSk7
CiAgICAgQVNTRVJUKCFwYWdlRW50cnkuaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHRhc2tJZGVu
dGlmaWVyKSk7CiAgICAgcGFnZUVudHJ5Lml0ZXJhdG9yLT52YWx1ZS5hZGQodGFza0lkZW50aWZp
ZXIpOwogCkBAIC03MCw3ICs3MCw3IEBAIFdlYlByb2Nlc3NQcm94eSogV2ViVVJMU2NoZW1lSGFu
ZGxlcjo6cHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVyKHVpbnQ2NF90IHRhc2tJZGVuCiAKIHZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RvcEFsbFRhc2tzRm9yUGFnZShXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV90
YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChwYWdlLnBhZ2VJRCgpKTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChwYWdlLmlkZW50aWZpZXIoKSk7CiAg
ICAgaWYgKGl0ZXJhdG9yID09IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpz
dG9wVGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKQogICAg
IGl0ZXJhdG9yLT52YWx1ZS0+c3RvcCgpOwogICAgIHBsYXRmb3JtU3RvcFRhc2socGFnZSwgaXRl
cmF0b3ItPnZhbHVlKTsKIAotICAgIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChwYWdlLnBhZ2VJRCgp
LCB0YXNrSWRlbnRpZmllcik7CisgICAgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKHBhZ2UuaWRlbnRp
ZmllcigpLCB0YXNrSWRlbnRpZmllcik7CiAgICAgbV90YXNrcy5yZW1vdmUoaXRlcmF0b3IpOwog
fQogCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp0YXNrQ29t
cGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1UYXNrQ29tcGxldGVk
KHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFn
ZU1hcChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdGFz
a3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZUlEKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDA4ZjhmNWJhNDIzLi5kNThjN2U1NjczMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAt
NjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRh
c2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2
b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lEKTsKKyAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSUQpOwogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
c0ZvclRhc2tJZGVudGlmaWVyKHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2NF90IG1faWRl
bnRpZmllcjsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hlbWVUYXNrPj4g
bV90YXNrczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0PHVp
bnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7
CiAgICAgCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlv
bkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKaW5kZXggMDM2MjFjMGJiMzcuLmQ2MWYxMzYyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBXZWJVUkxTY2hl
bWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdl
YlBhZ2VQcm94eSYgcAogICAgICwgbV9wYWdlKCZwYWdlKQogICAgICwgbV9wcm9jZXNzKG1ha2VS
ZWYocHJvY2VzcykpCiAgICAgLCBtX2lkZW50aWZpZXIocmVzb3VyY2VJZGVudGlmaWVyKQotICAg
ICwgbV9wYWdlSWRlbnRpZmllcihwYWdlLnBhZ2VJRCgpKQorICAgICwgbV9wYWdlSWRlbnRpZmll
cihwYWdlLmlkZW50aWZpZXIoKSkKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQog
ICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRs
ZXIpKQogewpAQCAtODIsNyArODIsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgICAg
ICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3VybFNj
aGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVz
dCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRs
ZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVzdCksIG1fcGFn
ZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBA
IC0xMDcsNyArMTA3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBpZiAoaXNTeW5j
KCkpCiAgICAgICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
bV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2Up
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91cmxTY2hlbWVIYW5kbGVyLT5p
ZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpLCBtX3BhZ2UtPndlYlBhZ2VJRCgp
KTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIApAQCAtMTM0LDcgKzEzNCw3
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmll
cigpLCBtX2lkZW50aWZpZXIsIHsgYnVmZmVyIH0pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZl
RGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1
ZmZlciB9KSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
Ok5vbmU7CiB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAg
ICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRp
ZmllciwgZXJyb3IpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3VybFNjaGVtZUhhbmRs
ZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNzY3
MzNmNzRjZjYuLjM5YjJmZWI0M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB+V2ViVVJMU2NoZW1l
VGFzaygpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0
dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcGFnZUlkZW50
aWZpZXI7IH0KIAogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIHsgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogCkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKLSAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgbV9yZXF1ZXN0OwogICAgIG11dGFibGUgTG9jayBtX3JlcXVlc3RMb2NrOwogICAgIGJvb2wg
bV9zdG9wcGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggZTJkZjQxN2QyZTguLjk1
YWVkZmUxNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChi
b29sIHZhbHVlLCBDb21wbGUKICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQs
IHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlm
ICghd2ViUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDY2ZjM1NmFiZDg2Li5mNTJmYWRlZThjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CkBAIC0xMzksNyArMTQw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBsb2dUZXN0aW5n
RXZlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0
ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDM4OTE5OGEyMDMzLi4w
ODY3ZDk4M2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5w
dXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDZW50
ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29v
cmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjZW50ZXJJ
blZpZXdDb29yZGluYXRlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDZW50ZXJGb3Jab29tR2Vz
dHVyZTo6UmVwbHkoY2VudGVyKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY2VudGVySW5WaWV3Q29v
cmRpbmF0ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmU6OlJl
cGx5KGNlbnRlciksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Om1ha2VH
TENvbnRleHRDdXJyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQppbmRleCA2MWU4NTk0ZDViNy4uNTUzYTNhY2Jk
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW0KQEAgLTQ2LDEzICs0NiwxMyBAQCBFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkp
CiAgICAgOiBtX3dlYlBhZ2VQcm94eShtYWtlV2Vha1B0cih3ZWJQYWdlUHJveHkpKQogewogICAg
IGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBtX3dlYlBhZ2VQcm94eS5nZXQoKSkKLSAgICAgICAg
d2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0
YWJsZUltYWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHkt
PnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5LT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQogCiBF
ZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKIHsKICAg
ICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gbV93ZWJQYWdlUHJveHkuZ2V0KCkpCi0gICAgICAg
IHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVBy
b3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5LT53ZWJQYWdlSUQoKSk7CiB9CiAKIEVkaXRhYmxl
SW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5tbQppbmRleCBjMGU0M2RjYjEyNi4uODA4ZjdmNzIyNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyLm1tCkBAIC01OCwxNyArNTgsMTcgQEAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcihXS0NvbnRlbnRWaWV3ICpjb250ZW4K
ICAgICA6IG1fd2ViUGFnZVByb3h5KCpjb250ZW50Vmlldy5wYWdlKQogICAgICwgbV9jb250ZW50
Vmlldyhjb250ZW50VmlldykKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAg
bV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2VQcm94eS53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQogCiBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyOjp+U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcigpCiB7Ci0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShGbG9hdFBvaW50IG9yaWdpbikKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2
b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlv
bkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQppbmRleCBjZWZkZTYxYzQ5
Yi4uZTRmNzU3Y2RmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9uSW50
ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgICAgIGlmIChmaW5pc2gpCiAgICAgICAgICAgICBtX3dl
YlBhZ2VQcm94eUZvckJhY2tGb3J3YXJkTGlzdEZvckN1cnJlbnRTd2lwZS0+bmF2aWdhdGlvbkdl
c3R1cmVXaWxsRW5kKHRyYW5zaXRpb25Db21wbGV0ZWQsICp0YXJnZXRJdGVtKTsKICAgICB9XTsK
LSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFn
ZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJl
SUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgW21fc3dpcGVUcmFuc2l0aW9uQ29udGV4dCBf
c2V0Q29tcGxldGlvbkhhbmRsZXI6W3BhZ2VJRCwgZ2VzdHVyZUlELCB0YXJnZXRJdGVtXSAoX1VJ
Vmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqY29udGV4dCwgQk9PTCBkaWRDb21wbGV0
ZSkgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJGb3JH
ZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IHRhcmdldEl0ZW0sCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LmRpZENoYW5nZUJhY2tncm91bmRD
b2xvcigpOwogICAgIH0KIAotICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlE
KCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5pZGVudGlmaWVyKCk7CiAgICAg
R2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX2xvYWRDYWxs
YmFjayA9IFt0aGlzLCBwYWdlSUQsIGdlc3R1cmVJRF0gewogICAgICAgICBhdXRvIGRyYXdpbmdB
cmVhID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxEcmF3aW5nQXJlYSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAwNGY5YzZlMjcwMi4u
YWY5MmRkMjAwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tCkBAIC03NDUsNyArNzQ1LDcgQEAgLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9y
UHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm8KIC0gKENH
UERGRG9jdW1lbnRSZWYpX3drX3ByaW50ZWREb2N1bWVudAogewogICAgIGlmIChfaXNQcmludGlu
Z1RvUERGKSB7Ci0gICAgICAgIGlmICghX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdU
b1BERkNhbGxiYWNrPihfcGFnZS0+cGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCkpKSB7Cisg
ICAgICAgIGlmICghX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNr
PihfcGFnZS0+d2ViUGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlNDQ4NWE5ZjBjOS4uNzExYmQxNTg0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtMTk5OCw5ICsxOTk4LDkgQEAgLSAoQk9PTCllbnN1cmVQb3NpdGlvbklu
Zm9ybWF0aW9uSXNVcFRvRGF0ZTooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWUK
ICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKFtzZWxmIF9oYXNWYWxpZE91dHN0YW5kaW5n
UG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3Q6cmVxdWVzdF0pCi0gICAgICAgIHJldHVybiBjb25u
ZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbj4oX3BhZ2UtPnBhZ2VJRCgpLCAxX3Ms
IElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVz
KTsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9u
PihfcGFnZS0+d2ViUGFnZUlEKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRX
YWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogCi0gICAgYm9vbCByZWNlaXZlZFJlc3BvbnNl
ID0gX3BhZ2UtPnByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0UG9zaXRp
b25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5m
b3JtYXRpb246OlJlcGx5KF9wb3NpdGlvbkluZm9ybWF0aW9uKSwgX3BhZ2UtPnBhZ2VJRCgpLCAx
X3MsIElQQzo6U2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dh
aXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpOworICAgIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSA9
IF9wYWdlLT5wcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9u
SW5mb3JtYXRpb24ocmVxdWVzdCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9y
bWF0aW9uOjpSZXBseShfcG9zaXRpb25JbmZvcm1hdGlvbiksIF9wYWdlLT53ZWJQYWdlSUQoKSwg
MV9zLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpGb3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNX
YWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5KTsKICAgICBfaGFzVmFsaWRQb3NpdGlvbkluZm9y
bWF0aW9uID0gcmVjZWl2ZWRSZXNwb25zZSAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5jYW5CZVZh
bGlkOwogICAgIAogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNsZWFuIHVwIHRoZXNlIGhhbmRs
ZXJzIGluIHRoZSBldmVudCB0aGF0IHdlIGFyZSBub3QgYWJsZSB0byBjb2xsZWN0IGRhdGEsIG9y
IGlmIHRoZSBXZWJQcm9jZXNzIGNyYXNoZXMuCkBAIC0zOTUzLDcgKzM5NTMsNyBAQCAtICh2b2lk
KXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFVJV0tBdXRvY29ycgogICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
KCk7CiAKICAgICBpZiAodXNlU3luY1JlcXVlc3QpIHsKLSAgICAgICAgX3BhZ2UtPnByb2Nlc3Mo
KS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dD4oX3BhZ2UtPnBhZ2VJRCgp
LCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9j
b3JyZWN0aW9uQ29udGV4dD4oX3BhZ2UtPndlYlBhZ2VJRCgpLCAxX3MsIElQQzo6V2FpdEZvck9w
dGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKICAgICAgICAgW3Nl
bGYgX2NhbmNlbFBlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyXTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRl
eCBiYmUzOWY0ZjNlNS4uMGQ4ZDhmZGJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGdW5jdGlvbjx2b2lkKGNv
bnN0IEZvY3VzZWRFCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkKQEAgLTIxMCwxMiArMjEw
LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0
IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlZp
ZXdVcGRhdGVEaXNwYXRjaGVyOjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUobV9wYWdlSUQsIHZp
c2libGVDb250ZW50UmVjdFVwZGF0ZSksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZShtX3dlYlBh
Z2VJRCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSwgMCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNlbmRMYXN0VmlzaWJsZUNvbnRlbnRSZWN0cygpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlKG1fcGFnZUlELCBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCAwKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGUobV93ZWJQYWdlSUQsIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU3RyaW5nRm9yRmluZChjb25z
dCBTdHJpbmcmIHN0cmluZykKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXpl
LCBjbwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHluYW1pY1ZpZXdw
b3J0U2l6ZVVwZGF0ZSh2aWV3TGF5b3V0U2l6ZSwKICAgICAgICAgbWF4aW11bVVub2JzY3VyZWRT
aXplLCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIHRhcmdldFVub2JzY3VyZWRSZWN0LAogICAg
ICAgICB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCB1bm9ic2N1
cmVkU2FmZUFyZWFJbnNldHMsCi0gICAgICAgIHRhcmdldFNjYWxlLCBkZXZpY2VPcmllbnRhdGlv
biwgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKSwgbV9wYWdlSUQpOworICAgICAgICB0YXJn
ZXRTY2FsZSwgZGV2aWNlT3JpZW50YXRpb24sIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29uZmln
dXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZG91
YmxlIHNjYWxlRmFjdG9yLCBkb3VibGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQpAQCAt
MzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRp
b25WaWV3TGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpCiAgICAgbV92aWV3cG9ydENv
bmZpZ3VyYXRpb25NaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGggPSBtaW5pbXVtRWZmZWN0aXZl
RGV2aWNlV2lkdGg7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25W
aWV3TGF5b3V0U2l6ZShzaXplLCBzY2FsZUZhY3RvciwgbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHNpemUsIHNjYWxlRmFj
dG9yLCBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2Fs
YWJsZSkKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9yY2VBbHdh
eXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCiAgICAgbV9mb3JjZUFsd2F5c1VzZXJT
Y2FsYWJsZSA9IHVzZXJTY2FsYWJsZTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvcmNlQWx3YXlz
VXNlclNjYWxhYmxlKHVzZXJTY2FsYWJsZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSh1c2Vy
U2NhbGFibGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXhp
bXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQpAQCAtMzMz
LDcgKzMzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1fbWF4aW11bVVub2JzY3VyZWRT
aXplID0gc2l6ZTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShz
aXplKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShzaXplKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbikKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGV2aWNl
T3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKICAgICBpZiAoZGV2aWNlT3Jp
ZW50YXRpb24gIT0gbV9kZXZpY2VPcmllbnRhdGlvbikgewogICAgICAgICBtX2RldmljZU9yaWVu
dGF0aW9uID0gZGV2aWNlT3JpZW50YXRpb247CiAgICAgICAgIGlmIChoYXNSdW5uaW5nUHJvY2Vz
cygpKQotICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRE
ZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbiksIG1fcGFnZUlEKTsKKyAgICAgICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RGV2aWNlT3JpZW50YXRp
b24oZGV2aWNlT3JpZW50YXRpb24pLCBtX3dlYlBhZ2VJRCk7CiAgICAgfQogfQogCkBAIC0zNTMs
NyArMzUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVu
dHMoY29uc3QgT3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHMKICAgICBtX292ZXJyaWRlVmlld3Bv
cnRBcmd1bWVudHMgPSB2aWV3cG9ydEFyZ3VtZW50czsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJv
Y2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE92
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHMpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0T3ZlcnJpZGVWaWV3
cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cyksIG1fd2ViUGFnZUlEKTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhjZWVkc1JlbmRlclRyZWVTaXplU2l6ZVRocmVzaG9sZCh1aW50NjRfdCB0aHJl
c2hvbGRTaXplLCB1aW50NjRfdCBjb21taXR0ZWRTaXplKQpAQCAtNDE1LDcgKzQxNSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51
bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50MzJfdClncmFu
dWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNDI2LDE3ICs0MjYsMTcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCB1aW4KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKHBvaW50LCB0
b3VjaGVzLCBiYXNlSXNTdGFydCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKHBv
aW50LCB0b3VjaGVzLCBiYXNlSXNTdGFydCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
ICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmlu
ZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZURpY3RhdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVw
bGFjZURpY3RhdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRl
eHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3RlZFRleHQob2xkVGV4dCwgbmV3VGV4dCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxl
Y3RlZFRleHQob2xkVGV4dCwgbmV3VGV4dCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9y
QXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25E
YXRhKT4mJiBjYWxsYmFjaykKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVj
dGlvbgogICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uKSwg
V1RGTW92ZShjYWxsYmFjayksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uKGNv
bnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKQEAgLTQ1NiwxMyArNDU2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
cHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBvCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
cHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5
QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0KQogewog
ICAgIGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVj
dGlvbiwgb3JpZ2luYWxUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlN5bmNBcHBseUF1dG9jb3Jy
ZWN0aW9uOjpSZXBseShhdXRvY29ycmVjdGlvbkFwcGxpZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U3luY0FwcGx5QXV0b2NvcnJlY3Rp
b24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlN5bmNBcHBs
eUF1dG9jb3JyZWN0aW9uOjpSZXBseShhdXRvY29ycmVjdGlvbkFwcGxpZWQpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgcmV0dXJuIGF1dG9jb3JyZWN0aW9uQXBwbGllZDsKIH0KIApAQCAtNDc0LDcgKzQ3
NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2luCiAgICAgfQogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0
UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5
QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTQ4NSw3ICs0ODUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludAogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19j
YXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRp
cmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTQ5Niw3ICs0OTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZGlyZWN0aW9uKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZGlyZWN0aW9uKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV1RG
OjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICB9CiAgICAg
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlv
bkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1l
bnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpi
ZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2lu
U2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LAogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChwb2ludCwgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlEKTsKICAgICAKIH0KIApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25z
dCBXZWJDb3JlOjpJbnRQCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnko
cG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkocG9pbnQsIGdyYW51
bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogICAgIAogfQogCkBAIC01NTMsMTIgKzU1MywxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBjbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVxdWVzdERpY3RhdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0
JiBjb250ZXh0KQpAQCAtNTc0LDE3ICs1NzQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNl
bGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFMK
ICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTZWxlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUd29GaW5nZXJU
YXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgT3B0aW9uU2V0PFdlYkV2
ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQo
cG9pbnQsIG1vZGlmaWVycywgcmVxdWVzdElEKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHBvaW50LCBt
b2RpZmllcnMsIHJlcXVlc3RJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJ
RCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFu
ZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90
IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNTk1LDcgKzU5NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoVHdvVG91Y2hlcyhmcm9tLCB0bywgZ2Vz
dHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhUd29Ub3VjaGVzKGZyb20s
IHRvLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24o
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCkBAIC02MDUsMjIg
KzYwNSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRp
b24ocmVxdWVzdCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0
SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RhcnRJ
bnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihwb2ludCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxl
bWVudEF0UG9zaXRpb24ocG9pbnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wSW50ZXJhY3Rpb24oKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U3RvcEludGVyYWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BJbnRlcmFjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFj
dGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1B
Y3Rpb25PbkVsZW1lbnQoYWN0aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUFjdGlvbk9uRWxlbWVudChhY3Rpb24pLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3Qg
U2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUpCkBA
IC02NDAsNyArNjQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKCkKICAgICBpZiAoaXNTdXNwZW5kZWRVbmRlckxvY2spCiAgICAgICAgIE5hdmln
YXRpb25TdGF0ZTo6ZnJvbVdlYlBhZ2UoKnRoaXMpLnJlbGVhc2VOZXR3b3JrQWN0aXZpdHlUb2tl
bihOYXZpZ2F0aW9uU3RhdGU6Ok5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbjo6U2Ny
ZWVuTG9ja2VkKTsKICNlbmRpZgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0
aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQoKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdC
YWNrZ3JvdW5kKCkKICAgICAgICAgbV9kcmF3aW5nQXJlYS0+cHJlcGFyZUZvckFwcFN1c3BlbnNp
b24oKTsKICAgICAgICAgbV9kcmF3aW5nQXJlYS0+aGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRh
dGUoKTsKICAgICB9Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBs
aWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKCksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0
aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2Rl
KCkKQEAgLTY2MCwxMyArNjYwLDEzIEBAIGJvb2wgV2ViUGFnZVByb3h5Ojppc0luSGFyZHdhcmVL
ZXlib2FyZE1vZGUoKQogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCgpCiB7CiAgICAgYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtVSUFwcCBpc1N1
c3BlbmRlZFVuZGVyTG9ja107Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBt
X3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXJkd2Fy
ZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKSks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayksIG1fd2ViUGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhcmR3YXJlS2V5
Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkKGlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZSgpKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoKQpAQCAtNjc1LDE3ICs2NzUsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCkKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKQogICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KCk7CiAjZW5kaWYKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeHRlbmRTZWxlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51
bGFyaXR5KSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkV4dGVuZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V29yZEJhY2t3YXJk
KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdvcmRC
YWNrd2FyZCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZWxlY3RXb3JkQmFja3dhcmQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTY5Niw3ICs2OTYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0
aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0
aW9uT2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHN0YXRpY19jYXN0
PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0
V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC03MDcsMjIgKzcwNywyMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQz
Ml90IG9mZnNldCwgY29uc3QgUwogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChvZmZz
ZXQsIHRleHQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0
LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wgc2hvdWxkU3RvcmUpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9yZVNlbGVjdGlvbkZvckFj
Y2Vzc2liaWxpdHkoc2hvdWxkU3RvcmUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkoc2hvdWxk
U3RvcmUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEF1dG9z
Y3JvbGxBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uSW5XaW5k
b3cpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdGFydEF1dG9z
Y3JvbGxBdFBvc2l0aW9uKHBvc2l0aW9uSW5XaW5kb3cpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKHBv
c2l0aW9uSW5XaW5kb3cpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2FuY2VsQXV0b3Njcm9sbCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDYW5jZWxBdXRvc2Nyb2xsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbEF1dG9zY3JvbGwoKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zm
c2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxl
Y3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWwKICAg
ICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3Zl
U2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9m
ZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmludGVycHJldEtleUV2ZW50KGNvbnN0IEVkaXRvclN0YXRlJiBzdGF0ZSwgYm9vbCBpc0NoYXJF
dmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJVSVByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93VG9rZW4pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90LCBi
b29sKQpAQCAtODA2LDU4ICs4MDYsNTggQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJz
dE1vdXNlKGludCwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JikKIAogdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCkKIHsKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKSwg
bV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaWxsU3Rh
cnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHBvc2l0aW9uLCBib29sIHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24sIHVp
bnQ2NF90JiByZXF1ZXN0SUQpCiB7CiAgICAgaGlkZVZhbGlkYXRpb25NZXNzYWdlKCk7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvdGVudGlhbFRhcEF0UG9zaXRpb24o
cmVxdWVzdElELCBwb3NpdGlvbiwgc2hvdWxkUmVxdWVzdE1hZ25pZmljYXRpb25JbmZvcm1hdGlv
biksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG90
ZW50aWFsVGFwQXRQb3NpdGlvbihyZXF1ZXN0SUQsIHBvc2l0aW9uLCBzaG91bGRSZXF1ZXN0TWFn
bmlmaWNhdGlvbkluZm9ybWF0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29tbWl0UG90ZW50aWFsVGFwKE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1v
ZGlmaWVycywgVHJhbnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hT
dGFydCwgV2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCkKIHsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tbWl0UG90ZW50aWFsVGFwKG1vZGlmaWVycywgbGF5ZXJU
cmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQsIHBvaW50ZXJJZCksIG1fcGFnZUlEKTsK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tbWl0UG90ZW50aWFsVGFw
KG1vZGlmaWVycywgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQsIHBvaW50
ZXJJZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbFBvdGVu
dGlhbFRhcCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNl
bFBvdGVudGlhbFRhcCgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNhbmNlbFBvdGVudGlhbFRhcCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojp0YXBIaWdobGlnaHRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHBvc2l0aW9uLCB1aW50NjRfdCYgcmVxdWVzdElEKQogewotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYXBIaWdobGlnaHRBdFBvc2l0aW9uKHJlcXVlc3RJRCwg
cG9zaXRpb24pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlRhcEhpZ2hsaWdodEF0UG9zaXRpb24ocmVxdWVzdElELCBwb3NpdGlvbiksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRhcChjb25zdCBGbG9hdFBvaW50
JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCBUcmFu
c2FjdGlvbklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVUYXAocm91bmRlZEludFBv
aW50KGxvY2F0aW9uKSwgbW9kaWZpZXJzLCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91
Y2hTdGFydCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGFuZGxlVGFwKHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIG1vZGlmaWVycywgbGF5ZXJU
cmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNvZ25pemVMb25nUHJlc3MoKQogewotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNvZ25pemVMb25nUHJlc3MoKSwgbV9wYWdl
SUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNvZ25pemVM
b25nUHJlc3MoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxl
RG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCBUcmFuc2FjdGlv
bklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KQogewotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlj
a0F0UG9pbnQocG9pbnQsIG1vZGlmaWVycywgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRv
dWNoU3RhcnQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkhhbmRsZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChwb2ludCwgbW9kaWZpZXJz
LCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRvUG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRvUG9zaXRp
b24ocG9zaXRpb24pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRvUG9zaXRpb24ocG9zaXRpb24pLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoRW5k
ZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoRW5k
ZWRBdFBvc2l0aW9uKHBvc2l0aW9uKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKHBvc2l0
aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ymx1ckZvY3VzZWRF
bGVtZW50KCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Qmx1ckZv
Y3VzZWRFbGVtZW50KCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Qmx1ckZvY3VzZWRFbGVtZW50KCksIG1fd2ViUGFnZUlEKTsKIH0KIAogRmxvYXRT
aXplIFdlYlBhZ2VQcm94eTo6c2NyZWVuU2l6ZSgpCkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBXZWJDb3IKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldElzU2hvd2luZ0lucHV0
Vmlld0ZvckZvY3VzZWRFbGVtZW50KGJvb2wgc2hvd2luZ0lucHV0VmlldykKIHsKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTaG93aW5nSW5wdXRWaWV3Rm9yRm9j
dXNlZEVsZW1lbnQoc2hvd2luZ0lucHV0VmlldyksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTaG93aW5nSW5wdXRWaWV3Rm9yRm9jdXNlZEVs
ZW1lbnQoc2hvd2luZ0lucHV0VmlldyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZUlucHV0Q29udGV4dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVu
dCgpCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbGVhc2VBbGxU
b3VjaFBvaW50cygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphdXRvZmlsbExvZ2luQ3JlZGVudGlh
bHMoY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF1dG9maWxsTG9naW5DcmVkZW50
aWFscyh1c2VybmFtZSwgcGFzc3dvcmQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBdXRvZmlsbExvZ2luQ3JlZGVudGlhbHModXNlcm5hbWUsIHBh
c3N3b3JkKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0luc3Bl
Y3RvckhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpIaWdobGlnaHQmIGhpZ2hsaWdodCkKQEAgLTk5
NywyMiArOTk3LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRGb2N1c2VkRWxlbWVu
dChib29sIGlzRm9yd2FyZCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhCiAgICAgfQogICAgIAogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRGb2N1c2VkRWxl
bWVudChpc0ZvcndhcmQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGlzRm9yd2FyZCwg
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZv
Y3VzZWRFbGVtZW50VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZSh2YWx1ZSksIG1f
cGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9jdXNl
ZEVsZW1lbnRWYWx1ZSh2YWx1ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEZvY3VzZWRFbGVtZW50VmFsdWVBc051bWJlcihkb3VibGUgdmFsdWUpCiB7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50VmFsdWVB
c051bWJlcih2YWx1ZSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZUFzTnVtYmVyKHZhbHVlKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9jdXNlZEVsZW1lbnRTZWxlY3RlZElu
ZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pCiB7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50U2VsZWN0
ZWRJbmRleChpbmRleCwgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiksIG1fcGFnZUlEKTsKKyAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9jdXNlZEVsZW1lbnRTZWxlY3Rl
ZEluZGV4KGluZGV4LCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKQEAgLTEwODIsNyArMTA4Miw3
IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
dXNpbmcgTWVzc2FnZSA9IE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERjsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZShmcmFtZUlELCBw
cmludEluZm8sIGNhbGxiYWNrSUQpLCBNZXNzYWdlOjpSZXBseShwYWdlQ291bnQpLCBtX3BhZ2VJ
RCwgU2Vjb25kczo6aW5maW5pdHkoKSk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2Uo
ZnJhbWVJRCwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgTWVzc2FnZTo6UmVwbHkocGFnZUNvdW50
KSwgbV93ZWJQYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCkpOwogICAgIHJldHVybiBwYWdlQ291
bnQ7CiB9CiAKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9Q
REZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrCiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0
cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50U2l6ZUNhdGVn
b3J5KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
b250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnRlbnRTaXplQ2F0ZWdvcnkpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kKFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbmQpCkBAIC0x
MTAzLDcgKzExMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoY29tbWFuZCks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2VuZXJh
dGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChjb21tYW5kKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRpdG9yU3RhdGUmIGVk
aXRvclN0YXRlKQpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElz
U2Nyb2xsaW5nT3Jab29taW5nKGJvb2wgaXNTY3JvbGxpbmdPclpvb21pbmcpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6aGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBrZXlib2Fy
ZElzQXR0YWNoZWQpCiB7CiAgICAgdXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFi
aWxpdHlDaGFuZ2VkKGtleWJvYXJkSXNBdHRhY2hlZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlD
aGFuZ2VkKGtleWJvYXJkSXNBdHRhY2hlZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+Jik+JiYgY2FsbGJhY2sp
CkBAIC0xMTY4LDcgKzExNjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEV2YXNpb25S
ZWN0c0Fib3ZlU2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29ucwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0
aW9uKCksIFdURk1vdmUoY2FsbGJhY2spLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEV2
YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50
NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25E
ZWx0YSwgaW50NjRfdCBsZW5ndAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9j
ZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGxvY2F0aW9uRGVsdGEsIGxlbmd0aERlbHRhKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxl
Y3Rpb25XaXRoRGVsdGEobG9jYXRpb25EZWx0YSwgbGVuZ3RoRGVsdGEpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0
UmVxdWVzdCByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMTg4LDcgKzExODgsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2ViS2l0
OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6UmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERvY3VtZW50RWRp
dGluZ0NvbnRleHQocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTEyMDYsMTMgKzEy
MDYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNS
ZXF1ZXN0KGJvb2wgYWRkZWQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERyYWdTdGFydChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2Vk
QWN0aW9ucykKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RHJhZ1N0YXJ0KGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3BhZ2VJRCk7CisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERyYWdTdGFydChjbGll
bnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdT
ZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKQog
ewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihj
bGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV9wYWdlSUQp
OworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBZGRp
dGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IGFsbG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkKQEAgLTEyMjcsNyArMTIyNyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxUZXh0SW5k
aWNhdG9yRGF0YT4gZGF0YSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbmNsdWRlRHJvcCgp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb25jbHVkZURy
b3AoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ29uY2x1ZGVEcm9wKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2VuZGlmCkBAIC0xMjUzLDgg
KzEyNTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7
Ci0gICAgcGFnZUNsaWVudCgpLnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGZp
bGVOYW1lLCBbcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyksIHBhZ2VJRCA9IG1fcGFnZUlEXShj
b25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KHBhc3N3b3Jk
KSwgcGFnZUlEKTsKKyAgICBwYWdlQ2xpZW50KCkucmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29r
RG9jdW1lbnQoZmlsZU5hbWUsIFtwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKSwgd2ViUGFnZUlE
ID0gbV93ZWJQYWdlSURdKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29r
RG9jdW1lbnQocGFzc3dvcmQpLCB3ZWJQYWdlSUQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KaW5kZXggMzQ5Y2VkM2UxODAuLjY4NmExZjE2YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1t
CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHIKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWlj
YWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9Owog
CiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZFVSTCwgY29uc3QgUwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAogICAgIFdlYlBhZ2VQ
cm94eSogaW5zcGVjdG9yUGFnZSA9IHdlYlZpZXcoKS0+X3BhZ2UuZ2V0KCk7Ci0gICAgaW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpE
aWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBpbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgaW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVdlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBp
bnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggMjEzNWJmMTE4OGUuLmNhN2I2YzUxMzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2VvbWV0
cnkoKQogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiB7CiAgICAgU2Vjb25k
cyBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMo
MjUwKTsKLSAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPiht
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAg
ICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQ
cm94eS53ZWJQYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZv
ck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3aWxsU2VuZFVwZGF0ZUdlb21l
dHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDUwMjQxZDhiZjYyLi40MjNhMDZhYWM2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKIAog
ICAgICAgICAvLyBGSVhNRTogV2UgZHJvcCB0aGUgZmlyc3QgZnJhbWUgb2YgdGhlIGdlc3R1cmUg
b24gdGhlIGZsb29yLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIHZpc2libGUgY29udGVudCBi
b3VuZHMgeWV0LgogICAgICAgICBtX21hZ25pZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdl
U2NhbGVGYWN0b3IoKTsKLSAgICAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1h
Z25pZmljYXRpb25HZXN0dXJlKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCksIG1f
d2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKICAgICAgICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdl
c3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKIAogICAgICAgICByZXR1cm47CkBA
IC0xOTYsNyArMTk2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiAgICAgaWYgKG1fYWN0aXZl
R2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJv
eHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiBzdGF0aWMgZmxvYXQgbWF4aW11bVJlY3Rh
bmdsZUNvbXBvbmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJlY3QgYikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tCmluZGV4IDIxNTE2NjJkMzQ3Li5hZTg3YWE5Y2IwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tCkBAIC0xOTMsNyArMTkzLDcgQEAgLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVy
V2lsbEJlZ2luQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWMKICAgICAvLyBG
SVhNRTogQ29ubmVjdGlvbiBjYW4gYmUgbnVsbCBpZiB0aGUgcHJvY2VzcyBpcyBjbG9zZWQ7IHdl
IHNob3VsZCBjbGVhbiB1cCBiZXR0ZXIgaW4gdGhhdCBjYXNlLgogICAgIGlmIChfc3RhdGUgPT0g
V2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UGVuZGluZykgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpKSB7Ci0gICAgICAg
ICAgICBib29sIHJlY2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0
aW9uSGl0VGVzdD4oX3BhZ2UtPnBhZ2VJRCgpLCBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDUw
MCkpOworICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJlcGx5ID0gY29ubmVjdGlvbi0+d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9y
bUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9wYWdlLT53ZWJQYWdlSUQoKSwgU2Vjb25kczo6ZnJv
bU1pbGxpc2Vjb25kcyg1MDApKTsKICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRSZXBseSkKICAg
ICAgICAgICAgICAgICBfc3RhdGUgPSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpUaW1l
ZE91dDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDI5YzYxNDBiMjA5Li5lNTM3OTc0MDk0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
U2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0
b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwog
Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVT
dHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgfTsKIAogICAgIGlm
ICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC01MjcsNyArNTI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0
IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwg
bV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGMzMjU2NzhmMzhjLi43ZDQxMWU4MDg4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0x
NzIsNyArMTcyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd0FuZFZpZXdGcmFtZXNDaGFu
Z2VkKGNvbnN0IEZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3cKICAgICAvLyBJbiBjYXNlIHRo
ZSBVSSBjbGllbnQgb3ZlcnJpZGVzIGdldFdpbmRvd0ZyYW1lKCksIHdlIGNhbGwgaXQgaGVyZSB0
byBtYWtlIHN1cmUgd2Ugc2VuZCB0aGUgYXBwcm9wcmlhdGUgd2luZG93IGZyYW1lLgogICAgIG1f
dWlDbGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmll
d0Nvb3JkaW5hdGVzXSAoRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcykg
ewogICAgICAgICBGbG9hdFJlY3Qgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5h
dGVzID0gcGFnZUNsaWVudCgpLmNvbnZlcnRUb1VzZXJTcGFjZSh3aW5kb3dGcmFtZUluU2NyZWVu
Q29vcmRpbmF0ZXMpOwotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVz
LCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMsIHZpZXdGcmFtZUluV2lu
ZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpLCBtX3BhZ2VJRCk7
CisgICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3
RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1l
SW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRl
cywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fd2ViUGFnZUlEKTsKICAgICB9KTsK
IH0KIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYWluRnJhbWVJ
c1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fcGFnZUlEKTsK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3Jv
bGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRp
dGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVy
VW5kb0dyb3VwKQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRE
aWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCksIG1fcGFnZUlEKTsKKyAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMo
dGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVu
ZG9Hcm91cCksIG1fd2ViUGFnZUlEKTsKICNlbHNlCiAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0
aW9uczsKICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7
CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYKIAogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxi
YWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiBh
Y3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb250
SW5mbyYsIGRvdWJsZSwgYm9vbCwKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oY2FsbGJhY2tJRCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNh
bGxiYWNrKGNvbnN0IEZvbnRJbmZvJiBmb250SW5mbywgZG91YmxlIGZvbnRTaXplLCBib29sIHNl
bGVjdGlvbkhhc011bHRpcGxlRm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTI3MCw3
ICsyNzAsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIAogICAgIGNvbnN0IFNlY29uZHMgbWVz
c2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCBtX3BhZ2VJRCwg
bWVzc2FnZVRpbWVvdXQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCBtX3dlYlBhZ2VJ
RCwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjgyLDcgKzI4
Miw3IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyCiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAg
ICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7CiAgICAgcHJvY2VzcygpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJl
cGx5KGhhbmRsZSwgc2l6ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFu
ZGxlLCBzaXplKSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICBpZiAoaGFuZGxl
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwpAQCAtMjk2LDE0ICsyOTYsMTQgQEAgYm9v
bCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBT
ZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIwKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSks
IE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHJl
c3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpS
ZXBseShyZXN1bHQpLCBtX3dlYlBhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9h
cmREYXRhKHR5cGVzLCBkYXRhKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBk
YXRhKSwgbV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTMzMywyMiArMzMzLDIyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50
aWZpZXIsIHRleHRJbnB1dCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbihwbHVnaW5Db21wbGV4VGV4
dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBwZXJjYXNlV29yZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwcGVyY2FzZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBlcmNhc2VXb3JkKCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6Omxvd2VyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb3dlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG93ZXJjYXNlV29yZCgpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYXBpdGFsaXplV29yZCgpCiB7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCksIG1fcGFn
ZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRhbGl6ZVdv
cmQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCkBAIC0zNTgs
NyArMzU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZChib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKQogCiAgICAgVGV4dENoZWNrZXI6OnNl
dFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CiAg
ICAgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IGlzU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rp
b25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCkBAIC0zOTQsNyArMzk0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dU
b2tlbiksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93
VG9rZW4pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5Gb2N1
c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpCkBAIC00MjMsNyAr
NDIzLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JF
dmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCku
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVu
dChldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZl
bnQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgcHJvY2Vz
cygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5n
RXZlbnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmlu
Z0V2ZW50OjpSZXBseShyZXN1bHQpLCBtX3dlYlBhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFdlYlBhZ2VQcm94
eTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1v
dXNlRXZlbgogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBTZWNvbmRzIG1l
c3NhZ2VUaW1lb3V0KDMpOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6QWNjZXB0c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6OldlYlBh
Z2U6OkFjY2VwdHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRp
bWVvdXQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0
c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vw
dHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtX3dlYlBhZ2VJRCwgbWVzc2FnZVRpbWVvdXQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAyNmY4NTdhZmQzLi40M2EwYWQxN2FhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MTcsNiArOTE3LDcgQEAKIAkJNDZCRUI2REIyMkZCOUQ0ODAwMjY5ODY3IC8qIExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCRUI2RDkyMkZCOUQ0ODAwMjY5ODY3IC8qIExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICov
OyB9OwogCQk0NkJFQjZERjIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVC
NkREMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9Owog
CQk0NkJFQjZFMzIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJF
QjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgg
Ki87IH07CisJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMz
OTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9Owog
CQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYz
QTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07
CiAJCTRBM0NDMThCMTlCMDY0MEYwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmggKi87IH07CiAJCTRBM0NDMThEMTlCMDY0MTkwMEQxNEFFRiAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQzE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovOyB9OwpAQCAtMzIyOCw2ICszMjI5LDcgQEAK
IAkJNDZCRUI2REUyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2
RTIyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyog
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUw
MDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03ODU5LDYgKzc4NjEsNyBAQAogCQkJCUJDMTExQjBCMTEyRjVFNEYwMDMzN0JBQiAvKiBX
ZWJQYWdlUHJveHkuY3BwICovLAogCQkJCUJDMDMyRENCMTBGNDM4OUYwMDU4QzE1QSAvKiBXZWJQ
YWdlUHJveHkuaCAqLywKIAkJCQlCQ0JEMzhGQTEyNUJBQjlBMDBEMkMyOUYgLyogV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmggKi8sCiAJCQkJN0M0Njk0Q0QxQTUxRTM2ODAwQUQ1ODQ1IC8q
IFdlYlBhc3RlYm9hcmRQcm94eS5jcHAgKi8sCiAJCQkJN0M0Njk0Q0UxQTUxRTM2ODAwQUQ1ODQ1
IC8qIFdlYlBhc3RlYm9hcmRQcm94eS5oICovLAogCQkJCTdDNDY5NENGMUE1MUUzNjgwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDAyNSw2ICsxMDAy
OCw3IEBACiAJCQkJQzVGQTFFRDMxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDEyREFCNTIwNjYyQzczMDA2RjAwRkIgLyogV0tB
bmltYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEREIzMkQxMjRFQzJFMTAw
NDhEMTNDIC8qIFdLQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDMzkyMjkyMzE2RUM0
RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTNEQzY4MjIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVGNDEyNEZG
MDI3MDA2OEYyMEEgLyogV0tBcnJheS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377500</attachid>
            <date>2019-08-28 15:53:58 -0700</date>
            <delta_ts>2019-08-29 08:28:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201233-20190828155357.patch</filename>
            <type>text/plain</type>
            <size>365901</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE2ZGZkMjExYWNhNWFkMjQx
MzE2ZjRlZDBiZjFlZWIzYmMwZmZkMzIuLjRkNTQ1ODlmY2FjMjU5NjQ3MWE5N2U1NDc5ZWYyYTI2
ZWJiZDUwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjA1IEBACisyMDE5LTA4LTI4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzc29jaWF0ZSB0aGUgV2ViUGFn
ZVByb3h5J3MgaWRlbnRpZmllciBmcm9tIHRoZSBXZWJQYWdlJ3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTIzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3NvY2lhdGUgdGhlIFdlYlBhZ2VQcm94
eSdzIGlkZW50aWZpZXIgZnJvbSB0aGUgV2ViUGFnZSdzLiBUaGlzIHdpbGwgYWxsb3cgYnVtcGlu
ZyB0aGUKKyAgICAgICAgV2ViUGFnZSdzIGlkZW50aWZpZXIgZXZlcnl0aW1lIHdlIGNyZWF0ZSBh
IFdlYlBhZ2UgaW4gYSBuZXcgcHJvY2VzcyBpbiBjYXNlIG9mIHByb2Nlc3MKKyAgICAgICAgc3dh
cCBvbiBuYXZpZ2F0aW9uIChCdWcgMjAxMjI1KS4KKworICAgICAgICAqIFNoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6cGFn
ZUlEIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgaGFuZGxlXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdGVP
YmplY3RSZWdpc3RyeV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2hhbmRsZV0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9lbmRBbmltYXRlZFJlc2l6ZV0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5
b3V0U2l6ZTptYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zvcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19nZXRfcGFnZV9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6aGFuZGxlRm9yV2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNwb25kVG9QZW5k
aW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0aW9uT2NjdXJyZWRGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkb2N1bWVudExvYWRlZEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RvckZyb250
ZW5kTG9hZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1vdXNl
RXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFt
ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRl
RWxlbWVudExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpz
ZWxlY3RPcHRpb25FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6ZGVsZXRlU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OmlucHV0RGlzcGF0Y2hlckZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6dmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0QnJvd3NpbmdDb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xs
ZXI6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VGV4dENo
ZWNraW5nQ29udHJvbGxlcjo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1v
dmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWFr
aW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Ym91bmRh
cnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2ljZXNE
aWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6On5XZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9mZlNjcmVlbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnZpZXdEaWRVbmhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
YWN0aXZlU3BhY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVt
b3RlT2JqZWN0UmVnaXN0cnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y29ubmVjdCk6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpkaXNjb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRC
YWNrZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJRHNNYXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OnBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNo
b3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Vz
cGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpT
dXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OnVuc3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3Bl
bmRlZFBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJv
eHk6OmRpZFByb2Nlc3NSZXF1ZXN0VG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVu
ZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpk
ZW55UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21Qcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2Vz
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Zm9yY2VSZXBh
aW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJl
cXVlc3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0
ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjphZGRW
aXNpdGVkTGlua0hhc2hGcm9tUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdDo6aXRlbUZvcklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRWRp
dENvbW1hbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk6
OnVuYXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFwcGx5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lUHJveHk6OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnN0b3BMb2Fk
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6Y29sbGFwc2VTZWxl
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6V2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6On5XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbFNjcmVlbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4
aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RFeGl0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNhdmVTY3JvbGxQb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxz
Y3JlZW5JbnNldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVzZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6dXBkYXRlRm9yTmV3UGFnZVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2V0RnJvbnRlbmRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25z
b2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNo
YW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1f
cmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJ
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0Ns
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRJbmRpY2F0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGVJbnNwZWN0b3JUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRvcENv
bnRlbnRJbnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJsYXlD
b2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVS
ZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5kTGl2ZVJl
c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxheWVySG9zdGluZ01vZGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0
YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29t
bWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE5lZWRzRm9udEF0dHJpYnV0ZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRTdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRy
YWdDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0
UXVldWVkTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VuZFdo
ZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJk
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0UG90ZW50aWFs
VGFwU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRs
ZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2Fu
Y2VsUG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hXaXRoSWRl
bnRpZmllcldhc1JlbW92ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9s
bEJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZp
c2libGVBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdh
dGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNl
ckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0VGV4dFpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzY2FsZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjYWxl
UGFnZUluVmlld0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
Y2FsZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNl
dHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VG
aXhlZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlv
dXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c0hv
cml6b250YWxTY3JvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25k
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25CZWhhdmVzTGlr
ZUNvbHVtbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBhZ2VMZW5ndGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RGaW5kTWF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmluZGljYXRlRmluZE1hdGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpoaWRlRmluZFVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb3VudFN0
cmluZ01hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNo
YXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJl
ZGlyZWN0U2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6dHJ5U09BdXRob3JpemF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzaG93U2hhcmVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0TWVkaWFWb2x1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldE11dGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdG9wTWVkaWFD
YXB0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxh
eWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENsb3NlU3VnZ2VzdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNlbGVjdE9wdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEFkZEl0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1
cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRlbUZv
clBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VU
b0luamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmYWlsZWRU
b1Nob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb250
ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUNvbnRleHRN
ZW51S2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDaGVja2luZ1RleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbmRQ
cmludGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRU
b1ZpZXdIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y29uZmlybUNvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjYW5j
ZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Nyb2xs
UGlubmluZ0JlaGF2aW9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRPdmVy
bGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZE1J
TUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNoYW5nZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRl
eHRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3lu
Yyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5m
byk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbW1l
ZGlhdGVBY3Rpb25EaWRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omlt
bWVkaWF0ZUFjdGlvbkRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
aW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNs
ZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQWxsb3dQb2ludGVyTG9jayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGVueVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNm
ZXJGcm9tUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXREZWZlcnNMb2FkaW5nRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRldGVjdERhdGFJbkFsbEZyYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3ZWJQ
YWdlSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHlJZGVudGlmaWVy
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRW
aXNpdGVkTGlua1N0b3JlVXNlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6aXNBbGxvd2VkVG9VcGRhdGVCYWNrRm9yd2FyZEl0ZW0gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXI6OnN0b3BBbGxUYXNrc0ZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyOjpzdG9wVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpwYWdlSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dENlbnRlckZvclpvb21HZXN0dXJlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJs
ZUltYWdlQ29udHJvbGxlcjo6fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgIChX
ZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OlNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Ojp+U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1
cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcHJpbnRlZERvY3VtZW50XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZW5kTGFzdFZp
c2libGVDb250ZW50UmVjdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmR5bmFt
aWNWaWV3cG9ydFNpemVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXREZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJl
Z2luU2VsZWN0aW9uSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVTdHlsdXNTaW5nbGVUYXBB
dFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFBvc2l0aW9uSW5m
b3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0SW50ZXJhY3Rp
b25XaXRoRWxlbWVudEF0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnN0b3BJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9y
bUFjdGlvbk9uRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmFwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXh0ZW5k
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXb3JkQmFj
a3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0Zvckdy
YW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjYW5jZWxBdXRvc2Nyb2xsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2Vucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFN0YXJ0VXNlclRyaWdn
ZXJlZFpvb21pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBvdGVudGlhbFRh
cEF0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFBvdGVu
dGlhbFRhcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuY2VsUG90ZW50aWFs
VGFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0YXBIaWdobGlnaHRBdFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUYXApOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY29nbml6ZUxvbmdQcmVzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBv
aW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNo
TW92ZWRUb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNwZWN0
b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpibHVyRm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjphdXRvZmlsbExvZ2luQ3JlZGVudGlhbHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGb2N1c2VkRWxlbWVudFZhbHVlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvY3VzZWRFbGVtZW50U2VsZWN0ZWRJbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRlbnRT
aXplQ2F0ZWdvcnlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0Nv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3REcmFnU3RhcnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNG
b3JEcmFnU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29uY2x1
ZGVEcm9wKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJl
Y29nbml6ZXJXaWxsQmVnaW5BbmltYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJz
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0
cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwcGVyY2FzZVdvcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNhcGl0YWxpemVXb3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3VzZSk6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDgtMjgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIFdlYlBhZ2VQ
cm94eSBnZW5lcmF0ZSB0aGUgcGFnZSBpZGVudGlmaWVyIGJ5IGl0c2VsZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkYjcyY2ExNjU4
NzNlYjlhZjU1OGVhMjlmZTQyY2FmZWVkOTJkMDE4Li5kYWY0ZGEyMjc3Y2I0NjdmNzgyNDc4YTUw
NTY5NWFmNjUxZGEyOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYm
IGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQorUmVmPFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdl
SUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRl
bShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6IG1faXRlbVN0YXRl
KFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJ
RCkKICAgICAsIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyKG1faXRlbVN0YXRlLmlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgKaW5kZXggM2E0NWUxY2I3YTc5MjU4OWY4OTA0NDAwZWEzNTlkYWJiYjc1MjAz
Ny4uNmQ2N2VjMGIyZWFjMDE4NWFlZDk3MWU4OWQzOTQ4YmFkM2E3ZTMzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMjcsNyArMjcsNyBA
QAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ3LDcgKzQ3LDcgQEAg
Y2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRM
aXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CisgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAgIHZp
cnR1YWwgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKIAogICAgIHN0YXRpYyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBpdGVtRm9ySUQoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciYpOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX2l0
ZW1TdGF0ZS5pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
JiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQotICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAg
ICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQ
cm9jZXNzSWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRp
ZmllcikgeyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTg1LDEz
ICs4NSwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlbW92ZVN1c3BlbmRl
ZFBhZ2VGcm9tUHJvY2Vzc1Bvb2woKTsKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBt
X2l0ZW1TdGF0ZTsKICAgICBVUkwgbV9yZXNvdXJjZURpcmVjdG9yeVVSTDsKLSAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1f
cGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVu
dGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNjFhNjli
MWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVmMmM5MTE4MTNmNS4uMmY1ZjgwYzA3OTU1MzNkY2RkNDJj
N2FmOTNmYzYwYzdlZDcyM2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAg
ICAgIG1pbGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCk7CiAKICAgICBpZiAobWlsZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxl
c3RvbmVzKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9u
ZXMobWlsZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+d2ViUGFnZUlEKCkpOwogCiAgICAgd2ViUGFn
ZVByb3h5LT5zZXRMb2FkZXJDbGllbnQoV1RGTW92ZShsb2FkZXJDbGllbnQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDQ5Njc3ODhhMTA1N2ZhODgyYTBhMDFjOGRi
ZjUwMDJlOTIyNmVjMDAuLjExMDAzM2JhNmZhNGY3YzA2ZjBmNTM3MmEyZGE1NTM4NTcwMTQyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNzIwLDcgKzcyMCw3IEBAIC0g
KE5TVUludGVnZXIpcGFnZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlICopaGFu
ZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5p
dFdpdGhQYWdlSUQ6X3BhZ2UtPnBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtb
W1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6X3BhZ2UtPndl
YlBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZjQ0MTE0MzU1ZGIzZGI0NDFjMGRjNGU4YmE4NmQz
ZDdlOWFiOTIwLi5jYzdmNmM5NjI1ODc1ODUwY2E2YWMyYzA4NWI0NzdmNjZjYzhmMTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg3
Nyw3ICs4NzcsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbX2NvbnRlbnRWaWV3IF93ZWJWaWV3
RGVzdHJveWVkXTsKIAogICAgIGlmIChfcmVtb3RlT2JqZWN0UmVnaXN0cnkpCi0gICAgICAgIF9w
YWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIF9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIF9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIF9wYWdlLT53ZWJQYWdlSUQoKSk7CiAjZW5kaWYKIAogICAgIF9wYWdlLT5j
bG9zZSgpOwpAQCAtMjAxNSw3ICsyMDE1LDcgQEAgLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVl
Oihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWUKICAg
ICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2ViVmll
dyAiIDw8IF9wYWdlLT5wYWdlSUQoKSA8PCAiIF9kaWRDb21taXRMYXllclRyZWU6XSB0cmFuc2Fj
dGlvbklEICIgPDwgIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSA8PCAiIF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dL
V2ViVmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfZGlkQ29tbWl0TGF5ZXJUcmVl
Ol0gdHJhbnNhY3Rpb25JRCAiIDw8ICBsYXllclRyZWVUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklE
KCkgPDwgIiBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAiIDw8IChpbnQpX2R5bmFtaWNWaWV3
cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgYm9vbCBuZWVkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
cyA9IF9wYWdlLT51cGRhdGVMYXlvdXRWaWV3cG9ydFBhcmFtZXRlcnMobGF5ZXJUcmVlVHJhbnNh
Y3Rpb24pOwogCkBAIC0yOTA4LDcgKzI5MDgsNyBAQCAtICh2b2lkKV9kaXNwYXRjaFNldFZpZXdM
YXlvdXRTaXplOihXZWJDb3JlOjpGbG9hdFNpemUpdmlld0xheW91dFNpemUKICAgICBpZiAoX2xh
c3RTZW50Vmlld0xheW91dFNpemUgJiYgQ0dTaXplRXF1YWxUb1NpemUoX2xhc3RTZW50Vmlld0xh
eW91dFNpemUudmFsdWUoKSwgdmlld0xheW91dFNpemUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIg
PDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6XSAiIDw8
IHZpZXdMYXlvdXRTaXplIDw8ICIgY29udGVudFpvb21TY2FsZSAiIDw8IGNvbnRlbnRab29tU2Nh
bGUoc2VsZikpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAi
LVtXS1dlYlZpZXcgIiA8PCBfcGFnZS0+aWRlbnRpZmllcigpIDw8ICIgX2Rpc3BhdGNoU2V0Vmll
d0xheW91dFNpemU6XSAiIDw8IHZpZXdMYXlvdXRTaXplIDw8ICIgY29udGVudFpvb21TY2FsZSAi
IDw8IGNvbnRlbnRab29tU2NhbGUoc2VsZikpOwogICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZp
Z3VyYXRpb25WaWV3TGF5b3V0U2l6ZSh2aWV3TGF5b3V0U2l6ZSwgX3BhZ2UtPmxheW91dFNpemVT
Y2FsZUZhY3RvcigpLCBfcGFnZS0+bWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKCkpOwogICAg
IF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gdmlld0xheW91dFNpemU7CiB9CkBAIC0zMjEyLDcg
KzMyMTIsNyBAQCBzdGF0aWMgaW50MzJfdCBhY3RpdmVPcmllbnRhdGlvbihXS1dlYlZpZXcgKndl
YlZpZXcpCiAKIC0gKHZvaWQpX2NhbmNlbEFuaW1hdGVkUmVzaXplCiB7Ci0gICAgTE9HX1dJVEhf
U1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5w
YWdlSUQoKSA8PCAiIF9jYW5jZWxBbmltYXRlZFJlc2l6ZTpdICIgPDwgIiBfZHluYW1pY1ZpZXdw
b3J0VXBkYXRlTW9kZSAiIDw8IChpbnQpX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUpOworICAg
IExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS1dlYlZpZXcgIiA8
PCBfcGFnZS0+aWRlbnRpZmllcigpIDw8ICIgX2NhbmNlbEFuaW1hdGVkUmVzaXplOl0gIiA8PCAi
IF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBk
YXRlTW9kZSk7CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6
RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgLSAoX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKilfcmVt
b3RlT2JqZWN0UmVnaXN0cnkKICNlbHNlCiAgICAgaWYgKCFfcmVtb3RlT2JqZWN0UmVnaXN0cnkp
IHsKICAgICAgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gYWRvcHROUyhbW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IGFsbG9jXSBfaW5pdFdpdGhXZWJQYWdlUHJveHk6Kl9wYWdlXSk7Ci0gICAg
ICAgIF9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIF9wYWdl
LT5wYWdlSUQoKSwgW19yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0p
OworICAgICAgICBfcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBfcGFnZS0+d2ViUGFnZUlEKCksIFtfcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0
UmVnaXN0cnldKTsKICAgICB9CiAKICAgICByZXR1cm4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmdl
dCgpOwpAQCAtNDczNCw3ICs0NzM0LDcgQEAgLSAoX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKilf
cmVtb3RlT2JqZWN0UmVnaXN0cnkKIAogLSAoV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKilfaGFu
ZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5p
dFdpdGhQYWdlSUQ6X3BhZ2UtPnBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtb
W1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6X3BhZ2UtPndl
YlBhZ2VJRCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzKV9vYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzCkBAIC01MDE3LDcgKzUwMTcsNyBA
QCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0
ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpbwogI2VuZGlmCiAKICAgICBhdXRvIHdlYkNvbnRleHQg
PSBbdGV4dElucHV0Q29udGV4dCBfdGV4dElucHV0Q29udGV4dF07Ci0gICAgaWYgKHdlYkNvbnRl
eHQud2ViUGFnZUlkZW50aWZpZXIgIT0gX3BhZ2UtPnBhZ2VJRCgpKQorICAgIGlmICh3ZWJDb250
ZXh0LndlYlBhZ2VJZGVudGlmaWVyICE9IF9wYWdlLT53ZWJQYWdlSUQoKSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBw
cm92aWRlZCBfV0tUZXh0SW5wdXRDb250ZXh0IHdhcyBub3QgY3JlYXRlZCBieSB0aGlzIFdLV2Vi
Vmlldy4iXTsKIAogICAgIFtzZWxmIGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKQEAgLTYyMzMsNyAr
NjIzMyw3IEBAIC0gKHZvaWQpX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAo
Xikodm9pZCkpdXBkYXRlQmxvY2sKIAogLSAodm9pZClfZW5kQW5pbWF0ZWRSZXNpemUKIHsKLSAg
ICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJWaWV3ICIg
PDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX2VuZEFuaW1hdGVkUmVzaXplOl0gIiA8PCAiIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICIgPDwgKGludClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICItW1dLV2Vi
VmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfZW5kQW5pbWF0ZWRSZXNpemU6XSAi
IDw8ICIgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIiA8PCAoaW50KV9keW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlKTsKIAogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiB1cC10by1kYXRl
IGxheWVyIHRyZWUsIGltbWVkaWF0ZWx5IGNvbXBsZXRlCiAgICAgLy8gdGhlIHJlc2l6ZS4gT3Ro
ZXJ3aXNlLCB3ZSB3aWxsIGRlZmVyIGNvbXBsZXRpb24gdW50aWwgd2UgZG8uCkBAIC02MjQ0LDcg
KzYyNDQsNyBAQCAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6ZQogCiAtICh2b2lkKV9yZXNpemVX
aGlsZUhpZGluZ0NvbnRlbnRXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sK
IHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tXZWJW
aWV3ICIgPDwgX3BhZ2UtPnBhZ2VJRCgpIDw8ICIgX3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdp
dGhVcGRhdGVzOl0iKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIi1bV0tXZWJWaWV3ICIgPDwgX3BhZ2UtPmlkZW50aWZpZXIoKSA8PCAiIF9yZXNpemVXaGls
ZUhpZGluZ0NvbnRlbnRXaXRoVXBkYXRlczpdIik7CiAgICAgW3NlbGYgX2JlZ2luQW5pbWF0ZWRS
ZXNpemVXaXRoVXBkYXRlczp1cGRhdGVCbG9ja107CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlID09IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6UmVzaXppbmdX
aXRoQW5pbWF0aW9uKSB7CiAgICAgICAgIFtfY29udGVudFZpZXcgc2V0SGlkZGVuOllFU107CkBA
IC02MzQ1LDcgKzYzNDUsNyBAQCAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5W
aWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0aDooQ0dGbG9hdClpbQogCiAtICh2b2lkKV9v
dmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6KENHU2l6ZSltaW5p
bXVtTGF5b3V0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dTaXplKW1heGlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlCiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVS
ZWN0cywgc3RyZWFtIDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5wYWdlSUQoKSA8PCAiIF9v
dmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6IiA8PCBXZWJDb3Jl
OjpGbG9hdFNpemUobWluaW11bUxheW91dFNpemUpIDw8ICIgbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU6IiA8PCBXZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVVub2JzY3VyZWRTaXplT3Zl
cnJpZGUpIDw8ICJdIik7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFt
IDw8ICItW1dLV2ViVmlldyAiIDw8IF9wYWdlLT5pZGVudGlmaWVyKCkgPDwgIiBfb3ZlcnJpZGVM
YXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOiIgPDwgV2ViQ29yZTo6RmxvYXRT
aXplKG1pbmltdW1MYXlvdXRTaXplKSA8PCAiIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRl
OiIgPDwgV2ViQ29yZTo6RmxvYXRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKSA8
PCAiXSIpOwogCiAgICAgW3NlbGYgX3NldFZpZXdMYXlvdXRTaXplT3ZlcnJpZGU6bWluaW11bUxh
eW91dFNpemVdOwogICAgIFtzZWxmIF9zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTpt
YXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCBhYzdlNDlh
YjAyNTQzNzRlZWVjM2EzNGEyMmJlY2EyOTNlMDViMmU4Li4zZGQxMGU1ZjhkMmY0NmFlOTExNDMy
Yjc3NjNlMTkxNTgyZDYyNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTUwOSw3ICs1MDksNyBAQCAt
ICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmll
dyBjb21wbGV0aW9uSGFuZGxlcjoodgogICAgIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFp
bnMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnM7CiAgICAg
ICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CiAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMjJhODY0
NTkxZGY4NWI5YzhmOTIwYTU4YmY5YjkwOWU0NDY5ZjkyOS4uNjM1ZjdkYTVlNjk3YmMwNTVmZGVi
NzVjMWZkN2VlMThkZTdiNDRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE3NzUsNSArMTc3NSw1IEBAIHZv
aWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0V2ViVmlldyoKIAogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29udGV4dEdl
dFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQcm94eSog
cGFnZSkKIHsKLSAgICByZXR1cm4gcGFnZSA/IGNvbnRleHQtPnByaXYtPndlYlZpZXdzLmdldChw
YWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHBhZ2UgPyBj
b250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
IDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggM2E1MjE0MmVkNzU4MWIyMGVjMTYyNmMyYmY0NGZlY2Vh
NzBiNTQzOC4uM2ZiOTBjYjE4ODI0NjkxYTkzMDVhZjMyYzk5ZTQxMTkxYzJmYWJlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTI4MjMsNyArMjgyMyw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKIAotICAgIHJldHVybiBnZXRQYWdlKHdlYlZp
ZXcpLnBhZ2VJRCgpLnRvVUludDY0KCk7CisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldykuaWRl
bnRpZmllcigpLnRvVUludDY0KCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRl
eCBiZWFhODk4YmFkYjk2ZGFiOThiNjA5NTgxNjdlOTE4ODZiNzA5OWM0Li40N2Y5MTc0MDUyNDJl
YmEyNDY5NGVmNTA5ZGMxMDI1OTczNmNjNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAt
MTg3LDE2ICsxODcsMTYgQEAgV2ViUGFnZVByb3h5KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2Vi
UGFnZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlKQogCiBTdHJpbmcgV2ViQXV0
b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYlBhZ2VQcm94eShjb25zdCBXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSkKIHsKLSAgICBhdXRvIGl0ZXIgPSBtX3dlYlBhZ2VIYW5kbGVNYXAuZmlu
ZCh3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgIGF1dG8gaXRlciA9IG1fd2ViUGFnZUhhbmRs
ZU1hcC5maW5kKHdlYlBhZ2VQcm94eS5pZGVudGlmaWVyKCkpOwogICAgIGlmIChpdGVyICE9IG1f
d2ViUGFnZUhhbmRsZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogCiAg
ICAgU3RyaW5nIGhhbmRsZSA9ICJwYWdlLSIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCku
Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKIAotICAgIGF1dG8gZmlyc3RBZGRSZXN1bHQgPSBt
X3dlYlBhZ2VIYW5kbGVNYXAuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgaGFuZGxlKTsKKyAg
ICBhdXRvIGZpcnN0QWRkUmVzdWx0ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJv
eHkuaWRlbnRpZmllcigpLCBoYW5kbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZpcnN0QWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogCi0gICAgYXV0byBzZWNvbmRBZGRSZXN1bHQgPSBtX2hhbmRsZVdl
YlBhZ2VNYXAuYWRkKGhhbmRsZSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBhdXRvIHNl
Y29uZEFkZFJlc3VsdCA9IG1faGFuZGxlV2ViUGFnZU1hcC5hZGQoaGFuZGxlLCB3ZWJQYWdlUHJv
eHkuaWRlbnRpZmllcigpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzZWNvbmRBZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAKICAgICByZXR1cm4gaGFuZGxlOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmlu
ZyYgYnJvd3NpbmdDb250ZXh0CiAKICAgICBtX2NsaWVudC0+cmVxdWVzdFN3aXRjaFRvUGFnZSgq
dGhpcywgKnBhZ2UsIFtmcmFtZUlELCBwYWdlID0gbWFrZVJlZigqcGFnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgewogICAgICAgICBwYWdlLT5zZXRGb2N1cyh0cnVlKTsKLSAg
ICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OkZvY3VzRnJhbWUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQpLCAwKTsKKyAgICAgICAg
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OkZvY3VzRnJhbWUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQpLCAwKTsKIAogICAgICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9KTsKQEAgLTQ5NywxMCArNDk3LDEwIEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFn
ZShXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KHRpbWVv
dXQpOwogICAgIHN3aXRjaCAobG9hZFN0cmF0ZWd5KSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgIG1f
cGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2Uu
c2V0KHBhZ2UucGFnZUlEKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgbV9wZW5kaW5n
Tm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFn
ZS5pZGVudGlmaWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5OjpF
YWdlcjoKLSAgICAgICAgbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRD
YWxsYmFja3NQZXJQYWdlLnNldChwYWdlLnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgICAgIG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tz
UGVyUGFnZS5zZXQocGFnZS5pZGVudGlmaWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdl
TG9hZFN0cmF0ZWd5OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUy
OCw3ICs1MjgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlv
blRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmIGZyYQogICAgIH0KIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJh
Y2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpyZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGlt
ZW91dChIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQogewogICAgIEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcgdGltZW91dEVycm9yID0gU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05B
TUUoVGltZW91dCk7CiAgICAgZm9yIChhdXRvIGlkIDogY29weVRvVmVjdG9yKG1hcC5rZXlzKCkp
KSB7CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdh
dGlvbk9jY3VycmVkRm9yRnJhbWUoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUKICAgICAgICAg
Ly8gTmV3IHBhZ2UgbG9hZGVkLCBjbGVhciBmcmFtZSBoYW5kbGVzIHByZXZpb3VzbHkgY2FjaGVk
LgogICAgICAgICBtX2hhbmRsZVdlYkZyYW1lTWFwLmNsZWFyKCk7CiAgICAgICAgIG1fd2ViRnJh
bWVIYW5kbGVNYXAuY2xlYXIoKTsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRp
bmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
ZnJhbWUucGFnZSgpLT5wYWdlSUQoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBt
X3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdl
LnRha2UoZnJhbWUucGFnZSgpLT5pZGVudGlmaWVyKCkpKSB7CiAgICAgICAgICAgICBtX2xvYWRU
aW1lci5zdG9wKCk7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKSk7CiAgICAgICAgIH0KQEAgLTc3OCw3ICs3NzgsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0aW9uT2NjdXJyZWRGb3JGcmFtZShjb25zdCBXZWJGcmFt
ZVByb3h5JiBmcmFtZQogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZG9jdW1lbnRMb2FkZWRG
b3JGcmFtZShjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSkKIHsKICAgICBpZiAoZnJhbWUuaXNN
YWluRnJhbWUoKSkgewotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0VhZ2Vy
TmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS50YWtlKGZyYW1lLnBh
Z2UoKS0+cGFnZUlEKCkpKSB7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
RWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlLnRha2UoZnJh
bWUucGFnZSgpLT5pZGVudGlmaWVyKCkpKSB7CiAgICAgICAgICAgICBtX2xvYWRUaW1lci5zdG9w
KCk7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKSk7CiAgICAgICAgIH0KQEAgLTc5MiwxNCArNzkyLDE0IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmRvY3VtZW50TG9hZGVkRm9yRnJhbWUoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJh
bWUpCiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RvckZyb250ZW5kTG9hZGVk
KGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
cGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAg
ICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLmlkZW50aWZpZXIoKSkpCiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAj
aWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCi0gICAgaWYgKGF1dG8gY2Fs
bGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
cGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAg
ICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFn
ZSk7CkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW91c2VF
dmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjprZXlib2FyZEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBh
Z2VQcm94eSYgcGFnZSkKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNU
SU9OUykKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLmlkZW50aWZpZXIoKSkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKQEAgLTgyNCwxNyArODI0LDE3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5
JiBwYWdlKQogICAgIC8vIENhbmNlbCBwZW5kaW5nIGludGVyYWN0aW9ucyBvbiB0aGlzIHBhZ2Uu
IEJ5IHByb3ZpZGluZyBhbiBlcnJvciwgdGhpcyB3aWxsIGNhdXNlIHN1YnNlcXVlbnQKICAgICAv
LyBhY3Rpb25zIHRvIGJlIGFib3J0ZWQgYW5kIHRoZSBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnJ1bigpIGNhbGwgd2lsbCB1bndpbmQgYW5kIGZhaWwuCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9N
T1VTRV9JTlRFUkFDVElPTlMpCi0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQogICAgICAgICBjYWxsYmFjayhBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKLSAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tl
eWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIo
KSkpCiAgICAgICAgIGNhbGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUo
V2luZG93Tm90Rm91bmQpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9BQ1RJT05T
X0FQSSkKICAgICAvLyBUaGVuIHRlbGwgdGhlIGlucHV0IGRpc3BhdGNoZXIgdG8gY2FuY2VsIHNv
IHRpbWVycyBhcmUgc3RvcHBlZCwgYW5kIGxldCBpdCBnbyBvdXQgb2Ygc2NvcGUuCi0gICAgT3B0
aW9uYWw8UmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IGlucHV0RGlzcGF0Y2hlciA9IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpOworICAgIE9wdGlvbmFs
PFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIgPSBtX2lucHV0
RGlzcGF0Y2hlcnNCeVBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGlucHV0
RGlzcGF0Y2hlci5oYXNWYWx1ZSgpKQogICAgICAgICBpbnB1dERpc3BhdGNoZXIudmFsdWUoKS0+
Y2FuY2VsKCk7CiAjZW5kaWYKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGJyb3dzaW5n
Q29udAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRD
YWxsYmFja0lEKys7CiAgICAgbV9ldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRz
VmVjdG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja1RpbWVvdXQs
IGNhbGxiYWNrSUQpLCAwKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24ocGFnZS0+
d2ViUGFnZUlEKCksIGZyYW1lSUQsIGZ1bmN0aW9uLCBhcmd1bWVudHNWZWN0b3IsIGV4cGVjdHNJ
bXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNhbGxiYWNrVGltZW91dCwgY2FsbGJhY2tJRCksIDAp
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3Qg
U3RyaW5nJiBlcnJvclR5cGUpCkBAIC05ODcsMTcgKzk4NywxNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBTdHJpbmcmIGJyb3dzaW5n
Q29udGV4dAogICAgIH07CiAKICAgICBpZiAob3B0aW9uYWxOb2RlSGFuZGxlKSB7Ci0gICAgICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OlJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUocGFnZS0+cGFn
ZUlEKCksIGZyYW1lSUQsICpvcHRpb25hbE5vZGVIYW5kbGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsICpvcHRpb25hbE5vZGVIYW5kbGUp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAob3B0aW9uYWxOYW1lKSB7Ci0gICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQsICpvcHRpb25hbE5hbWUp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJl
c29sdmVDaGlsZEZyYW1lV2l0aE5hbWUocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsICpvcHRp
b25hbE5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxPcmRpbmFsKSB7Ci0gICAgICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OlJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQs
ICpvcHRpb25hbE9yZGluYWwpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OlJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwocGFnZS0+d2ViUGFn
ZUlEKCksIGZyYW1lSUQsICpvcHRpb25hbE9yZGluYWwpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhoYW5k
bGVGb3JXZWJGcmFtZUlEKGZyYW1lSUQpKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2Vzcygp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
UmVzb2x2ZVBhcmVudEZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlEKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVQYXJlbnRGcmFtZShw
YWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogc3RhdGljIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9D
b29yZGluYXRlU3lzdGVtKGNvbnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbVN0cmluZykKQEAg
LTEwODYsNyArMTA4Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuCiAgICAgfTsKIAogICAg
IGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9IG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCA/ICpvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQgOiBmYWxzZTsKLSAgICBwYWdl
LT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRCwg
bm9kZUhhbmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29vcmRpbmF0ZVN5c3RlbS52YWx1
ZSgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBhZ2UtPnByb2Nlc3MoKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkNv
bXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxl
LCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb29yZGluYXRlU3lzdGVtLnZhbHVlKCkpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnNlbGVjdE9wdGlvbkVsZW1lbnQoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgUmVm
PFNlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTExMDksNyArMTEw
OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1lbnQoY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kCiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3Vj
Y2VzcygpOwogICAgIH07CiAKLSAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50
KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlNlbGVjdE9wdGlvbkVsZW1lbnQocGFnZS0+
d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5kbGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmlzU2hvd2luZ0phdmFTY3Jp
cHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBib29sKiByZXN1bHQpCkBAIC0xMjc5LDcgKzEyNzks
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRBbGxDb29raWVzKGNvbnN0IFN0cmlu
ZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBSZQogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoYnVpbGRBcnJheUZvckNvb2tpZXMoY29va2llcykpOwogICAgIH07CiAKLSAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpHZXRDb29raWVzRm9yRnJhbWUocGFnZS0+cGFnZUlEKCksIFdURjo6bnVsbG9wdCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpHZXRDb29r
aWVzRm9yRnJhbWUocGFnZS0+d2ViUGFnZUlEKCksIFdURjo6bnVsbG9wdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRl
U2luZ2xlQ29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUsIFJlZjxEZWxldGVTaW5nbGVDb29raWVDYWxsYmFjaz4mJiBjYWxs
YmFjaykKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRl
bGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsCiAgICAg
ICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgIH07CiAKLSAgICBwYWdlLT5wcm9jZXNz
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpEZWxldGVDb29raWUocGFnZS0+cGFnZUlEKCksIFdURjo6bnVsbG9wdCwgY29va2llTmFtZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpEZWxldGVD
b29raWUocGFnZS0+d2ViUGFnZUlEKCksIFdURjo6bnVsbG9wdCwgY29va2llTmFtZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogc3RhdGljIFN0cmluZyBkb21haW5CeUFkZGlu
Z0RvdFByZWZpeElmTmVlZGVkKFN0cmluZyBkb21haW4pCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBi
b29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBj
b25zdAogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCiBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXImIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdl
YlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICByZXR1cm4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdl
LmVuc3VyZShwYWdlLnBhZ2VJRCgpLCBbJl0geworICAgIHJldHVybiBtX2lucHV0RGlzcGF0Y2hl
cnNCeVBhZ2UuZW5zdXJlKHBhZ2UuaWRlbnRpZmllcigpLCBbJl0gewogICAgICAgICByZXR1cm4g
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpjcmVhdGUocGFnZSwgKnRoaXMpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTE0NzgsNyArMTQ3OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQoV2ViUGFnZVByb3h5
JiBwYWdlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGluVmlld0NlbnRlclBvaW50LCBXVEY6
Om51bGxvcHQpOwogICAgIH07CiAKLSAgICBwYWdlLnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkNvbXB1dGVFbGVtZW50TGF5
b3V0KHBhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5kbGUsIGZhbHNlLCBDb29yZGluYXRl
U3lzdGVtOjpMYXlvdXRWaWV3cG9ydCksIFdURk1vdmUoZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXRI
YW5kbGVyKSk7CisgICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLndl
YlBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRpbmF0ZVN5c3RlbTo6
TGF5b3V0Vmlld3BvcnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVtZW50TGF5b3V0SGFuZGxlcikp
OwogfQogCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCkBAIC0xNDk4
LDcgKzE0OTgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludAogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXJyb3IpOwogICAgICAgICB9OwogCi0gICAgICAgIGF1dG8mIGNhbGxiYWNr
SW5NYXAgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmFkZChw
YWdlLT5wYWdlSUQoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBhdXRvJiBj
YWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFn
ZS5hZGQocGFnZS0+aWRlbnRpZmllcigpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
ICAgIGlmIChjYWxsYmFja0luTWFwKQogICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJhY2tJ
bk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwpAQCAtMTUwNyw3ICsx
NTA3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVNb3VzZUludGVyYWN0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKIAogICAgICAgICAvLyBJZiB0aGUgZXZl
bnQgZG9lcyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkg
bm90IGhhdmUgYmVlbiBkZWxpdmVyZWQuCiAgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFw
YWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7Ci0gICAgICAgICAgICBhdXRvIGNhbGxi
YWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdl
LnRha2UocGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2Vs
ID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2Ut
PmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKFdURjo6bnVsbG9w
dCk7CiAgICAgICAgIH0KIApAQCAtMTU0Myw3ICsxNTQzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwg
S2V5Ym8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgIH07CiAKLSAgICBh
dXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS5hZGQocGFnZS5wYWdlSUQoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIGF1dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLmFkZChwYWdlLmlkZW50aWZpZXIoKSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwogICAgIGlmIChjYWxsYmFja0luTWFwKQogICAgICAgICBjYWxsYmFja0luTWFwKEFV
VE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkpOwogICAgIGNhbGxiYWNr
SW5NYXAgPSBXVEZNb3ZlKGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKQEAgLTE1NTMs
NyArMTU1Myw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvCiAgICAgLy8gSWYgdGhlIGludGVy
YWN0aW9uIGRvZXMgbm90IGdlbmVyYXRlIGFueSBldmVudHMsIHRoZW4gZG8gbm90IHdhaXQgZm9y
IGV2ZW50cyB0byBiZSBmbHVzaGVkLgogICAgIC8vIFRoaXMgaGFwcGVucyBpbiBzb21lIGNvcm5l
ciBjYXNlcyBvbiBtYWNPUywgc3VjaCBhcyByZWxlYXNpbmcgYSBrZXkgd2hpbGUgQ29tbWFuZCBp
cyBwcmVzc2VkLgogICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdlLmlzUHJvY2Vzc2luZ0tl
eWJvYXJkRXZlbnRzKCkpIHsKLSAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5k
aW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpOworICAgICAgICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdLZXlib2FyZEV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpOwogICAg
ICAgICBjYWxsYmFja1RvQ2FuY2VsKFdURjo6bnVsbG9wdCk7CiAgICAgfQogCkBAIC0xNjM3LDcg
KzE2MzcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFj
dGlvbihjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgfQogICAgICAg
ICB9OwogCi0gICAgICAgIGF1dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmFkZChwYWdlLT5wYWdlSUQoKSwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+aWRlbnRpZmllcigpLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlmIChjYWxsYmFja0luTWFwKQogICAg
ICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJhY2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNG
bHVzaGVkQ2FsbGJhY2spOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNv
bnN0IEoKICAgICAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmUtVzNDIGRyaXZlciBp
bXBsZW1lbnRhdGlvbnMsIGRvbid0IG1ha2UgdGhpcyBhIGhhcmQgZXJyb3I7IGp1c3QgZG8gbm90
aGluZyBzaWxlbnRseS4KICAgICAgICAgLy8gSW4gVzNDLW9ubHkgY29kZSBwYXRocywgd2UgY2Fu
IHJlamVjdCBhbnkgcG9pbnRlciBhY3Rpb25zIHdob3NlIGNvb3JkaW5hdGVzIGFyZSBvdXRzaWRl
IHRoZSB2aWV3cG9ydCByZWN0LgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS0+
aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewotICAgICAgICAgICAgYXV0byBjYWxsYmFja1Rv
Q2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtl
KHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1f
cGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVu
dGlmaWVyKCkpOwogICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOwog
ICAgICAgICB9CiAgICAgfSk7CkBAIC0xNzI3LDcgKzE3MjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgU3RyaW5nJiBoYW5k
bGUsIGNvbgogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfTsKIAot
ICAgIGF1dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLmFkZChwYWdlLT5wYWdlSUQoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOworICAgIGF1dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlLmFkZChwYWdlLT5pZGVudGlmaWVyKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKICAgICAgICAgY2FsbGJhY2tJ
bk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICBj
YWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CkBA
IC0xOTc4LDcgKzE5NzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVu
c2hvdChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcAogICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX25leHRTY3JlZW5zaG90Q2FsbGJhY2tJRCsrOwogICAgIG1fc2NyZWVu
c2hvdENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAg
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OlRha2VTY3JlZW5zaG90KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCBjbGlwVG9WaWV3cG9ydCwgY2FsbGJhY2tJRCksIDApOworICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpUYWtlU2NyZWVuc2hvdChwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIGNhbGxiYWNrSUQpLCAwKTsK
IH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QodWludDY0
X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhh
bmRsZSwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggZWI0
YmQyYmE1M2M1MzdhY2JlYzI3ODI5N2U5NWQ1N2UxYTg1N2JjYi4uZGNmOWY0ZDJlYjU4YzcyODY1
NjMyZTBlMDk5ZmY1NzJiZjk4ZWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsOCArMzQs
OCBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3YWl0
Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAgdm9pZCB3YWl0
Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAgICB2b2lkIHJl
c3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZp
Z2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsK
ICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGlt
ZW91dChIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGltZXJG
aXJlZCgpOwogCkBAIC0yODIsMjIgKzI4MiwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0
b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+
IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOworICAgIEhhc2hN
YXA8U3RyaW5nLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAK
ICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYkZyYW1l
SGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4g
bV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFn
ZTsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0
aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENh
bGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5n
RWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAgIEhh
c2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlckZyYW1lOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNw
ZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1f
cGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9L
RVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3Bl
bmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMp
Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRp
b25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNo
ZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRp
bmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50
NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzIxLDcg
KzMyMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMg
dGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAgIC8v
IHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBz
dGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRT
b3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQ
YWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmPFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJhY2sg
b2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJB
dXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCmluZGV4IGRmMjZhY2RiMWNhMjEzMGJm
MDcwNGI4YjIyYzUxYTY0MTJlYzZhMDkuLjUwZjQyN2VlMDcxY2IxNWYxNmUwODUyOGI4YWIyNGU1
MDg3NmVhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
bWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCkBAIC01MCw5ICs1
MCw5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RCcm93c2luZ0NvbnRleHQo
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IGJvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBB
U1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBp
ZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2UudGFr
ZShwYWdlLT5wYWdlSUQoKSkpCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdJbnNw
ZWN0b3JDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS0+aWRlbnRpZmllcigpKSkKICAgICAgICAg
Y2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKFRp
bWVvdXQpKTsKLSAgICBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlLnNldChwYWdl
LT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fcGVuZGluZ0luc3BlY3RvckNh
bGxiYWNrc1BlclBhZ2Uuc2V0KHBhZ2UtPmlkZW50aWZpZXIoKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogCiAgICAgLy8gRG9uJ3QgYnJpbmcgdGhlIGluc3BlY3RvciB0byBmcm9udCBzaW5jZSB0aGlz
IG1heSBiZSBkb25lIGF1dG9tYXRpY2FsbHkuCiAgICAgLy8gV2UganVzdCB3YW50IGl0IGxvYWRl
ZCBzbyBpdCBjYW4gcGF1c2UgaWYgYSBicmVha3BvaW50IGlzIGhpdCBkdXJpbmcgYSBjb21tYW5k
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IGU1OWJlOTFhNDIwYWY1MGY1M2Q1MmE2MDlm
MDlhMjk4OTA4ZGZmMTEuLjkyY2YyMDhhYTBiYmU1YzE1YTYzOWM4ZDI5NzU1ZjA0MjM4MDgwNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBSZWY8UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQYWdlUHJveAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIDogbV9wYWdlKCZwYWdlKQog
ewotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSgpCkBAIC0zMTQsNyAr
MzE0LDcgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp+UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KCkKIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmludmFsaWRh
dGUoKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7
CiAKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4dE1hcCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
ci5tbQppbmRleCBmMDIwODNkY2VjNzMzMTgzZjQ2YzUzZWY2M2FiMTRhYzE0NWRiODAxLi5hZDRi
NjFlYzM5NDhiMDQ2ZjczM2RjYmU5ODdmYmFkOTRmMGUzMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KQEAg
LTQ0LDcgKzQ0LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZXBsYWNlUmVsYXRp
dmVUb1NlbGVjdGlvbihOU0F0dHJpYnV0ZWRTdHJpbmcgKmFubm8KICAgICBpZiAoIW1fcGFnZS5o
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJl
bGF0aXZlVG9TZWxlY3Rpb24oYW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0
aCwgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3Ro
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24o
YW5ub3RhdGVkU3RyaW5nLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCwgcmVsYXRpdmVSZXBsYWNl
bWVudExvY2F0aW9uLCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKSwgbV9wYWdlLndlYlBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyOjpyZW1vdmVBbm5vdGF0aW9u
UmVsYXRpdmVUb1NlbGVjdGlvbihOU1N0cmluZyAqYW5ub3RhdGlvbk5hbWUsIGludDY0X3Qgc2Vs
ZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgpCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgVGV4
dENoZWNraW5nQ29udHJvbGxlcjo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24o
TlNTdHJpbmcgKmFubm90CiAgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0
aW9uKGFubm90YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpUZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHk6OlJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9uKGFubm90
YXRpb25OYW1lLCBzZWxlY3Rpb25PZmZzZXQsIGxlbmd0aCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4
IGY3OGE4MDRiMjM1YzY4NWFlNGUzZDQyZjAwNmY5N2UyYjhiMWQ3YzMuLjdhYjM0ZTBiZDQ5NTIx
ODM2ZTFhZThlMTEzNjdhNTQ2YTYxYTEwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAg
LTMyNSw3ICszMjUsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYQogICAgIDogbV9wYWdlKCZw
YWdlKQogICAgICwgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAK
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eSgpCkBAIC0zMzcsNyArMzM3LDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUoKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIG1f
cGFnZSA9IG51bGxwdHI7CiAKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4
dE1hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCmluZGV4IDhhMzk0YWZlNzM4ZWM0ZmM3ZWNjMjE4ZDU3MjdmNTdkYTczN2QwNmQu
LjJhMjhiMTU5MjhkNjhlNzRiYjk1ZDA2ZjllYzE2NWUyN2MyZTI1NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yMTAs
NyArMjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRM
b2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JgogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBt
X3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihwb2ludCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9u
KCkKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25h
cnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpAQCAtMjQ4LDEyICsyNDgsMTIgQEAgY29uc3QgU3RyaW5n
JiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYg
bWVzc2FnZVJlY2VpdmVyKQogewotICAgIHByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVz
c2FnZVJlY2VpdmVyTmFtZSwgbV9wYWdlSUQsIG1lc3NhZ2VSZWNlaXZlcik7CisgICAgcHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3dlYlBhZ2VJRCwg
bWVzc2FnZVJlY2VpdmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGlu
YXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNv
bnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewotICAgIHBy
b2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV9wYWdl
SUQpOworICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgbV93ZWJQYWdlSUQpOwogfQogCiAjZW5kaWYKQEAgLTI4NSwxNyArMjg1LDE3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZXN1bWVTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSYpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzcGVha2luZ0Vycm9y
T2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogewot
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTcGVha2luZ0Vycm9yT2NjdXJy
ZWQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
cGVha2luZ0Vycm9yT2NjdXJyZWQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Ym91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnkgc3BlZWNoQm91bmRhcnksIHVu
c2lnbmVkIGNoYXJJbmRleCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Qm91bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5ID09IFdlYkNvcmU6OlNwZWVj
aEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCksIG1fcGFnZUlEKTsKKyAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91bmRhcnlFdmVudE9jY3VycmVk
KHNwZWVjaEJvdW5kYXJ5ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91
bmRhcnksIGNoYXJJbmRleCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnZvaWNlc0RpZENoYW5nZSgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlZvaWNlc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlZvaWNlc0RpZENoYW5nZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggOGRmNGRhN2IzMjA4MDk0NmRmNzFjOTI4MjE2
NTNmNmVhOTQwNzU3ZC4uZjQwNDJmZTcwZGY2MTY2NGFmODljZjBhNDNlOTY5ZmU2MzU0NmI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEz
NjIsNyArMTM2Miw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJ
bXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6fldl
YlZpZXdJbXBsKCkKIHsKICAgICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAgICAgW21fcmVt
b3RlT2JqZWN0UmVnaXN0cnkgX2ludmFsaWRhdGVdOwogICAgICAgICBtX3JlbW90ZU9iamVjdFJl
Z2lzdHJ5ID0gbmlsOwogICAgIH0KQEAgLTE5NzksMTMgKzE5NzksMTMgQEAgZmxvYXQgV2ViVmll
d0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3
SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRl
LCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0
aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRl
LCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0
aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZp
ZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0
aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRl
LCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRo
aXMsIG1fcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNTMsNyAr
MjA1Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygp
CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsK
LSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRv
d0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUp
IHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIyMTYsMTkgKzIyMTYsMTkg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkKIAog
dm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRl
LCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUp
IHZpZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
ICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFu
Z2UoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxs
dSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0
KCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkg
YWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMzgyMyw3ICszODIzLDcgQEAgX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgKldlYlZpZXdJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB7CiAg
ICAgaWYgKCFtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7CiAgICAgICAgIG1fcmVtb3RlT2JqZWN0
UmVnaXN0cnkgPSBhZG9wdE5TKFtbX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2NdIF9pbml0
V2l0aFdlYlBhZ2VQcm94eTptX3BhZ2VdKTsKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lz
dHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIFttX3JlbW90ZU9i
amVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk7CisgICAgICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVP
YmplY3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPndlYlBhZ2VJRCgp
LCBbbV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0K
IAogICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjYTc2ODdmNmI1MjEyMWRjNGFiMzgwODM4
Y2U5ZTNlNDM2ZTUzNjQ4Li4xZTgwZmY1MjgxNThjNjVhZjZjN2M0MmQ1MDQxZDJlMzJhNmE1NGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFC
TEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24oZ2VvbG9jYXRpb25J
RCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNp
b24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1NDZiYTRk
NTQ1ZTBjMTU5MDg5YTNiMWY0NTVhZDUuLjYxYjhmMzZlZmE3NTFmMWM4OGQ5MmJhMWFkY2QxNWVj
YTYxNDU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRh
cmdldFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJn
ZXRQcm94eS5jcHAKQEAgLTUwLDE5ICs1MCwxOSBAQCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6SW5z
cGVjdG9yVGFyZ2V0UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRhcgog
dm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCYgY2hhbm5lbCkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29ubmVjdElu
c3BlY3RvcihpZGVudGlmaWVyKCksIGNoYW5uZWwuY29ubmVjdGlvblR5cGUoKSksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCksIGNoYW5uZWwuY29ubmVjdGlvblR5cGUo
KSksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6
OmRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmKQogewogICAgIGlmIChtX3Bh
Z2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaXNjb25uZWN0SW5zcGVjdG9yKGlkZW50aWZpZXIoKSksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2Uud2ViUGFnZUlE
KCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5u
aW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNz
YWdlKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IGY4NzYxYjFmM2Y0ZGI0ZWU4MjljNmNkZTk5N2I4NDAyMmJjNTlkNDEu
Ljc0NDM5ODgzN2U1ODg1OTMzMjFjM2RkNjMyNGJlZmFlY2UzODM2Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byBy
ZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90
aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAg
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5vdGlmaWNhdGlvbklELCBh
bGxvd2VkKSwgcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH0pOwogICAgIG1fcGVuZGluZ1JlcXVl
c3RzLmFkZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CiAgICAgcmV0dXJuIHJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDdhM2U5
YjIzYmExMjY1MTk4YjYwZWRkZjZjNGRkOTg2ZmNkMjAyOS4uNzYwNjMxYzQ5MGY2NDMzZjM0MWE0
M2JkODgxZDU0NWY0YTliNzNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAg
IHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRp
b25JRCgpOwogICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUo
dGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2Jh
bE5vdGlmaWNhdGlvbklEKTsKLSAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
PiBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwg
cGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6
bWFrZV9wYWlyKHdlYlBhZ2UtPmlkZW50aWZpZXIoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAg
ICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlm
aWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBh
aXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uY29w
eVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdl
dCgpKTsKQEAgLTEwNSwxMyArMTA1LDEzIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiAKIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKFdlYk5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1ha2VfcGFpcih3
ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKSkuc2Vjb25kLmdldCgpKQorICAg
IGlmIChXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQo
c3RkOjptYWtlX3BhaXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQp
KS5zZWNvbmQuZ2V0KCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqbm90aWZpY2F0aW9u
KTsKIH0KICAgICAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95
Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklEKQogewotICAgIGF1dG8gZ2xvYmFsSUROb3RpZmljYXRpb25QYWlyID0gbV9ub3RpZmlj
YXRpb25zLnRha2Uoc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmlj
YXRpb25JRCkpOworICAgIGF1dG8gZ2xvYmFsSUROb3RpZmljYXRpb25QYWlyID0gbV9ub3RpZmlj
YXRpb25zLnRha2Uoc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90
aWZpY2F0aW9uSUQpKTsKICAgICBpZiAodWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBn
bG9iYWxJRE5vdGlmaWNhdGlvblBhaXIuZmlyc3QpIHsKICAgICAgICAgV2ViTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24gPSBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIuc2Vjb25kLmdldCgpOwog
ICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUoZ2xvYmFsTm90aWZpY2F0aW9u
SUQpOwpAQCAtMTE5LDEyICsxMTksMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0K
IH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mKQorc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdl
SUQ7CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgUGFnZUlkZW50aWZp
ZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3Rp
ZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2goV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICByZXR1cm4gcGFnZUlEID09
IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFn
ZU5vdGlmaWNhdGlvbklEKTsKIH0KQEAgLTE0MSwxNSArMTQxLDE1IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCBjb25zCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBw
YWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5j
dGlvbikKIHsKLSAgICBhdXRvIHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAg
IGF1dG8gdGFyZ2V0UGFnZVByb3h5SUQgPSB3ZWJQYWdlLT5pZGVudGlmaWVyKCk7CiAKICAgICBW
ZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3RpZmlj
YXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7
CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9u
b3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgYXV0byB3ZWJQ
YWdlSUQgPSBpdC0+a2V5LmZpcnN0OworICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0gaXQtPmtl
eS5maXJzdDsKICAgICAgICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQtPmtleS5z
ZWNvbmQ7Ci0gICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24od2ViUGFnZUlELCBwYWdlTm90aWZp
Y2F0aW9uSUQsIHRhcmdldFBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCisgICAgICAgIGlm
ICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRCwgdGFyZ2V0
UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuZmly
c3Q7CkBAIC0xNzAsOCArMTcwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAo
aXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gd2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0OwotICAgIFdlYlBhZ2VQcm94eSog
d2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlSUQpOworICAgIGF1dG8q
IHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0KTsKICAg
ICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTg1LDggKzE4NCw3IEBAIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKHVpbnQ2NF90IGdsb2JhbE5vCiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9u
TWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byB3ZWJQYWdlSUQgPSBp
dC0+dmFsdWUuZmlyc3Q7Ci0gICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CisgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCAx
MTU3ODFlNDMzM2M4NTY4NGZiY2E1Y2E4NDE3NjU2NDRhOGM3MTQxLi40OGFiNThlODFjZjdkNmYz
NWNjYTYyMzU1MzQ4M2U3YmUzNDI1MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L05vdGlmaWNhdGlvbkNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlw
ZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVk
UGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmls
dGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOwogICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAog
ICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04OSw5ICs4OSw5IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4gbV9wcm92aWRl
cjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9j
ZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
OworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNv
bXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9u
IElEOyB2YWx1ZSBwYWlyIGNvbXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQg
bm90aWZpY2F0aW9uIG9iamVjdAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlm
aWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8V2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxX
ZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKaW5kZXggZDdmMGMzYzk1MDI3NGRlOGUwYTk1Y2I4NWFkYzI3NjU1OGY3MmQ5My4uMGMw
MzQwNjkwNDEwNmUyNTdkNmYzYThlMmY4MGI3ZWVlMTkyMTM1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQsNiArNTQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zp
c2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBzdXNwZW5kZWRQ
YWdlLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkK
KyAgICAsIG1fd2ViUGFnZUlEKHBhZ2Uud2ViUGFnZUlEKCkpCiAgICAgLCBtX3Byb2Nlc3MoV1RG
TW92ZShwcm9jZXNzKSkKICAgICAsIG1fbmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCkKICAgICAs
IG1faXNTZXJ2ZXJSZWRpcmVjdChpc1NlcnZlclJlZGlyZWN0KQpAQCAtNjMsMTMgKzY0LDEzIEBA
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkm
IHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFn
ZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBz
dXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9u
SUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEID0gJSIgUFJJ
dTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIg
c3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2Vi
UGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAK
LSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1f
cHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFk
ZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmICgmbV9wcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9w
YWdlLnBhZ2VJRCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9w
YWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAg
Ly8gSWYgd2UgYXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUgV2Vi
UHJvY2VzcycgV2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAvLyBXZWJQYWdlUHJveHk6
OmRpZENyZWF0ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFsaXplIG1f
bWFpbkZyYW1lLiBJbiBzdWNoCkBAIC05MywxMSArOTQsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgm
bV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkp
OworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURh
dGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KSk7CiAKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlE
KCkpOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZp
c2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlKCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRM
aW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5pZGVudGlmaWVy
KCkpOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNz
LmNvcHlSZWYoKV0gewogICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKCk7CkBAIC0xMDYs
NyArMTA3LDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgp
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewot
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vz
c0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJwcm9jZXNzRGlkVGVybWluYXRlOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRl
KCk7CiB9CiAKQEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpj
YW5jZWwoKQogICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlBy
b2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRv
VUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
Y2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBw
YWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBBU1NF
UlQobV9tYWluRnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9y
KG1fcmVxdWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpU
eXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMTM2LDIwICsxMzcsMjAgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0g
bV9wYWdlLmNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKTsKICAg
ICBwYXJhbWV0ZXJzLmlzUHJvY2Vzc1N3YXAgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZShtX3BhZ2UucGFnZUlEKCksIHBhcmFt
ZXRlcnMpLCAwKTsKLSAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFn
ZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBwYXJh
bWV0ZXJzKSwgMCk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcihtX3Bh
Z2UudmlzaXRlZExpbmtTdG9yZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxv
YWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBw
YWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1f
cGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAi
IHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBt
X3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lk
ZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9j
ZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAg
IC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVu
dGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQg
aXRlbSB0byBoYXBwZW4gaW4gdGhlCkBAIC0xNjIsNyArMTYzLDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0
ZW0sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3
YXJkSXRlbTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0Zv
cndhcmRJdGVtOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0
ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewog
ICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xNzEs
OCArMTcyLDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1v
dmUoaXRlbVN0YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRp
b25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5
cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZN
b3ZlKGl0ZW1TdGF0ZXMpKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUo
KSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xODcsNyArMTg4LDcgQEAgaW5saW5lIGJvb2wg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZy
YW1lSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2Vi
UGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2
NCgpKTsKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2Vi
RnJhbWVQcm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMjUsNyArMjI2LDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwg
bmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0
KCksIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlUHJveHlJRCA9ICUi
IFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25J
RCk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3By
b3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAtMjQ1LDcgKzI0Niw3IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25J
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5h
dmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIg
UFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
bmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCks
IG1fd2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklE
KTsKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3By
b3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjYxLDkgKzI2Miw5IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25J
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2Fk
Rm9yRnJhbWU6IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIGZyYW1l
SUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9
IHsgfTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRl
ZCA9IHRydWU7CiAgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVM
b2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRI
YXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGUz
ZWU2ODdmYTdkODE3NTBiNThmZWRhNTg0NTgzZmQxZjFlMmQ2NC4uNWI0YzljZjJlZGI3MmM0Yzky
Y2U1MWNiMmRiMjNhZmM2ZWVkNzgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIHZhbGlkYXRlSW5wdXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25h
bDx1aW50NjRfdD4mIG5hdmlnYXRpb25JRCA9IFdURjo6bnVsbG9wdCk7CiAKICAgICBXZWJQYWdl
UHJveHkmIG1fcGFnZTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBhZ2VJRDsK
ICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJv
eHk+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDRhYTM0NDQ5MGQ4ZTMxOTk5ODQwN2QzY2YyYWU0
N2QwM2U2NzJkMzMuLjU3N2M0MzQyMzg4MjkzYjAwMGMxYzYxYTk2ZDJjOTI3ZGE0MzA1YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bG9h
ZChjb25zdCBTdHJpbmcmIGRlYnVnZ2FibGVUeXBlLCBjb25zdCBTdHJpbmcmIGIKICAgICBtX2Rl
YnVnZ2FibGVUeXBlID0gZGVidWdnYWJsZVR5cGU7CiAgICAgbV9iYWNrZW5kQ29tbWFuZHNVUkwg
PSBiYWNrZW5kQ29tbWFuZHNVUkw7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlhbGl6ZShkZWJ1Z2dhYmxl
VHlwZSwgYmFja2VuZENvbW1hbmRzVVJMKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5z
cGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tlbmRDb21tYW5kc1VSTCks
IG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+bG9h
ZFJlcXVlc3QoVVJMKFVSTCgpLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgp
KSk7CiB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
c2hvdygpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9G
cm9udGVuZChtZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6
OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdl
SUQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xv
c2UoKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICB0cmFja0luc3BlY3RvclBhZ2UobV9p
bnNwZWN0b3JQYWdlLCBudWxscHRyKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNw
ZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTE2Niw3ICsxNjYsNyBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRv
dygpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIHVu
dHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IGM2NGQ3ZWYxOWJkMGRlNzEx
Njk2OTk5MmMwNzY3MWU2MWQ4MjgzZWQuLjc5MjRlNGVmM2RjMjY0MGVkOGM0YjcwOWYzNzZkZjM4
ZTAxZWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmNwcApAQCAtODAsNiArODAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmlu
Z1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogCiBTdXNw
ZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlE
LCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3dlYlBhZ2VJRChwYWdlLndlYlBhZ2VJ
RCgpKQogICAgICwgbV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAgICAgLCBtX21haW5GcmFt
ZUlEKG1haW5GcmFtZUlEKQogICAgICwgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmlu
Z0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQpAQCAtODksMTAgKzkwLDEwIEBAIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdl
YlByb2Nlc3NQcm94eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3Bl
bmRlZFBhZ2VDb3VudCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgp
LCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwog
CiAgICAgbV9zdXNwZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5zaW9uVGlt
ZW91dCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3Bl
bmRlZCh0cnVlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIFN1
c3BlbmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTE0LDcg
QEAgU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgp
OwogCiAgICAgaWYgKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVu
ZGluZykKLSAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAogICAgIC8vIFdl
IGNhbGwgbWF5YmVTaHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBTdXNwZW5kZWRQ
YWdlIGlzIGN1cnJlbnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sCiAg
ICAgLy8gYW5kIHdlIHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vzc1Bvb2wgbWV0
aG9kcy4KQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNw
ZW5kKCkKICAgICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpT
dXNwZW5kZWQpOwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJl
c3VtZWQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3Bl
bmRlZChmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNjAsNyBAQCB2b2lk
IFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBt
X2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFn
ZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTIwMyw3
ICsyMDQsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1
c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRva2Vu
ID0gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAg
ICAgaWYgKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNw
ZW5kKQogICAgICAgICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBA
IHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5
Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIs
IGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9w
YWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVn
U3RyaW5nKCIoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBX
ZWJQYWdlIElEICIsIG1fd2ViUGFnZUlELnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRl
ICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApp
bmRleCA5MTY1M2NjNzhlYTAwODY2MGIxNGUzMzUwNTUzYWE4OWU3M2QxOTEwLi43Yjk1YjZlZGU4
YTM5YTcwOTY3YzRmMzI2NzdlMmZmOGU3MTJiMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtNzQsNiArNzQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICBXZWJQYWdl
UHJveHkmIG1fcGFnZTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBhZ2VJRDsK
ICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIG1fbWFpbkZyYW1lSUQ7CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAwMjM4N2Q0M2JjY2FjZGU1
YmExNDhmNTA5NTA3YTRmYzVhZjhlZjZiLi5iNjYyMGRjMWYwOTFjM2IyYzg0ZDhiNjg4NDlkNjFl
NjRjOWM0MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNDUs
NyArMTQ1LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
Y2FwdHVyZURldmljZXNDaGFuZ2VkKFBlcm1pc3Npb25JbmYKICAgICBpZiAoIW1fcGFnZS5oYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2FwdHVyZURldmljZXNDaGFuZ2VkKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAjZW5kaWYK
IApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmRlbnlSZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1CiAgICAgICAgIG1f
ZGVuaWVkUmVxdWVzdHMuYXBwZW5kKERlbmllZFJlcXVlc3QgeyByZXF1ZXN0Lm1haW5GcmFtZUlE
KCksIHJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LnRv
cExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0
dXJlKCksIHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKSwgcmVxdWVzdC5yZXF1aXJlc0Rp
c3BsYXlDYXB0dXJlKCkgfSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIG1fcGFn
ZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzRGVu
aWVkKHJlcXVlc3QudXNlck1lZGlhSUQoKSwgdG9XZWJDb3JlKHJlYXNvbiksIGludmFsaWRDb25z
dHJhaW50KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZChyZXF1ZXN0LnVzZXJNZWRp
YUlEKCksIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCksIG1fcGFnZS53ZWJQ
YWdlSUQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwogICAgIFVOVVNFRF9Q
QVJBTShpbnZhbGlkQ29uc3RyYWludCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1ZXN0KFVz
ZXJNZWRpYVBlcm0KICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgLS1tX2hhc1BlbmRpbmdDYXB0dXJlOwotICAgIH0sIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgfSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIAogICAgIHByb2Nlc3NOZXh0VXNlck1lZGlh
UmVxdWVzdElmTmVlZGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCAxZTkxYWJiNmVmZGQwY2Q1OTZmOTRkYWNlOGY3
MjY4ZTMxODRhNWNmLi5iNDgyNzcyOWQ3MjQyMTUyZWI0NzUxNmI4MGU0ZGEwNzVhZmI3NTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAKQEAgLTY2LDEwICs2NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2
ZW50UmF0aW9Gb3JTd2lwZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90
UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3Rh
dGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3
R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8V2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJv
bGxlcnNGb3JBbGxQYWdlcygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0aGUg
YXNzb2NpYXRlZCBwYWdlIElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9s
bGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsK
ICAgICByZXR1cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtODYsMTQg
Kzg2LDE0IEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdl
YlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgIGlmICh3ZWJQYWdlUHJveHkuaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgY29ubmVjdFRvUHJvY2VzcygpOwogCi0gICAgdmlld0dlc3R1
cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhp
cyk7CisgICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQ
cm94eS5pZGVudGlmaWVyKCksIHRoaXMpOwogfQogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5W
aWV3R2VzdHVyZUNvbnRyb2xsZXIoKQogewogICAgIHBsYXRmb3JtVGVhcmRvd24oKTsKIAotICAg
IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLnJlbW92ZShtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7CisgICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkucmVt
b3ZlKG1fd2ViUGFnZVByb3h5LmlkZW50aWZpZXIoKSk7CiAKICAgICBkaXNjb25uZWN0RnJvbVBy
b2Nlc3MoKTsKIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyb21Qcm9jZXNzKCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nl
c3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBh
Z2VJRCgpKTsKICAgICBtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gZmFsc2U7CiB9CiAKQEAgLTEx
MiwxMSArMTEyLDExIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9j
ZXNzKCkKICAgICBpZiAobV9pc0Nvbm5lY3RlZFRvUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiAgICAg
bV9pc0Nvbm5lY3RlZFRvUHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxl
ciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkK
K1ZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVy
Rm9yR2VzdHVyZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xs
ZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQp
OwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVy
c0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRp
bmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmll
cigpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAg
bV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQs
IGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1
dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1
cmVJRCkpCkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJl
cXVlc3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvJiBwcm9j
ZXNzID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IG1fd2ViUGFnZVBy
b3h5LnByb3Zpc2lvbmFsUGFnZVByb3h5KCktPnByb2Nlc3MoKSA6IG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKTsKICAgICBhdXRvIHRocmVzaG9sZCA9IG1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5y
ZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5k
ZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94
eS53ZWJQYWdlSUQoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCA3Y2Q2ZThmZTA5MTI0YjliNGVkOGRmMDYw
MjNmNTY3MzMyMjZlYzUzLi4xNzFiNWI2ODRkMjdkNmQ4NTU3YWUwNzY5YWQzNjhlZGMwMjBmZDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aApAQCAtMjcsOSArMjcsOSBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0xNzcsNyArMTc3LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RhdGlj
IFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CisgICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxl
ciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgR2VzdHVyZUlE
KTsKIAogICAgIHN0YXRpYyBHZXN0dXJlSUQgdGFrZU5leHRHZXN0dXJlSUQoKTsKICAgICB2b2lk
IHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKaW5kZXggZWM1M2RkNmE1ZGY0MDJiMmZkMGNlMDFh
YzgxOGM2MzQ5NWNmNTRkNC4uZDc5ZDdhZDg0NmM3M2I5OWE4ZDQyYzZmZWE5MWE3OGY3ZDZiMjMz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAg
LTEwMiw2ICsxMDIsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZUFsbCgpCiAKIHZv
aWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQogeworICAgIC8vIEZJWE1F
OiBOZWVkcyB0byBsb29rIHVwIFdlYlBhZ2VQcm94eSBmcm9tIFdlYlBhZ2VJRC4KICAgICBpZiAo
YXV0byogd2ViUGFnZVByb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCkpIHsK
ICAgICAgICAgaWYgKCF3ZWJQYWdlUHJveHktPmFkZHNWaXNpdGVkTGlua3MoKSkKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5LmNwcAppbmRleCBiNWE1YzgyMzRkOGY0NTU4NGFkNmFhOGVmZDE2YmRmNTU4M2Rm
NDA3Li5jNjVlMTZiOWI2MWUxZGM0MDU3ZDEwMWEyYmUzNmVkZTAzNTVlOTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC00
NSwxMiArNDUsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5
JiB3ZWJQYWdlUHJveHkpCiAgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiB7Ci0g
ICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9j
ZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgKnRoaXMpOwogfQogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5w
YWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBt
ZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDgyNzVjZjZlYzk1MmZk
MGViMTk1MmYwYmFjMGY0NjMxODRmYTI3ZWUuLjUzNzAzNzFjNGUwMmJjYzE1ZjM3Mzk0ZDk1YzFk
ZDUwNzg5YzliNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcApAQCAtNjQsNyArNjQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJC
YWNrRm9yd2FyZExpc3Q6Oml0ZW1Gb3JJRChjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudAogICAg
IGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaXRlbS0+
cGFnZUlEKCkgPT0gbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgQVNTRVJUKGl0ZW0tPnBhZ2VJRCgp
ID09IG1fcGFnZS0+aWRlbnRpZmllcigpKTsKICAgICByZXR1cm4gaXRlbTsKIH0KIApAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJh
Y2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0CiAgICAgLy8gRklYTUU6IEVuYWJs
ZSByZXN0b3JpbmcgcmVzb3VyY2VEaXJlY3RvcnlVUkwuCiAgICAgZm9yIChhdXRvJiBiYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUgOiBiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcykgewogICAgICAg
ICBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IHsgUHJvY2Vzczo6aWRlbnRp
ZmllcigpLCBPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1J
ZGVudGlmaWVyVHlwZT46OmdlbmVyYXRlKCkgfTsKLSAgICAgICAgaXRlbXMudW5jaGVja2VkQXBw
ZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKKyAgICAgICAgaXRlbXMudW5jaGVja2Vk
QXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKSk7CiAgICAgfQogICAgIG1fY3Vy
cmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8gT3B0aW9uYWw8
c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IFdURjo6bnVsbG9w
dDsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKaW5kZXggODdiMGFmYzIwYzI3MmNmNGIx
NDllNTdlMDAyMGNkMzYxYWRhODNmNC4uMGZlNmQ4MzQ5ODA5OGM5N2U0NjdiMzY4NWIzZDZiMzY3
ZTcyY2Q2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1h
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQ
cm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5Ojp1bmFw
cGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVbmFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5h
cHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwog
ICAgIG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6UmVkbyk7
CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFwcGx5
KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBs
eUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAg
IG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6VW5kbyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggZWUzMzcx
MDgxNzA3ZWEzNmQzNTBlZmUyY2M1YTAzYzFkMTkxZGE0YS4uZGIyMjRiNjFjZmFiY2MxZDY0ZjA2
ZGM2MzZhMmFiMzIzMTRhNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkVVJMSW5GcmFtZSh1cmwsIHJlZmVycmVyLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPndlYlBh
Z2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
V2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5G
cmFtZShkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFz
ZVVSTCwgbV9mcmFtZUlEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2Vi
RnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN0b3BMb2FkaW5nRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiB9
CiAgICAgCiBib29sIFdlYkZyYW1lUHJveHk6OmNhblByb3ZpZGVTb3VyY2UoKSBjb25zdApAQCAt
MjYyLDcgKzI2Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUobV9mcmFt
ZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFn
ZS0+d2ViUGFnZUlEKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDA2
ZDU3ZDllNDhmMjM3YWFkZTdiZDViZjZjOTU0NC4uNzIxMjViMGVlMzJlODFlMDkzMjZhOWQ2NWMy
NmM1MGJiZWNjZmYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ0LDI1ICs0NCwyNSBAQCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnVsbAogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBh
Z2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6On5XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KCkKIHsKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFn
ZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CiAgICAgbV9jbGllbnQuY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpOwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFn
ZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEVudGVyRnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxs
RW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVsbFNjcmVl
bigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGll
bnQoKS5kaWRFbnRlckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdl
SUQoKSk7CiAKICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7CiAg
ICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3Bh
Z2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKQEAgLTczLDEz
ICs3MywxMyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbFNj
cmVlbigpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbFNjcmVl
bigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53aWxsRXhpdEZ1bGxzY3JlZW4o
Jm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2ls
bEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5m
dWxsc2NyZWVuQ2xpZW50KCkuZGlkRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1
bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpLCBtX3Bh
Z2Uud2ViUGFnZUlEKCkpOwogICAgIAogICAgIGlmIChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRv
bWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9u
U2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lv
bigpKQpAQCAtODksMTIgKzg5LDEyIEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkRXhpdEZ1bGxTY3JlZW4oKQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNl
dEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBhbmltYXRpbmcpCiB7Ci0gICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVs
bFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxT
Y3JlZW4oYW5pbWF0aW5nKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKQogewotICAgIG1fcGFn
ZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RF
eGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVsbFNjcmVl
bigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwOCwyNyArMTA4LDI3
IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2NyZWVuKGJv
b2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c2F2ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xsUG9zaXRpb24oKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLndlYlBhZ2VJRCgp
KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpyZXN0b3JlU2Nyb2xsUG9z
aXRpb24oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5JbnNldHMoY29uc3QgV2Vi
Q29yZTo6RmxvYXRCb3hFeHRlbnQmIGluc2V0cykKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGlu
c2V0cyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkluc2V0cyhpbnNldHMpLCBt
X3BhZ2Uud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OnNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pCiB7Ci0gICAg
bV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0
RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKGR1cmF0aW9uKSwgbV9wYWdlLndlYlBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxsc2NyZWVu
Q29udHJvbHNIaWRkZW4oYm9vbCBoaWRkZW4pCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlk
ZGVuKGhpZGRlbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlk
ZGVuKGhpZGRlbiksIG1fcGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuY3BwCmluZGV4IGY5M2ZhNjc2OGEyYTE1ZDMyMjk1ZTY5MzQ5ZWE5MzEwMzcz
NzViYTYuLmU2MjFhOGZkODNlMWY5MDNlNmM2NmZmNjI1YzM5YjA5NjBlZjIzZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgV2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSog
aW5zcGVjdGVkUGFnZSkKIHsKICAgICBpZiAoaW5zcGVjdGVkUGFnZSAmJiBpbnNwZWN0ZWRQYWdl
LT5oYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIG1faW5zcGVjdGVkUGFnZSA9IGluc3Bl
Y3RlZFBhZ2U7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlE
KCksICp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTg5LDcgKzg5LDcgQEAgV2ViUHJlZmVyZW5jZXMm
IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKSBjb25zdAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgaWYgKG1faW5zcGVjdGVk
UGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsK
IAogICAgIGNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7CiAgICAgcGxhdGZvcm1JbnZhbGlk
YXRlKCk7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBpZiAoIW1faW5zcGVj
dG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZCht
ZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9G
cm9udGVuZChtZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiB9CiAKIC8v
IFB1YmxpYyBBUElzCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
Y29ubmVjdCgpCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKICAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRj
aGVyOjpOb3RpZnlOZWVkRGVidWdnZXJCcmVhaygpLCAwKTsKLSAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlE
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93KCkKQEAgLTE2Miw3ICsxNjIs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgpCiAgICAgaWYgKCFtX2luc3BlY3Rl
ZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAog
ICAgIGNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVzZXRTdGF0ZSgpCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpyZXNldCgpCiB7CiAgICAgaWYgKG1faW5zcGVjdGVkUGFnZSkgewotICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UgPSBudWxscHRyOwogICAgIH0KIH0KQEAgLTIwOCwxMCArMjA4LDEwIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnVwZGF0ZUZvck5ld1BhZ2VQcm9jZXNzKFdlYlBhZ2VQcm94eSogaW5z
cGVjdGVkUGFnZSkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSk7CiAKICAgICBtX2luc3BlY3Rl
ZFBhZ2UgPSBpbnNwZWN0ZWRQYWdlOwotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT53ZWJQ
YWdlSUQoKSwgKnRoaXMpOwogCiAgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKLSAgICAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlVw
ZGF0ZUNvbm5lY3Rpb24oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpV
cGRhdGVDb25uZWN0aW9uKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVj
dGlvbklkZW50aWZpCiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRGcm9udGVuZENvbm5lY3Rpb24oY29ubmVjdGlv
bklkZW50aWZpZXIpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFn
ZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlNob3dDb25zb2xlKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKQEAgLTIzOSw3ICsyMzksNyBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKIAogICAgIGNyZWF0ZUZyb250
ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdl
YkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKIAog
ICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUo
ZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBtX2luc3BlY3RlZFBhZ2UtPndl
YlBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQm90dG9tKCkK
QEAgLTI4MCwxOSArMjgwLDE5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRh
Y2htZW50U2lkZSBzaWRlKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAKLSAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlNldEF0dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0
dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAgIHN3aXRj
aCAobV9hdHRhY2htZW50U2lkZSkgewogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToK
LSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6Ci0gICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpMZWZ0OgotICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRMZWZ0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRMZWZ0KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTMwOSw4ICszMDksOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRh
Y2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVu
Y2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hl
ZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9pbnNw
ZWN0ZWRQYWdlLT53ZWJQYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFn
ZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTM0Myw5ICsz
NDMsOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNQcm9maWxpbmdQYWdlKQotICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQ
YWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQ
YWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIGVsc2UK
LSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlE
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9u
KCkKQEAgLTM1NSwxMCArMzU1LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUVs
ZW1lbnRTZWxlY3Rpb24oKQogCiAgICAgaWYgKG1fZWxlbWVudFNlbGVjdGlvbkFjdGl2ZSkgewog
ICAgICAgICBtX2lnbm9yZUVsZW1lbnRTZWxlY3Rpb25DaGFuZ2UgPSB0cnVlOwotICAgICAgICBt
X2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0
b3BFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlN0b3BFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbm5lY3QoKTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEVsZW1lbnRTZWxl
Y3Rpb24oKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50
U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH0KIH0KIApA
QCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5k
UGFnZSgpCiAKICAgICB0cmFja0luc3BlY3RvclBhZ2UobV9pbnNwZWN0b3JQYWdlLCBtX2luc3Bl
Y3RlZFBhZ2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpLCAq
dGhpcyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFz
ZVVSTCgpKTsKIH0KIApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVz
CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3Rh
Ymxpc2hDb25uZWN0aW9uKG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBp
bnNwZWN0aW9uTGV2ZWwoKSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3Rh
Ymxpc2hDb25uZWN0aW9uKG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCksIG1fdW5kZXJUZXN0
LCBpbnNwZWN0aW9uTGV2ZWwoKSksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogCiAg
ICAgQVNTRVJUKCFtX2lzQWN0aXZlRnJvbnRlbmQpOwogICAgIG1faXNBY3RpdmVGcm9udGVuZCA9
IHRydWU7CkBAIC00MjIsMjYgKzQyMiwyNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVu
TG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAg
ICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKICAgICAgICAgbV9hdHRh
Y2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlUHJl
ZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgICAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFj
aGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNl
dEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+d2ViUGFnZUlEKCkpOwog
CiAgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRh
Y2htZW50U2lkZSkgewogICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgot
ICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdl
LT53ZWJQYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpMZWZ0OgotICAgICAg
ICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJ
RCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7
CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9j
YW5BdHRhY2gpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICB9CiAKICAgICBt
X2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpvcGVuKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGlzT3BlbmluZyhtX2lz
T3BlbmluZywgdHJ1ZSk7CiAgICAgbV9pc1Zpc2libGUgPSB0cnVlOwotICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2li
bGUobV9pc1Zpc2libGUpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNW
aXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAg
ICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybUF0dGFjaCgpOwpAQCAtNDg0LDgg
KzQ4NCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKIAogICAgIHVudHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKLSAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9p
bnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPndlYlBhZ2VJRCgpKTsKIAogICAg
IGlmIChtX2lzQWN0aXZlRnJvbnRlbmQpIHsKICAgICAgICAgbV9pc0FjdGl2ZUZyb250ZW5kID0g
ZmFsc2U7CkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNo
QXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1faW5zcGVjdG9yUGFnZSAmJiAhbV91bmRlclRlc3QpCi0gICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2Nr
aW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0
b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNo
YW5nZWQobV9jYW5BdHRhY2gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYjJlOWE1YWVlZDY3MjY0NDMyNTUzZjliZDM3OTY3YzQyMWM4MzZkZi4uYzE0
MjE0MDg0OWFhMzE5ZjFlNGY5NmNlMDQyNjJkMjUwOTFjN2JhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNTYsOCArMjU2LDggQEAKICNkZWZpbmUgTUVT
U0FHRV9DSEVDSyhwcm9jZXNzLCBhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRp
b24sIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwocHJv
Y2VzcywgdXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50
T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgdXJsKSwgcHJvY2Vzcy0+Y29ubmVjdGlvbigp
KQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBX
ZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
Ul9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViUGFnZVBy
b3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lbGx1LCB3ZWJQYWdlSUQ9
JWxsdSwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJ
RD0lbGx1LCBQSUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3
aGVlbCBldmVudHMgd2UgY2FuIGhvbGQgaW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNo
aW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRR
dWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsKQEAgLTM5Myw3ICszOTMsOCBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmCiB9CiAKIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKLSAgICA6IG1fcGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisg
ICAgLCBtX3dlYlBhZ2VJRChQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcGFn
ZUNsaWVudChtYWtlV2Vha1B0cihwYWdlQ2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlx
dWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQpAQCAtNDQxLDcgKzQ0Miw3IEBAIFdlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgUmVmCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENy
YXNoQ291bnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3Ry
dWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKQEAgLTQ3MCw3ICs0NzEsNyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFJlZgogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKCk7CiAKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
LCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6
OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUocHJlZmVyZW5jZXNTdG9yZSgpLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZUtl
eSgpKSk7CkBAIC00OTIsOSArNDkzLDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogV2Vi
UGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKLSAgICBB
U1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1fcGFnZUlEKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQo
bV9wcm9jZXNzLT53ZWJQYWdlKG1faWRlbnRpZmllcikgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIGZvciAoV2ViUGFnZVByb3h5KiBwYWdlIDogbV9wcm9jZXNzLT5wYWdlcygp
KQogICAgICAgICBBU1NFUlQocGFnZSAhPSB0aGlzKTsKQEAgLTYxOCw3ICs2MTksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+
JiYgdWlDbGllbnQpCiAgICAgbV91aUNsaWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAgICAg
aWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQt
PmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbChtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSks
IG1fd2ViUGFnZUlEKTsKIAogICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1v
ZGFsKCkpOwogICAgIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250
QXR0cmlidXRlcygpKTsKQEAgLTYzNSw3ICs2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+
JgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVu
dChoYXNDbGllbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1
bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiYmIG9ic2VydmVyKQpAQCAtNzIzLDEw
ICs3MjQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7
CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vz
czoiIFBSSXU2NCk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlBy
b2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwotICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdl
SUQpOwogCiAgICAgYXV0byYgcHJvY2Vzc1Bvb2wgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCk7
CiAKQEAgLTczOCw3ICs3MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAgbV9oYXNSdW5u
aW5nUHJvY2VzcyA9IHRydWU7CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgq
dGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBt
X3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogCiAgICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9j
ZXNzKElzUHJvY2Vzc1N3YXA6Ok5vKTsKIH0KQEAgLTc3OCw3ICs3NzksNyBAQCBib29sIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIE9wdAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2Ug
Zm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAg
ICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRo
aXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5n
VW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9j
ZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQg
cGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQs
IHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQo
KS5sb2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsK
IAogICAgIC8vIElmIHRoZSBjbGllbnQgZm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBub3QgYmUg
d2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90aGVyIHdp
bmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVyIGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2UgaXQgYXMg
c29vbiBhcyB3ZQogICAgIC8vIGNhbiBkbyBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAtNzk2LDcg
Kzc5Nyw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxl
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dh
cFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVl
X3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJhbWVQcm94
eT4mJiBtYWluRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3
YXBUb1dlYlByb2Nlc3M6Iik7CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwog
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpA
QCAtODExLDcgKzgxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5u
aW5nUHJvY2VzcyA9IHRydWU7CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgq
dGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1f
cHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nl
c3MoSXNQcm9jZXNzU3dhcDo6WWVzKTsKIH0KQEAgLTg4MSwxMCArODgyLDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3Nl
ZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9j
ZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIApAQCAtODkzLDcgKzg5NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2Vzcyhy
ZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50
SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MDYsNyArOTA3LDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2Fk
KCkKICAgICB9CiAKICAgICAvLyBXZSBhbGxvdyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5n
IGEgV2ViUHJvY2VzcyB0aGF0J3MgYmVlbiBraWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVt
SUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlE
KCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlv
bjsKQEAgLTkxNCwxMCArOTE1LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNo
UHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbToiKTsKIAog
ICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MjksNyArOTMwLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXQKIAogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVh
dGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCksIGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRC
YWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29U
b0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQo
KSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9u
OwpAQCAtOTYwLDkgKzk2MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFn
ZSgpCiAgICAgc2V0RHJhd2luZ0FyZWEocGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdBcmVhUHJv
eHkobV9wcm9jZXNzKSk7CiAgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEpOwogCi0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNy
ZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKSksIDApOworICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFn
ZUlELCBjcmVhdGlvblBhcmFtZXRlcnMobV9wcm9jZXNzLCAqbV9kcmF3aW5nQXJlYSkpLCAwKTsK
IAotICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIodmlzaXRlZExpbmtTdG9y
ZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcih2
aXNpdGVkTGlua1N0b3JlKCksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpjbG9zZSgpCkBAIC05NzAsNyArOTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkK
ICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAgICBt
X2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTAyMSw5ICsxMDIyLDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlKCkKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNw
ZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1v
dmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVz
KTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0
aW9ucyh0aGlzKTsKIAogICAgIC8vIE51bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2
b2lkIGxlYWtzLgpAQCAtMTA0MywxNCArMTA0NCwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5
Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJ0cnlDbG9zZToiKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhl
IHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUg
cHJvY2Vzcywgc28gd2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmICht
X3Byb2Nlc3MtPmlzU3VkZGVuVGVybWluYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlD
bG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVy
KCkuc3RhcnQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMTE4LDcgKzExMTksNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRS
ZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVx
dWVzdC51cmwoKSB9KTsKQEAgLTExMzIsNyArMTEzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb246Iik7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdl
TG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTExNTQsMTYgKzExNTUsMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKIAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBh
cmFtZXRlcnMpOwogCi0gICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJl
cXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3dlYlBhZ2VJRCk7
CiAgICAgcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Ns
b3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmls
ZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3Nl
ZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExNzIsNyArMTE3Myw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwo
KSwgZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMg
bm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTgyLDcgKzExODMsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVj
dG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAg
ICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBp
cyBub3QgbG9jYWwiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTIwNyw3ICsxMjA4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBh
ZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vz
cy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFnZUlEKTsKICAgICBt
X3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5h
dmlnYXRpb247CkBAIC0xMjE1LDEwICsxMjE2LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25z
CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRh
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWREYXRhOiIpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xv
c2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
Iik7CiAKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMjUzLDE5ICsxMjU0LDE5IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxv
YWRQYXJhbWV0ZXJzKTsKIAogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
KnRoaXMsIGJhc2VVUkwpOwotICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQYWdlSUQpOwog
ICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBo
dG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZEFsdGVybmF0ZUhUTUwiKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBp
biB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8g
bm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxv
YWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAg
ICAgLy8gaGFuZGxlZCBwcm9wZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGlu
Z0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdl
IGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDog
cGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMjk2LDE2ICsxMjk3LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKICAgICBtX3By
b2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwogICAgIG1f
cHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgdW5yZWFjaGFibGVVUkwp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhU
TUwobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fd2ViUGFn
ZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFy
Y2hpdmVEYXRhOiIpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3Nl
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzIzLDE2ICsxMzI0LDE2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwg
QVBJOjpPYmplY3QqIHVzCiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShw
cm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAg
IGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9p
bnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xp
Y2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CiAK
ICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9z
ZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBw
YWdlIGlzIGNsb3NlZDoiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0MiwyMCAr
MTM0MywyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVS
TCgpLCB1cmxTdHJpbmcpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3Vt
ZW50UG9pbnQsIHNjcmVlblBvaW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJs
U3RyaW5nLCBkb2N1bWVudFBvaW50LCBzY3JlZW5Qb2ludCksIG1fd2ViUGFnZUlEKTsKICAgICBt
X3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiIpOwogCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5v
dCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xp
Y2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCks
IG1fd2ViUGFnZUlEKTsKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UtPmNhbmNlbCgpOwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51
bGxwdHI7CkBAIC0xMzY1LDcgKzEzNjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRp
bmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRp
b25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAt
MTM5MCw3ICsxMzkxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpy
ZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKICAgICBpZiAob3B0aW9u
cy5jb250YWlucyhXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMp
KQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZh
bHNlKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCkBAIC0xNDQ2LDcgKzE0NDcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0
ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKICAgICBMT0coTG9hZGluZywg
IldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhp
cywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKQEAgLTE0NTksNyArMTQ2MCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0
aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVt
KG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlE
KCksIGZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6
bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRp
b25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJv
Y2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdh
dGlvbjsKQEAgLTE0NjcsMTQgKzE0NjgsMTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQpCkBAIC0xNTM2LDcgKzE1MzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29u
dHJvbGxlZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fd2ViUGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlv
bikpOwogfQogCkBAIC0xNTYxLDcgKzE1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5k
aWNhdGluZyhib29sIGluZGljYXRpbmcpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBj
b25zdApAQCAtMTU5Nyw3ICsxNTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVj
dG9yVGFyZ2V0cygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRz
KCkKIHsKLSAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKKyAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygi
cGFnZS0iLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9CiAKQEAgLTE2MDgsNyArMTYwOSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBjb2xv
cikKIAogICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICAgaWYgKGhhc1J1bm5pbmdQ
cm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
QmFja2dyb3VuZENvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvciksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBj
b250ZW50SW5zZXQpCkBAIC0xNjI0LDkgKzE2MjUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKICAgICBNYWNoU2VuZFJpZ2h0IGZl
bmNlID0gbV9kcmF3aW5nQXJlYS0+Y3JlYXRlRmVuY2UoKTsKIAogICAgIGF1dG8gZmVuY2VBdHRh
Y2htZW50ID0gSVBDOjpBdHRhY2htZW50KGZlbmNlLmxlYWtTZW5kUmlnaHQoKSwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9w
Q29udGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSwgbV93ZWJQ
YWdlSUQpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFRvcENvbnRlbnRJbnNldChjb250ZW50SW5zZXQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0
KSwgbV93ZWJQYWdlSUQpOwogI2VuZGlmCiB9CiAKQEAgLTE2MzgsNyArMTYzOSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVbmRlcmxheUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBt
X3VuZGVybGF5Q29sb3IgPSBjb2xvcjsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29s
b3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKQEAgLTE2NDcsMTQgKzE2
NDgsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY2xvc2VPdmVybGF5ZWRWaWV3cygpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxT
dGFydExpdmVSZXNpemUoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
dmlld1dpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUoKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBSZWdp
b24mIHJlZ2lvbikKQEAgLTE3MTIsNyArMTcxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBk
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3Vz
UmVwbHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQogewot
ICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94
eSAiIDw8IHBhZ2VJRCgpIDw8ICIgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSAtIG1heUhhdmVDaGFu
Z2VkICIgPDwgbWF5SGF2ZUNoYW5nZWQpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0
YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IGlkZW50aWZpZXIoKSA8PCAiIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2VkKTsK
IAogICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzLmFkZChtYXlIYXZl
Q2hhbmdlZCk7CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5
ID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3lu
Y2hyb25vdXNSZXBseTsKQEAgLTE3NDgsNyArMTc0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2
aWV3RGlkRW50ZXJXaW5kb3coKQogICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSA9IHBhZ2VDbGllbnQoKS52aWV3TGF5ZXJIb3N0aW5nTW9kZSgpOwogICAgIGlmIChtX2xheWVy
SG9zdGluZ01vZGUgIT0gbGF5ZXJIb3N0aW5nTW9kZSkgewogICAgICAgICBtX2xheWVySG9zdGlu
Z01vZGUgPSBsYXllckhvc3RpbmdNb2RlOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFn
ZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXll
ckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfQogfQog
CkBAIC0xNzYxLDcgKzE3NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldl
YlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdl
IC0gcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICIgPDwgbV9wb3RlbnRpYWxs
eUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0
eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IGlkZW50aWZpZXIoKSA8PCAiIGRp
c3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSAtIHBvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3Rh
dGVGbGFncyAiIDw8IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKTsKIAog
ICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28g
bWF5IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYg
KG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKQpAQCAtMTc3NCw3ICsxNzc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0
YXRlIF4gcHJldmlvdXNBY3Rpdml0eVN0YXRlOwogCiAgICAgaWYgKGNoYW5nZWQpCi0gICAgICAg
IExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAi
IDw8IHBhZ2VJRCgpIDw8ICIgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlOiBzdGF0ZSBjaGFu
Z2VkIGZyb20gIiA8PCBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPDwgIiB0byAiIDw8IG1fYWN0aXZp
dHlTdGF0ZSk7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0g
PDwgIldlYlBhZ2VQcm94eSAiIDw8IGlkZW50aWZpZXIoKSA8PCAiIGRpc3BhdGNoQWN0aXZpdHlT
dGF0ZUNoYW5nZTogc3RhdGUgY2hhbmdlZCBmcm9tICIgPDwgcHJldmlvdXNBY3Rpdml0eVN0YXRl
IDw8ICIgdG8gIiA8PCBtX2FjdGl2aXR5U3RhdGUpOwogCiAgICAgaWYgKChjaGFuZ2VkICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpICYmIGlzVmlld1dpbmRvd0FjdGl2ZSgpKQogICAg
ICAgICB1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZSgpOwpAQCAtMTc5Nyw3ICsxNzk4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgYXV0
byBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHkgPyB0YWtlTmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCgpIDogc3RhdGljX2Nh
c3Q8QWN0aXZpdHlTdGF0ZUNoYW5nZUlEPihBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
KTsKIAogICAgIGlmIChjaGFuZ2VkIHx8IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0
eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2Fs
bGJhY2tzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSwgbV9wYWdlSUQpOworICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUo
bV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja3MpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzLmNsZWFyKCk7CiAKQEAgLTE4OTksNyArMTkwMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCkKICAgICBtX2xheWVySG9z
dGluZ01vZGUgPSBsYXllckhvc3RpbmdNb2RlOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJI
b3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0
aW5nTW9kZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQpCkBAIC0xOTQxLDIxICsxOTQyLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJ
bml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25z
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJ
bml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtl
eWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDbGVhclNlbGVjdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDbGVhclNlbGVjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3Vz
ZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQo
Y29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMTk2Niw3ICsxOTY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICB9
CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29t
bWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNl
TGlzdExldmVsKCkKQEAgLTE5NzQsNyArMTk3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbmNy
ZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3JlYXNl
TGlzdExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkluY3JlYXNlTGlzdExldmVsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKCkKQEAgLTE5ODIsNyArMTk4Myw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkKQEAgLTE5OTAsNyAr
MTk5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTk5OCw3ICsxOTk5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihkaXJlY3Rpb24pLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVGb250QXR0cmlidXRlc0FmdGVy
RWRpdG9yU3RhdGVDaGFuZ2UoKQpAQCAtMjAyMiw3ICsyMDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAg
IG1fbmVlZHNGb250QXR0cmlidXRlcyA9IG5lZWRzRm9udEF0dHJpYnV0ZXM7CiAKICAgICBpZiAo
aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0ZXMpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVl
ZHNGb250QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSwgbV93ZWJQYWdlSUQpOwogfQog
CiBib29sIFdlYlBhZ2VQcm94eTo6bWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oKSBjb25zdApA
QCAtMjA0NSw3ICsyMDQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRv
clN0YXRlVXBkYXRlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVG
dWxsRWRpdG9yU3RhdGVVcGRhdGUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKQEAgLTIwNTMsNyAr
MjA1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RBbGwoKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0QWxsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTIwNjQsNyArMjA2NSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFu
ZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNv
bW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAK
IHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKQEAgLTIwNzcsNyArMjA3OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgaWYgKGNvbW1hbmROYW1lID09IGlnbm9yZVNwZWxs
aW5nQ29tbWFuZE5hbWUpCiAgICAgICAgICsrbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNz
YWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1
dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFu
ZE5hbWUsIGFyZ3VtZW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2spCkBAIC0yMDg4LDcgKzIwODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRB
dHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYgogICAgIH0K
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTIxMDksNyArMjExMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRFZGl0YWJsZShib29sIGVkaXRhYmxlKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVkaXRhYmxlKGVkaXRhYmxl
KSwgbV93ZWJQYWdlSUQpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhU3Ry
ZWFtQ2FwdHVyZU11dGVkKGJvb2wgbXV0ZWQpCkBAIC0yMTc0LDkgKzIxNzUsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uIGFjdGlvbiwgRHJhZwogCiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsK
ICAgICBXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEu
Z2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCks
IHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rp
b24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCks
IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdE
YXRhLmZsYWdzKCkpLCBtX3dlYlBhZ2VJRCk7CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJh
Z0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2Fk
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV93ZWJQYWdlSUQpOwogI2Vu
ZGlmCiB9CiAKQEAgLTIyMDYsNyArMjIwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5k
ZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24s
IGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBvcGVyYXRpb24pLCBtX3dlYlBhZ2VJRCk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7
IH0pOwogfQogCkBAIC0yMjE4LDEzICsyMjE5LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRsZWQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U3RhcnREcmFnKCkKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQp
OworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJh
ZygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0NhbmNl
bGxlZCgpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygp
CkBAIC0yMzIzLDcgKzIzMjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1
ZWRNb3VzZUV2ZW50KCkKICAgICB9CiAKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vz
czogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5
cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2
ZW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgTUVSR0VfV0hFRUxfRVZFTlRTCkBAIC0yNDMy
LDcgKzI0MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZFdoZWVsRXZlbnQoY29uc3QgV2Vi
V2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKAogICAgICAgICBNZXNz
YWdlczo6RXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50KAotICAgICAgICAgICAgbV9wYWdlSUQs
CisgICAgICAgICAgICBtX3dlYlBhZ2VJRCwKICAgICAgICAgICAgIGV2ZW50LAogICAgICAgICAg
ICAgc2hvdWxkVXNlSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbCgpID8gIW1fYmFja0ZvcndhcmRM
aXN0LT5iYWNrSXRlbSgpIDogcnViYmVyQmFuZHNBdExlZnQoKSwKICAgICAgICAgICAgIHNob3Vs
ZFVzZUltcGxpY2l0UnViYmVyQmFuZENvbnRyb2woKSA/ICFtX2JhY2tGb3J3YXJkTGlzdC0+Zm9y
d2FyZEl0ZW0oKSA6IHJ1YmJlckJhbmRzQXRSaWdodCgpLApAQCAtMjQ4Myw3ICsyNDg0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICBpZiAobV9rZXlFdmVudFF1ZXVlLnNpemUoKSA9PSAx
KSB7IC8vIE90aGVyd2lzZSwgc2VudCBmcm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRs
ZXIuCiAgICAgICAgIExPRyhLZXlIYW5kbGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50
IGZyb20gaGFuZGxlS2V5Ym9hcmRFdmVudCIpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50KSwgbV93ZWJQYWdl
SUQpOwogICAgIH0KIH0KIApAQCAtMjY1Niw3ICsyNjU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQog
ICAgIGVsc2UKICAgICAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lci5zdGFydCgpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Okdlc3R1cmVFdmVudChtX3Bh
Z2VJRCwgZXZlbnQpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlz
cGF0Y2hlcjo6R2VzdHVyZUV2ZW50KG1fd2ViUGFnZUlELCBldmVudCksIDApOwogfQogI2VuZGlm
CiAKQEAgLTI2ODksNyArMjY5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2
ZW50U3luY2hyb25vdXNseShOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKIAogICAgIG1fcHJv
Y2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAgICAgYm9vbCBoYW5kbGVkID0g
ZmFsc2U7Ci0gICAgYm9vbCByZXBseVJlY2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudFN5bmM6OlJlcGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCwgMV9zLCBJUEM6OlNlbmRT
eW5jT3B0aW9uOjpGb3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3Vu
ZGVkU3luY1JlcGx5KTsKKyAgICBib29sIHJlcGx5UmVjZWl2ZWQgPSBtX3Byb2Nlc3MtPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCksIG1fd2ViUGFnZUlELCAxX3Ms
IElQQzo6U2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRp
bmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpOwogICAgIC8vIElmIHRoZSBzeW5jIHJlcXVlc3QgaGFz
IHRpbWVkIG91dCwgd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBldmVudCBoYW5kbGVkLiBUaGUgV2Vi
IFByb2Nlc3MgaXMgdG9vIGJ1c3kgdG8gYW5zd2VyIGFueSBxdWVzdGlvbnMsIHNvIHRoZSBkZWZh
dWx0IGFjdGlvbiBpcyBhbHNvIGxpa2VseSB0byBoYXZlIGlzc3Vlcy4KICAgICBpZiAoIXJlcGx5
UmVjZWl2ZWQpCiAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwpAQCAtMjcwOCw3ICsyNzA5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0UG90ZW50aWFsVGFwU2VjdXJpdHlPcmlnaW4oKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXNldFBvdGVudGlhbFRhcFNlY3VyaXR5T3Jp
Z2luKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlc2V0UG90ZW50aWFsVGFwU2VjdXJpdHlPcmlnaW4oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudEFzeW5jaHJvbm91c2x5KGNvbnN0IE5h
dGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQpAQCAtMjcyMCw3ICsyNzIxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50JiBldmUKICAgICBpZiAodG91Y2hFdmVudHNUcmFja2luZ1R5cGUgPT0gVHJhY2tp
bmdUeXBlOjpOb3RUcmFja2luZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OlRvdWNoRXZlbnQobV9wYWdlSUQsIGV2ZW50
KSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OlRv
dWNoRXZlbnQobV93ZWJQYWdlSUQsIGV2ZW50KSwgMCk7CiAKICAgICBpZiAoZXZlbnQuYWxsVG91
Y2hQb2ludHNBcmVSZWxlYXNlZCgpKSB7CiAgICAgICAgIG1fdG91Y2hBbmRQb2ludGVyRXZlbnRU
cmFja2luZy5yZXNldCgpOwpAQCAtMjc0NSw3ICsyNzQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAg
aWYgKCFtX2lzUGFnZVN1c3BlbmRlZCkgewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5hcHBl
bmQoZXZlbnQpOwogICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fd2ViUGFnZUlEKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAobV90b3VjaEV2ZW50UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBi
b29sIGlzRXZlbnRIYW5kbGVkID0gZmFsc2U7CkBAIC0yNzY4LDEyICsyNzY5LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
IGV2ZW50KQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKIHZvaWQgV2ViUGFnZVByb3h5Ojpj
YW5jZWxQb2ludGVyKFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBkb2N1bWVudFBvaW50KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRlcihwb2ludGVySWQsIGRvY3VtZW50UG9pbnQpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2lu
dGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKFdlYkNvcmU6OlBvaW50
ZXJJRCBwb2ludGVySWQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUb3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChwb2ludGVySWQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVy
V2FzUmVtb3ZlZChwb2ludGVySWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMjc4
Miw3ICsyNzgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdGlv
biBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGEKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVj
dGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkKQEAgLTI3OTAsNyArMjc5MSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJT
ZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogY2xhc3MgV2ViUGFn
ZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvbGljeURl
Y2lzaW9uU2VuZGVyPiB7CkBAIC0yOTMzLDcgKzI5MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRp
b24qCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0g
JWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwgbV9wcm92aXNpb25h
bFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1l
ID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0Owog
CkBAIC0yOTQ5LDE0ICsyOTUwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnCiAKICAgICBw
cm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3
YXApOwogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgYXV0byogbmF2aWdhdGlvbiA9IG5h
dmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25J
RCgpKTsKICAgICBib29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZpZ2F0aW9uID8gc3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJblByZXZp
b3VzUHJvY2VzcywgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKSA6IGZhbHNlOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93
ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLndl
YnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpO
byA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwogCiAgICAgLy8g
VGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGluIHRo
ZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAgIGlmICghZGlkU3VzcGVuZFByZXZpb3Vz
UGFnZSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgp
LCBwYWdlSUQoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2xvc2UoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgc3dhcFRvV2ViUHJvY2VzcyhtX3Byb3Zpc2lv
bmFsUGFnZS0+cHJvY2VzcygpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdpbmdBcmVhKCks
IG1fcHJvdmlzaW9uYWxQYWdlLT5tYWluRnJhbWUoKSk7CiAKQEAgLTI5NzMsNyArMjk3NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAl
aSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
bmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBu
ZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CiAg
ICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBp
biBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRp
b24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewpAQCAt
Mjk5OCw3ICsyOTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICBpZiAobV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJk
TGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tIaXN0
b3J5KCkgPT0gTG9ja0hpc3Rvcnk6OlllcykpIHsKICAgICAgICAgLy8gSWYgV2ViQ29yZSBpcyBz
dXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBw
cm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0
IGNhbiB1cGRhdGUKICAgICAgICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUu
Ci0gICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRI
aXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5p
dGVtU3RhdGUoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2Fy
ZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV93ZWJQYWdlSUQpOwogICAgIH0K
IAogICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBs
YXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCkBAIC0zMDQ4LDcgKzMwNDksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlckFnZW50KG1fdXNlckFnZW50KSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlckFnZW50KG1fdXNl
ckFnZW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lKQpAQCAt
MzA4NSw3ICszMDg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCkKIAogICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCkBAIC0zMDk1LDcgKzMwOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogICAgIG1faXNQYWdlU3Vz
cGVuZGVkID0gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpz
dXBwb3J0c1RleHRFbmNvZGluZygpIGNvbnN0CkBAIC0zMTEyLDcgKzMxMTMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29k
aW5nTmFtZSkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFt
ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lv
blN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZp
bHRlcikgY29uc3QKQEAgLTMxMzQsNyArMzEzNSw3IEBAIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJv
eHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0
CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNz
aW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZToiKTsKIAogICAgIG1fc2Vzc2lv
blJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVU
aHJlc2hvbGQgPSBmYWxzZTsKQEAgLTMxNTAsNyArMzE1MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRl
IHNlc3NpCiAgICAgICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAg
ICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9yZUZyb21TdGF0ZShXVEZNb3ZlKHNlc3Npb25T
dGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSkpOwotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlc3Npb24obV9iYWNrRm9yd2FyZExpc3QtPml0ZW1TdGF0
ZXMoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3dl
YlBhZ2VJRCk7CiAKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50
cmFuc2FjdGlvbigpOwogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0Q2FuR29CYWNrKHRyYW5z
YWN0aW9uLCBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKSk7CkBAIC0zMTk4LDcgKzMxOTks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dFpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0
b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1f
dGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvciksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6
b29tRmFjdG9yKQpAQCAtMzIxMyw3ICszMjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBh
Z2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9y
KG1fcGFnZVpvb21GYWN0b3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91Ymxl
IHRleHRab29tRmFjdG9yKQpAQCAtMzIyOSw3ICszMjMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUg
dGV4dFoKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUFuZFRleHRab29t
RmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMobV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fd2ViUGFnZUlE
KTsKIH0KIAogZG91YmxlIFdlYlBhZ2VQcm94eTo6cGFnZVpvb21GYWN0b3IoKSBjb25zdApAQCAt
MzI1OSw3ICszMjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZShkb3VibGUgc2Nh
bGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRl
cyhkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcykK
QEAgLTMyNzEsNyArMzI3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdD
b29yZGluYXRlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBjZW50CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBj
ZW50ZXJJblZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50
ZXJJblZpZXdDb29yZGluYXRlcyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNjYWxlVmlldyhkb3VibGUgc2NhbGUpCkBAIC0zMjgzLDcgKzMyODQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQgc2NhbGVGYWN0b3IpCkBAIC0zMzAyLDcgKzMzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oldp
bmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGZsb2F0
IFdlYlBhZ2VQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdApAQCAtMzM0MSw3ICszMzQy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vzc2liaWxpdHlTZXR0aW5nc0Rp
ZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKQEAgLTMz
NTgsNyArMzM1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29s
IGZpeGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91
dChmaXhlZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0z
MzcxLDcgKzMzNzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZp
eGVkTGF5b3V0U2l6ZShzaXplKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihi
b29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpAQCAtMzM4NCw3ICszMzg1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wg
YWx3YXlzU2hvd3NIb3Jpem9udGFsU2MKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Ny
b2xsZXIpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlciksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5
c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikK
QEAgLTMzOTcsNyArMzM5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1Zl
cnRpY2FsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihhbHdh
eXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlz
U2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lPiBtaWxlc3RvbmVzKQpAQCAtMzQxMCw3ICszNDExLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91
dE1pbGVzdG9uZT4KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5
b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVz
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQpAQCAtMzQyMyw3ICszNDI0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhi
b29sIHN1cHByZXNzQW5pbWF0aW9ucykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpydWJiZXJCYW5kc0F0TGVmdCgpIGNvbnN0CkBAIC0zNDc1
LDcgKzM0NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5hYmxlVmVydGljYWxSdWJiZXJC
YW5kaW5nKGJvb2wgZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaQogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVydGlj
YWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2Fs
UnViYmVyQmFuZGluZyksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5
Ojp2ZXJ0aWNhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzQ5Miw3ICszNDkz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5n
KGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckIKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1
YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFs
UnViYmVyQmFuZGluZyksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5
Ojpob3Jpem9udGFsUnViYmVyQmFuZGluZ0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNTA5LDcgKzM1
MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdl
KGJvb2wgYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNC
ZXlvbmRQYWdlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5
b25kUGFnZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZSgpIGNvbnN0CkBAIC0zNTI2LDcgKzM1MjcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBt
b2RlKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTW9kZSht
b2RlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0UGFnaW5hdGlvbk1vZGUobW9kZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNv
bHVtbnMpCkBAIC0zNTM4LDcgKzM1MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIAogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhi
ZWhhdmVzTGlrZUNvbHVtbnMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtl
Q29sdW1ucyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VM
ZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpCkBAIC0zNTUwLDcgKzM1NTEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdl
TGVuZ3RoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0
d2VlblBhZ2VzKGRvdWJsZSBnYXApCkBAIC0zNTYyLDcgKzM1NjMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0R2FwQmV0d2VlblBhZ2VzKGRvdWJsZSBnYXApCiAKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEdhcEJldHdlZW5QYWdlcyhnYXApLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkxpbmVH
cmlkRW5hYmxlZChib29sIGxpbmVHcmlkRW5hYmxlZCkKQEAgLTM1NzQsNyArMzU3NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdy
aWRFbmFibGVkKQogICAgIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5h
dGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFi
bGVkKGxpbmVHcmlkRW5hYmxlZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCkBAIC0zNTk5
LDMyICszNjAwLDMyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25z
dCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmlu
Z01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3Ry
aW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMg
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1h
dGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRJ
bWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCks
IG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEZpbmRNYXRjaChp
bnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5kaWNhdGVGaW5kTWF0Y2go
aW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SW5kaWNhdGVGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluZGljYXRlRmluZE1hdGNoKG1hdGNoSW5k
ZXgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZp
bmRVSSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpCkBAIC0zNjMyLDcgKzM2MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBv
cHRpb25zLAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNo
ZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0aW9u
PHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMzY0
Myw3ICszNjQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1
aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5k
aWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VNYXRj
aGVzKFdURk1vdmUobWF0Y2hJbmRpY2VzKSwgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1
bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCkBAIC0zNjY4LDE0ICszNjY5LDE0IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGROYW1lLCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRh
aWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQobWFpbkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQs
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZy
YW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2ODYsNyArMzY4Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzY5OCw3ICszNjk5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGMKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJp
bmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQpAQCAtMzcxMCw3ICszNzExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dENvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmEKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2Fs
bGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250
ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTM3MjEsNyArMzcyMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3Ry
aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5k
aWYKIApAQCAtMzczNCw3ICszNzM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2Rl
UHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2Zp
bGUoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC0zNzQ2LDcgKzM3NDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxi
YWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxp
bmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzc1OCw3ICsz
NzU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNl
bmRpZgogCkBAIC0zNzcwLDcgKzM3NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAg
IH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0Fz
U3RyaW5nKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzgxLDcgKzM3
ODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgIH0KICAgICAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc5Miw3ICszNzkzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpV
UkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzgwMyw3ICszODA0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgQVBJOjpVUkwqIHJlc28KICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1l
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzgxNCw3ICszODE1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJ
RCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMzg0OCw3ICszODQ5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
ZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3Rv
cmVVcGRhdGVPbk5leHRQYWludCgpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7IAorICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmludGlu
Z1NlbmRPcHRpb25zKGJvb2wgaXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pCkBAIC0zODc0
LDcgKzM4NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQog
ICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3Zl
cnJpZGVzIGdldCByZW1vdmVkLgogCiAgICAgLy8gUHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRh
dGVkIGR1cmluZyBzeW5jaHJvbm91cyBwcmludGluZyB0byBtYWtlICJwcmludCBiYWNrZ3JvdW5k
cyIgcHJlZmVyZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBmcm9tIGEgcHJpbnQgZGlhbG9nIGNoZWNr
Ym94LgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNE
aWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlv
bnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9y
ZSgpKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Q
cmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpAQCAtNDAwNCw4ICs0MDA1LDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJgogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0
aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9u
KG5hdmlnYXRpb25JRCk7CiAKLSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRv
IGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwg
bV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJ
RC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIs
IHVybCAlcyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQu
dG9VSW50NjQoKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRy
YW5zYWN0aW9uKCk7CiAKQEAgLTQwNTgsNyArNDA1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExv
YWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQ
Ukl1NjQgIiwgdXJsICVzIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRCA9ICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwODcsNyArNDA4OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1l
SUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MTAwLDcgKzQxMDEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
ZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBm
cmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDE0Nyw4ICs0MTQ4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExv
YWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdl
SUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxV
UkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAi
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIs
IHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1l
SUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JD
b2RlKCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwg
ZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00MjI2LDkgKzQyMjcsOSBAQCBzdGF0aWMgT3B0aW9uU2V0PENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IGNoZWNrSWZOYXZpZ2F0aW9uQ29udGFpbgog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVu
dD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAg
TE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1p
dExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQudG9VSW50NjQo
KSwgbmF2aWdhdGlvbklEKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJ
dTY0LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0coQmFj
a0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJk
IGxpc3QgaXMgbm93OiVzIiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1l
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJh
bWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkp
OwogCkBAIC00MjQ2LDcgKzQyNDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZwogICAgICAg
ICAgICAgUmVnaXN0cmFibGVEb21haW4gY3VycmVudERvbWFpbiB7IGN1cnJlbnRSZXF1ZXN0LnVy
bCgpIH07CiAgICAgICAgICAgICBVUkwgcmVxdWVzdGVyVVJMIHsgVVJMKCksIHJlcXVlc3Rlck9y
aWdpbi50b1N0cmluZygpIH07CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnREb21haW4ubWF0Y2hl
cyhyZXF1ZXN0ZXJVUkwpKQotICAgICAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5kaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihtX3dlYnNpdGVEYXRhU3Rv
cmUtPnNlc3Npb25JRCgpLCBSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RlclVSTCB9LCBjdXJy
ZW50RG9tYWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBtX3BhZ2VJRCk7CisgICAgICAgICAg
ICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRo
RGF0YVRyYW5zZmVyKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFJlZ2lzdHJhYmxl
RG9tYWluIHsgcmVxdWVzdGVyVVJMIH0sIGN1cnJlbnREb21haW4sIG5hdmlnYXRpb25EYXRhVHJh
bnNmZXIsIG1fd2ViUGFnZUlEKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpAQCAtNDM0MCw3
ICs0MzQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWcKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQUkl1NjQsIGZy
YW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MzY0LDcgKzQzNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRG
b3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBk
aWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELnRvVUludDY0KCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFt
ZTogZnJhbWVJRCA9ICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ0MDksNyArNDQx
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRG
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwg
ZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDQ1MSw3
ICs0NDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXQKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NjM3LDcgKzQ2MzgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveAogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCiAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQs
IHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1l
SUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUs
IFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFn
ZUlELApAQCAtNDkwOCw3ICs0OTA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2Fybmlu
Zyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRl
KGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8uLi4gYXJncykgewotICAgICAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRy
LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7CkBAIC00OTU3LDcgKzQ5NTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2lu
Z1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAogICAgICAgICBhdXRvIHNlbmRlciA9
IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9j
ZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZy
YW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJh
bWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2
aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDk5NCw3
ICs0OTk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZUlkZW50aWZpZXIgc291cmMKICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2Vzcywgc291cmNlRnJhbWUpOwogCiAgICAgbV9mb3JtQ2xpZW50LT53aWxsU3VibWl0Rm9y
bSgqdGhpcywgKmZyYW1lLCAqc291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVlcywgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0o
KSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVX
aWxsU3VibWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSwgbV9wYWdlSUQpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0o
ZnJhbWVJRCwgbGlzdGVuZXJJRCksIG1fd2ViUGFnZUlEKTsKICAgICB9KTsKIH0KIApAQCAtNTAx
MCw3ICs1MDExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDoiKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMzAsNyArNTAzMSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50
UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywg
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQudG9VSW50NjQoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0U2hhcmVkOiBmcmFtZUlEID0gJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTA1
Nyw3ICs1MDU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDoiKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUxMDAsNyArNTEwMSw2IEBAIHN0
YXRpYyB2b2lkIHRyeVNPQXV0aG9yaXphdGlvbihSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYm
IG5hdmlnYXRpb25BY3Rpb24sIFdlCiAjaWYgSEFWRShBUFBfU1NPKQogICAgIHBhZ2Uud2Vic2l0
ZURhdGFTdG9yZSgpLnNvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yKCkudHJ5QXV0aG9yaXplKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHBhZ2UsIFdURk1vdmUobmV3UGFnZUNhbGxiYWNrKSwg
V1RGTW92ZSh1aUNsaWVudENhbGxiYWNrKSk7CiAjZWxzZQotICAgIEFTU0VSVF9VTlVTRUQocGFn
ZSwgcGFnZS5wYWdlSUQoKSk7CiAgICAgdWlDbGllbnRDYWxsYmFjayhXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb24pLCBXVEZNb3ZlKG5ld1BhZ2VDYWxsYmFjaykpOwogI2VuZGlmCiB9CkBAIC01MTIw
LDcgKzUxMjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFt
ZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsCiAKICAgICAgICAgbmV3UGFnZS0+
c2V0T3BlbmVkQnlET00oKTsKIAotICAgICAgICByZXBseShuZXdQYWdlLT5wYWdlSUQoKSwgbmV3
UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKG1fcHJvY2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVh
KCkpKTsKKyAgICAgICAgcmVwbHkobmV3UGFnZS0+d2ViUGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0
aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CiAKICAg
ICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uID0gaG9zdHNBcmVFcXVhbChVUkwoeyB9LCBtYWluRnJhbWVVUkwpLCByZXF1
ZXN0LnVybCgpKTsKIApAQCAtNTQ1MSw3ICs1NDUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bk9wZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXQKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93U2hhcmVTaGVldChjb25zdCBTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJiBzaGFyZURhdGEsIFNoYXJlU2hlZXRDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSAoYm9vbCBh
Y2Nlc3MpIHsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
b21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNzLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlU2hhcmVTaGVl
dChhY2Nlc3MsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfTsKICAgICAKICAgICBw
YWdlQ2xpZW50KCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CkBAIC01NDgzLDcgKzU0ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVk
aWFWb2x1bWUoZmxvYXQgdm9sdW1lKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1lKSwgbV9wYWdlSUQpOyAgICAKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSkKQEAgLTU0OTksNyArNTQ5OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRl
RmxhZ3Mgc3RhdGUpCiAgICAgICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24o
KS5tdXRlQ2FwdHVyZU1lZGlhU3RyZWFtc0V4Y2VwdEluKCp0aGlzKTsKICNlbmRpZgogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0ZSksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE11dGVkKHN0
YXRlKSwgbV93ZWJQYWdlSUQpOwogICAgIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBBY3Rpdml0
eVN0YXRlOjpJc0F1ZGlibGUsIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEgfSk7CiB9
CiAKQEAgLTU1MjEsNyArNTUyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0
dXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlh
Q2FwdHVyZSgpLCBtX3dlYlBhZ2VJRCk7CiAjZW5kaWYKIH0KIApAQCAtNTUzMCw3ICs1NTMwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJh
Y2soKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1l
ZGlhUGxheWJhY2soKQpAQCAtNTU0Miw3ICs1NTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCkBA
IC01NTU0LDcgKzU1NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5
YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxh
eWJhY2soKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKQEAgLTU1NjMsNyArNTU2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlTWVk
aWFFdmVudChldmVudFR5cGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50
SUQpCkBAIC01NTcxLDcgKzU1NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZN
ZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIGVs
ZW1lbnRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSwgbV93ZWJQYWdl
SUQpOwogfQogI2VuZGlmCiAKQEAgLTU1ODUsNyArNTU4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1h
eVN0YXJ0TWVkaWEpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChE
b3dubG9hZFByb3h5JiBkb3dubG9hZCkKQEAgLTU2MzIsNyArNTYzMiw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29s
b3IoY29sb3IpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRD
b2xvclBpY2tlcigpCkBAIC01NjQxLDcgKzU2NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RW5kQ29sb3JQaWNrZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRD
b2xvclBpY2tlcigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApA
QCAtNTY3NSw3ICs1Njc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENsb3NlU3VnZ2VzdGlv
bnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
biA9IG51bGxwdHI7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
bG9zZVN1Z2dlc3Rpb25zKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRP
cHRpb24pCkBAIC01NjgzLDcgKzU2ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0
T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0
RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRp
ZgpAQCAtNTczNiw3ICs1NzM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsbG93c01lZGlh
RG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAgICAgICAgcmV0dXJuOwogICAg
IG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrID0gYWxsb3dzOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5s
aW5lUGxheWJhY2soYWxsb3dzKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93
cyksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC01NzY0LDcgKzU3NjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0LCBjbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJ
dGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGl0ZW1TdGF0ZSkKIHsKLSAgICBhdXRvIGl0
ZW0gPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoV1RGTW92ZShpdGVtU3RhdGUpLCBw
YWdlSUQoKSk7CisgICAgYXV0byBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KFdURk1vdmUoaXRlbVN0YXRlKSwgaWRlbnRpZmllcigpKTsKICAgICBpdGVtLT5zZXRSZXNvdXJj
ZURpcmVjdG9yeVVSTChjdXJyZW50UmVzb3VyY2VEaXJlY3RvcnlVUkwoKSk7CiAgICAgbV9iYWNr
Rm9yd2FyZExpc3QtPmFkZEl0ZW0oV1RGTW92ZShpdGVtKSk7CiB9CkBAIC01OTE4LDE3ICs1OTE4
LDE3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOworICAg
IHJldHVybiBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdT
ZWxlY3RlZEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEZyb21JdGVtRm9y
UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRleCkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUo
aW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGluZGV4KSwgbV93ZWJQYWdlSUQpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6aXNQcm9jZXNzaW5nS2V5Ym9hcmRFdmVudHMoKSBjb25zdApAQCAt
NTk2MywxMyArNTk2MywxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6TwogICAgIC8vIEZvciBi
YWNrd2FyZC1jb21wYXRpYmlsaXR5LCBtYWtlIHN1cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFsIHBy
b2Nlc3MgaWYgdGhlIGNsaWVudCBhc2tzIHRvIHBvc3QgYSBtZXNzYWdlIHRvIGl0cyBpbmplY3Rl
ZCBidW5kbGUgYmVmb3JlIGRvaW5nIGEgbG9hZC4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lm
TmVjZXNzYXJ5KCk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9z
dEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIG1fcGFnZUlEKTsK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxl
TWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFBM
QVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpmYWlsZWRUb1Nob3dQb3B1cE1lbnUoKQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmFpbGVkVG9TaG93UG9w
dXBNZW51KCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKIApA
QCAtNjAzNiw3ICs2MDM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShD
b250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dE1lbnVDb250ZXh0RGEKICAgICBtX2FjdGl2
ZUNvbnRleHRNZW51LT5zaG93KCk7CiAKICAgICAvLyBObyBtYXR0ZXIgdGhlIHJlc3VsdCBvZiBp
bnRlcm5hbFNob3dDb250ZXh0TWVudSwgYWx3YXlzIG5vdGlmeSB0aGUgV2ViUHJvY2VzcyB0aGF0
IHRoZSBtZW51IGlzIGhpZGRlbiBzbyBpdCBzdGFydHMgaGFuZGxpbmcgbW91c2UgZXZlbnRzIGFn
YWluLgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVI
aWRkZW4oKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29udGV4dE1lbnVIaWRkZW4oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0
YSYgaXRlbSkKQEAgLTYxMTQsMTIgKzYxMTQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAg
ICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyB8
fCBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKQogICAg
ICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNv
bnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudUtleUV2
ZW50KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRN
ZW51Rm9yS2V5RXZlbnQoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29udGV4dE1lbnVGb3JLZXlFdmVudCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKQEAgLTYxMzUsMTAgKzYxMzUsMTAgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlT
dHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVV
UkxzLnNpemUoKTsgKytpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
ZmlsZVVSTHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlc1tpXSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5k
bGVzKSwgbV93ZWJQYWdlSUQpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdB
bmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRh
UmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
V2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0
YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSksIG1f
d2ViUGFnZUlEKTsKIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUo
KTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYxNjMsMTAg
KzYxNjMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVz
RnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zy
b21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3dlYlBhZ2VJRCk7CiAjZW5k
aWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcyks
IG1fd2ViUGFnZUlEKTsKIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRh
dGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYxNzcs
NyArNjE3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2Fu
Y2VsRm9yT3BlblBhbmVsKCksIG1fd2ViUGFnZUlEKTsKICAgICAKICAgICBtX29wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ciA9IG51bGxwdHI7CkBAIC02MTg1LDcgKzYxODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2FuY2VsRm9yT3BlblBhbmVsKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dv
cmQoY29uc3QgU3RyaW5nJiB3b3JkKQpAQCAtNjE5Myw3ICs2MTkzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKICAgICBpZiAo
d29yZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9X
b3JkKHdvcmQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3Rl
ckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmIGNvbW1hbmRQcm94eSwgVW5k
b09yUmVkbyB1bmRvT3JSZWRvKQpAQCAtNjIxMiw3ICs2MjEyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlbW92ZUVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkmIGNvbW1hbmQpCiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQu
Y29tbWFuZElEKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV93ZWJQ
YWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6Y2FuVW5kbygpCkBAIC02MzAxLDEyICs2
MzAxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFRleHRDaGVja2luCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0KQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVz
dWx0KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVzdWx0KSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJl
cXVlc3RJRCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENh
bmNlbENoZWNraW5nVGV4dChyZXF1ZXN0SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSwg
bV93ZWJQYWdlSUQpOwogfQogLy8gT3RoZXIKIApAQCAtNjQzNSw3ICs2NDM1LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhh
bmRsZWQpCiAgICAgICAgIGJvb2wgY2FuUHJvY2Vzc01vcmVLZXlFdmVudHMgPSAhbV9rZXlFdmVu
dFF1ZXVlLmlzRW1wdHkoKTsKICAgICAgICAgaWYgKGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzKSB7
CiAgICAgICAgICAgICBMT0coS2V5SGFuZGxpbmcsICIgVUkgcHJvY2Vzczogc2VudCBrZXlFdmVu
dCBmcm9tIGRpZFJlY2VpdmVFdmVudCIpOwotICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSksIG1fcGFn
ZUlEKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5
RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpLCBtX3dlYlBhZ2VJRCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUaGUgY2FsbCB0byBkb25lV2l0aEtleUV2ZW50IG1heSBjbG9zZSB0aGlz
IFdlYlBhZ2UuCkBAIC02Nzk5LDcgKzY3OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVT
ZXRMYXJnZXN0RnJhbWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mCiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNw
b25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6Iik7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY4MTEsNyAr
NjgxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZl
KCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZToiKTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkwNiw3ICs2
OTA2LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24o
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
c3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29u
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpc3BhdGNoUHJvY2Vz
c0RpZFRlcm1pbmF0ZTogd2ViUElEID0gJWksIHJlYXNvbiA9ICVkIiwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCByZWFzb24pOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZTogcmVhc29uID0gJWQiLCByZWFzb24p
OwogCiAgICAgYm9vbCBoYW5kbGVkQnlDbGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9sb2FkZXJD
bGllbnQpCkBAIC03MzI5LDcgKzczMjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zvcndh
cmRDbGVhcigpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVj
dG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBhZERhdGFzLCBib29sIHNob3VsZE1ha2VHYW1lcGFkc1Zp
c2libGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFk
QWN0aXZpdHkoZ2FtZXBhZERhdGFzLCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2
aXR5KGdhbWVwYWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fd2ViUGFnZUlE
KTsKIH0KIAogI2VuZGlmCkBAIC03NjM0LDcgKzc2MzQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6
d2lsbEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMoKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRl
UG9saWNpZXMpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVXZWJzaXRlUG9saWNpZXMod2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNp
dGVQb2xpY2llcyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkK
QEAgLTc2NDQsNyArNzY0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImIGl0ZW1JRCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0o
aXRlbUlEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVu
TW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKQEAgLTc2NTcsNyArNzY1Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1bk1vZGFsKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwo
bV9jYW5SdW5Nb2RhbCksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNh
blJ1bk1vZGFsKCkKQEAgLTc2NzEsNyArNzY3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdp
blByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblByaW50aW5nKGZyYW1lLT5m
cmFtZUlEKCksIHByaW50SW5mbyksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkJlZ2luUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwg
bV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQpAQCAtNzY4
MCw3ICs3NjgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBtX3BhZ2VJRCwgcHJpbnRp
bmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBtX3dlYlBhZ2VJ
RCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxDb21wdXRlZFBh
Z2VzQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NjkzLDcgKzc2OTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFByaW50SW5mbwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5Q
cmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdE
T01QcmludE9wZXJhdGlvbikpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NzA2
LDcgKzc3MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SQogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2spKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdl
U2l6ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJm
b3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJl
Y3QsIGltYWdlU2l6ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlELCBwcmludGluZ1NlbmRPcHRp
b25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNh
bGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzcxOCw3ICs3NzE4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8m
IHByaW50SW4KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJ
RCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5m
cmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikp
OwogfQogI2VsaWYgUExBVEZPUk0oR1RLKQogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0Zv
clByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc3MzEsNyArNzcz
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
aykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgp
LCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyht
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBw
cmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyht
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAjZW5kaWYKIApAQCAtNzc3Niw3
ICs3Nzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmltdW1TaXplRm9yQXV0b0xheW91
dChjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRNaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1pbmltdW1TaXplRm9yQXV0b0xheW91dChz
aXplKSwgbV93ZWJQYWdlSUQpOwogICAgIG1fZHJhd2luZ0FyZWEtPm1pbmltdW1TaXplRm9yQXV0
b0xheW91dERpZENoYW5nZSgpOwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTc3OTUsNyArNzc5NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVp
Z2h0KGJvb2wgc2hvdWxkRXhwYW5kKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEF1dG9TaXpp
bmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoc2hvdWxkRXhwYW5kKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCkBAIC03ODA4LDcgKzc4MDgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpegogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRW
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHModmlld3BvcnRTaXplKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYg
VVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtNzg3OSw3ICs3ODc5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNw
b25zZSwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZl
VGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIGlmICghaXNDbG9zZWQo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRl
cm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQo
cmVzdWx0KSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCkBAIC03OTIwLDcgKzc5MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMs
IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVw
bGFjZW1lbnRSYW5nZUVuZCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3Rh
cnQsIHNlbGVjdGlvbkVuZCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdl
RW5kKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBv
c2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9u
U3RhcnQsIGludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoKQpAQCAtNzkyOCw3ICs3OTI4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0
aW9uU3RyaW5nLCBpbnQ2NF90IHMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25m
aXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rp
b25MZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkxlbmd0aCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAgLTc5MzYsNyArNzkzNiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2FuY2VsQ29tcG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5k
aWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC03OTUzLDcgKzc5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5u
aW5nKQogICAgIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID0gcGlubmluZzsKIAogICAgIGlmICho
YXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOworICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihwaW5uaW5nKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJs
YXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBAIC03OTcxLDcgKzc5NzEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdAogICAgICAgICBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UgPSBzdGF0aWNf
Y2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHNjcm9sbGJhclN0eWxlLnZhbHVlKCkpOwogCiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9y
TWVzc2FnZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdl
KSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCkBAIC04MDE2LDcg
KzgwMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlw
ZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250
ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYm
IGNoYW5nZXMpCkBAIC04MDI0LDcgKzgwMjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdl
Rm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1v
dmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFu
Z2VzJiYgY2hhbmdlcykKQEAgLTgwMzIsNyArODAzMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
aGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92
ZShjaGFuZ2VzKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
ODA0MCw3ICs4MDQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6
Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAg
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCks
IG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFRleHRBc3luYyh0ZXh0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
ZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCkBAIC04MDQ4LDcg
KzgwNDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3Zl
KG9wdGlvbnMpKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRp
b25zKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omhhc01hcmtlZFRl
eHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTgwNTcsNyAr
ODA1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXNNYXJrZWRUZXh0KCksIFdURk1vdmUo
Y2FsbGJhY2spLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFy
a2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTgwNjgsNyArODA2OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAo
RWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VB
c3luYyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtODA3OSw3ICs4MDc5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0
aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNl
bGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTgwOTAsNyArODA5MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCBXCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3lu
Yyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtODEwMSw3ICs4MTAxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1Jhbmdl
JiByYW5nZSwgV1QKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHJlcGxhY2VtZW50UmFuZ2UpCkBAIC04MTEyLDcgKzgxMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2Vs
ZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJs
aW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb25Bc3luYygpCkBAIC04MTIw
LDcgKzgxMjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMo
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5j
KCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29u
ZmlybUNvbXBvc2l0aW9uQXN5bmMoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFi
bGVkKQpAQCAtODE0NSw3ICs4MTQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hv
dChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICB9
CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hv
dChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJp
dG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCkKQEAgLTgzMDMsNyArODMw
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25J
bmZvKFJlZjxOb3dQbGF5aW5nSW5mb0NhbGxiYWNrCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
aykpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nl
c3Npb25JbmZvKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpub3dQbGF5aW5nSW5mb0NhbGxiYWNrKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwgYm9vbCBy
ZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRv
dWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlm
aWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC04MzQ2LDIyICs4MzQ2LDIyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQg
ZXZlbnQsIE9wdGlvblNldDxBCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdlUHJveHk6
OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihGbG9hdFBvaW50IHBvaW50
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVk
aWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRl
c3RBdExvY2F0aW9uKHBvaW50KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6aW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRV
cGRhdGUoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRl
QWN0aW9uRGlkQ2FuY2VsKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ29t
cGxldGUoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRp
YXRlQWN0aW9uRGlkQ29tcGxldGUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhp
dFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIHJlc3VsdCwgYm9vbCBjb250ZW50UHJl
dmVudHNEZWZhdWx0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC04Mzc2LDcgKzgzNzYs
NyBAQCBOU09iamVjdCAqV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IGFjY2VwdGVkQ2Fu
ZGlkYXRlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShh
Y2NlcHRlZENhbmRpZGF0ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKQEAgLTgzOTQsMTcgKzgzOTQsMTcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFVzZVN5c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VTeXN0ZW1BcHBl
YXJhbmNlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBl
YXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFw
cGVhcmFuY2UpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGlu
ZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3Rp
bmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0
Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKICNlbmRpZgpAQCAtODQzMCw3
ICs4NDMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNo
YW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2kKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIHNob3VsZERpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50cykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhzaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCkBAIC04NDc5LDcgKzg0NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGxh
eWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNv
bnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRl
eHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQpAQCAtODQ4Nyw3ICs4NDg3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm8KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGRQbGF5KQpAQCAtODQ5NSw3ICs4
NDk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQ
bGF5KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSwgbV93
ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTg1MjEsNyArODUyMSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRU
ZXN0VHJpZ2dlcigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYWxs
QWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC04NTQ0LDcgKzg1NDQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChib29sIHNob3VsZFNjYWxl
Vmlld1RvRml0RG9jdQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQpAQCAtODU2NCw3ICs4NTY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNp
c2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAg
ICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247CiAgICAgICAgIGF1dG8g
bmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENhbGxiYWNrSUQobV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9uYWxDYWxsYmFja0lEKCk7
CiAKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVu
dGlmaWVyKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CiB9CiAKQEAg
LTg1ODMsNyArODU4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZChib29sIGRpc2FibGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
KGRpc2FibGVkKSwgbV93ZWJQYWdlSUQpOwogfQogCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94eTo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigp
CkBAIC04NTk2LDcgKzg1OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbihXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RAogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0
YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aGlkZVZhbGlkYXRpb25NZXNzYWdlKCkKQEAgLTg2NDMsMTQgKzg2NDMsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEFsbG93UG9pbnRlckxvY2soKQogICAgIENHRGlzcGxheUhpZGVDdXJzb3Io
Q0dNYWluRGlzcGxheUlEKCkpOwogICAgIENHQXNzb2NpYXRlTW91c2VBbmRNb3VzZUN1cnNvclBv
c2l0aW9uKGZhbHNlKTsKICNlbmRpZgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkQWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVueVBvaW50ZXJMb2NrKCkK
IHsKICAgICBBU1NFUlQobV9pc1BvaW50ZXJMb2NrUGVuZGluZyAmJiAhbV9pc1BvaW50ZXJMb2Nr
ZWQpOwogICAgIG1faXNQb2ludGVyTG9ja1BlbmRpbmcgPSBmYWxzZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1
aXJlUG9pbnRlckxvY2soKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFBvaW50ZXJVbmxvY2soKQpAQCAtODY2MSwxMiArODY2MSwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQogICAgICAgICBDR0Rpc3BsYXlTaG93Q3Vy
c29yKENHTWFpbkRpc3BsYXlJRCgpKTsKICNlbmRpZgogICAgICAgICBtX3VpQ2xpZW50LT5kaWRM
b3NlUG9pbnRlckxvY2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSwgbV93ZWJQ
YWdlSUQpOwogICAgIH0KIAogICAgIGlmIChtX2lzUG9pbnRlckxvY2tQZW5kaW5nKSB7CiAgICAg
ICAgIG1fdWlDbGllbnQtPmRpZExvc2VQb2ludGVyTG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwg
bV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfQogCiAgICAgbV9p
c1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKQEAgLTg2ODcsNyArODY4Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlZjxXZWJVUkxTY2hlbWVIYW5k
bGVyPiYmIGhhbmRsCiAgICAgYXV0byBpZGVudGlmaWVyUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5k
bGVyc0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChpZGVudGlmaWVyUmVzdWx0LCBpZGVudGlmaWVyUmVzdWx0LmlzTmV3RW50
cnkpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVS
TFNjaGVtZUhhbmRsZXIoaWRlbnRpZmllciwgY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0
ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUo
KSksIG1fd2ViUGFnZUlEKTsKIH0KIAogV2ViVVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5
Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQpAQCAtODcz
NSw3ICs4NzM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRX
aXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6V2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpXYXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCksIG1fd2Vi
UGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC04NzU0LDcgKzg3NTQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFu
Y2UoKSwgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwoKSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRD
aGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwo
KSksIG1fd2ViUGFnZUlEKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODc5Myw3ICs4
NzkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0
YWNobWVudD4mJiBhdHRhY2htZW50LCBGdW5jdGlvbjwKIAogICAgIGF1dG8gYXR0YWNobWVudElk
ZW50aWZpZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0
YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0
dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1l
bnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVu
dC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNl
dChhdHRhY2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50KSk7CiB9CiAKQEAgLTg4
MDksNyArODgwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgICAgIGRhdGFSZWZl
cmVuY2UgPSB7ICpkYXRhIH07CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNo
bWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRh
Y2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5m
aWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50
LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCkBAIC04OTY5LDcgKzg5NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxi
YWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGlj
YXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTkwMzMsNyArOTAzMyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldERlZmVyc0xvYWRpbmdGb3JUZXN0aW5nKGJvb2wg
ZGVmZXJzTG9hZGluZykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGlu
ZyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldElzVmlld1Zpc2li
bGUoYm9vbCYgcmVzdWx0KQpAQCAtOTA0NSw3ICs5MDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBhdXRvIG1vZGlmaWVycyA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVu
dFN0YXRlT2ZNb2RpZmllcktleXMoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycyksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2Rp
ZmllclN0YXRlKG1vZGlmaWVycyksIG1fd2ViUGFnZUlEKTsKICNlbmRpZgogfQogCkBAIC05MDg3
LDE5ICs5MDg3LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbihXZWJQcm9jZXNzUHJveHkmCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91Ymxl
IGJldGEsIGRvdWJsZSBnYW1tYSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1h
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2lt
dWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZXRlY3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhz
dGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHR5cGVzKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFE
ZXRlY3RlZExpbmtzKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKICNlbmRpZgpAQCAtOTI2OSw3ICs5MjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9u
SGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRz
SW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0
SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05Mjc5LDcgKzkyNzks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJ
bnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6Rm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0Q29udGV4dChj
b250ZXh0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKIH0KIAog
TG9nZ2VyJiBXZWJQYWdlUHJveHk6OmxvZ2dlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDU4N2FlYTg1Y2FiMTk2YjM2ODRkODM5MDZmMjhhZGRkN2UzYzk2NWIu
LmM5ZjgxMWZlNWJkOGIzMGZiNmJhMmQyMzdmYjRkNmIzZDYyYTlhMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTM5Miw3ICszOTMsMTAgQEAgcHVibGljOgog
CiAgICAgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0
OwogCi0gICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KKyAgICB1c2luZyBJZGVudGlmaWVyID0gV2ViUGFnZVByb3h5SWRlbnRpZmll
cjsKKworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViUGFnZUlEOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdDsKIApAQCAtMjExMyw3ICsyMTE3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFrZVN0
b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKIAotICAgIGNv
bnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIGNvbnN0IElkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlE
OwogICAgIFdlYWtQdHI8UGFnZUNsaWVudD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2EwYmIzMmZl
MTY5MDQ5MDJmMDg2YTgxNDUyYTAwOTg4NTI1OTI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBXZWJQYWdlUHJveHlJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCA0NTlhOWQzYTRhODkzZDQyOTRiMWFjM2JiYTg1MGFiNjBlM2MzN2Q5Li43NjU4
NTA2NDIzMmFlOWYxOWVjYzg4M2YyY2MzZDIzNmI2ODUyMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMzA3LDkgKzEzMDcsOSBAQCBib29sIFdl
YlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNp
dGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VC
ZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5n
V2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdl
SURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+
KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vz
c2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFdlYlBh
Z2VQcm94eUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNz
aW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzI3LDcgKzEzMjcsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJzaQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFn
ZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dl
YnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRh
U3RvcmUmIGRhdGFTdG9yZSkKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNz
aW9uSUQoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQo
c2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGFmMTZjZWY4ZDI4ZTYzOWQ3MWI2M2MzNjNjMGY3ODJkYzI5ODhlMzIuLjA4NmUzODZhNmM3NzU0
N2IwNmIxNzQ1YTQ2Mjk0MTJiNzhjMDViZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtMjA5LDggKzIwOSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQ
YWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmKTsKIAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdl
RW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRl
RGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVu
ZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0
YVN0b3JlJik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7
IH0KQEAgLTc4Myw3ICs3ODMsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9yZXNv
bHZlZFBhdGhzOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+PiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
M2EzNjI0OGZlYTZjZjVmZjYwNjBmMDBmMGRkNWQ4Y2EzZDQ5NmYxNS4uNjRiMzFmNzU5MjJmY2Q5
YTJjOTZmNjM1YmUwZTcyZWU5ZWQ4MzVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zNTEsMTEgKzM1MSwyMiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2h1dERvd24oKQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRo
aXMpOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQpCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1h
cCgpLmdldChwYWdlSUQpOwogfQogCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCit7CisgICAgLy8gRklYTUU6
IERvIGJldHRlci4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFwKCkudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHBhZ2UtPndlYlBhZ2VJRCgpID09IHdlYlBhZ2VJRCkKKyAgICAg
ICAgICAgIHJldHVybiBwYWdlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCiB7CkBA
IC0zOTMsMTYgKzQwNCwxNiBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgQmVn
aW5zVXNpbmdEYXRhU3RvcmUgYmVnaW5zVXNpbmdEYXRhU3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFt
X3BhZ2VNYXAuY29udGFpbnMod2ViUGFnZS5wYWdlSUQoKSkpOwotICAgIEFTU0VSVCghZ2xvYmFs
UGFnZU1hcCgpLmNvbnRhaW5zKHdlYlBhZ2UucGFnZUlEKCkpKTsKKyAgICBBU1NFUlQoIW1fcGFn
ZU1hcC5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkpOworICAgIEFTU0VSVCghZ2xvYmFs
UGFnZU1hcCgpLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIW1faXNJblByb2Nlc3NDYWNoZSk7CiAgICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3Rv
cmUgfHwgbV93ZWJzaXRlRGF0YVN0b3JlID09ICZ3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7
CiAKICAgICBpZiAoYmVnaW5zVXNpbmdEYXRhU3RvcmUgPT0gQmVnaW5zVXNpbmdEYXRhU3RvcmU6
OlllcykKLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKHdlYlBhZ2UucGFnZUlEKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAg
ICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2Uu
aWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKLSAgICBtX3BhZ2VN
YXAuc2V0KHdlYlBhZ2UucGFnZUlEKCksICZ3ZWJQYWdlKTsKLSAgICBnbG9iYWxQYWdlTWFwKCku
c2V0KHdlYlBhZ2UucGFnZUlEKCksICZ3ZWJQYWdlKTsKKyAgICBtX3BhZ2VNYXAuc2V0KHdlYlBh
Z2UuaWRlbnRpZmllcigpLCAmd2ViUGFnZSk7CisgICAgZ2xvYmFsUGFnZU1hcCgpLnNldCh3ZWJQ
YWdlLmlkZW50aWZpZXIoKSwgJndlYlBhZ2UpOwogCiAgICAgdXBkYXRlUmVnaXN0cmF0aW9uV2l0
aERhdGFTdG9yZSgpOwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7
CkBAIC00MjEsMTUgKzQzMiwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWFya0lzTm9Mb25n
ZXJJblByZXdhcm1lZFBvb2woKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEVuZHNVc2luZ0RhdGFTdG9yZSBlbmRzVXNpbmdEYXRh
U3RvcmUpCiB7Ci0gICAgYXV0byogcmVtb3ZlZFBhZ2UgPSBtX3BhZ2VNYXAudGFrZSh3ZWJQYWdl
LnBhZ2VJRCgpKTsKKyAgICBhdXRvKiByZW1vdmVkUGFnZSA9IG1fcGFnZU1hcC50YWtlKHdlYlBh
Z2UuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQYWdlLCByZW1vdmVk
UGFnZSA9PSAmd2ViUGFnZSk7Ci0gICAgcmVtb3ZlZFBhZ2UgPSBnbG9iYWxQYWdlTWFwKCkudGFr
ZSh3ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICByZW1vdmVkUGFnZSA9IGdsb2JhbFBhZ2VNYXAoKS50
YWtlKHdlYlBhZ2UuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQYWdl
LCByZW1vdmVkUGFnZSA9PSAmd2ViUGFnZSk7CiAKICAgICBpZiAoZW5kc1VzaW5nRGF0YVN0b3Jl
ID09IEVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKQotICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdl
RW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UucGFnZUlEKCksIHdlYlBhZ2Uud2Vic2l0
ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkpOwogCi0gICAgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIod2ViUGFnZS52aXNpdGVkTGlu
a1N0b3JlKCksIHdlYlBhZ2UucGFnZUlEKCkpOworICAgIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVV
c2VyKHdlYlBhZ2UudmlzaXRlZExpbmtTdG9yZSgpLCB3ZWJQYWdlLmlkZW50aWZpZXIoKSk7CiAg
ICAgdXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgpOwogCiAgICAgdXBkYXRlQmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKQEAgLTQzNywxMCArNDQ4LDEwIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5kc1Vz
aW5nRGF0YVN0b3JlIGVuCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRl
ZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3Rv
cmUsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0g
bV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtd
IHsKLSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKKyAgICAgICAg
cmV0dXJuIEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4geyB9OwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVCghdXNlcnMuY29udGFpbnMocGFnZUlEKSk7CkBAIC00
NTAsNyArNDYxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVV
c2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUKICAgICAgICAgdmlzaXRlZExp
bmtTdG9yZS5hZGRQcm9jZXNzKCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJl
bW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3Rv
cmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVW
aXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ID0gbV92aXNpdGVk
TGlua1N0b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNpdGVkTGlua1N0b3JlKTsKICAgICBpZiAoaXQg
PT0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbmQoKSkKQEAgLTU2MywxMCArNTc0LDEw
IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0K
ICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElE
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQ
cm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0
CiB7CiAgICAgZm9yIChhdXRvKiBwcm92aXNpb25hbFBhZ2UgOiBtX3Byb3Zpc2lvbmFsUGFnZXMp
IHsKLSAgICAgICAgaWYgKHByb3Zpc2lvbmFsUGFnZS0+cGFnZSgpLnBhZ2VJRCgpID09IHBhZ2VJ
RCkKKyAgICAgICAgaWYgKHByb3Zpc2lvbmFsUGFnZS0+cGFnZSgpLmlkZW50aWZpZXIoKSA9PSBw
YWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNTgwLDcgKzU5MSw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0FsbG93ZWRUb1Vw
ZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpCiAgICAgaWYgKGhh
c1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChpdGVtLnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAoaXRlbS5zdXNwZW5kZWRQYWdlKCkgJiYgaXRlbS5zdXNwZW5kZWRQYWdl
KCktPnBhZ2UoKS5wYWdlSUQoKSA9PSBpdGVtLnBhZ2VJRCgpICYmICZpdGVtLnN1c3BlbmRlZFBh
Z2UoKS0+cHJvY2VzcygpID09IHRoaXMpCisgICAgaWYgKGl0ZW0uc3VzcGVuZGVkUGFnZSgpICYm
IGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wYWdlKCkuaWRlbnRpZmllcigpID09IGl0ZW0ucGFnZUlE
KCkgJiYgJml0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCkgPT0gdGhpcykKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTUzLDcgKzExNjQsNyBAQCBS
ZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyhBUEk6Ok9iamVjdCogb2JqZQogICAgICAgICAgICAgICAgIHJldHVybiBBUEk6OkZyYW1l
SGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhzdGF0aWNfY2FzdDxjb25zdCBXZWJGcmFtZVBy
b3h5Jj4ob2JqZWN0KS5mcmFtZUlEKCkpOwogCiAgICAgICAgICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlOjpQYWdlOgotICAgICAgICAgICAgICAgIHJldHVybiBBUEk6OlBhZ2VIYW5kbGU6OmNy
ZWF0ZUF1dG9jb252ZXJ0aW5nKHN0YXRpY19jYXN0PGNvbnN0IFdlYlBhZ2VQcm94eSY+KG9iamVj
dCkucGFnZUlEKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBBUEk6OlBhZ2VIYW5kbGU6OmNy
ZWF0ZUF1dG9jb252ZXJ0aW5nKHN0YXRpY19jYXN0PGNvbnN0IFdlYlBhZ2VQcm94eSY+KG9iamVj
dCkud2ViUGFnZUlEKCkpOwogCiAgICAgICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpQ
YWdlR3JvdXA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUdyb3VwSGFuZGxlOjpj
cmVhdGUoV2ViUGFnZUdyb3VwRGF0YShzdGF0aWNfY2FzdDxjb25zdCBXZWJQYWdlR3JvdXAmPihv
YmplY3QpLmRhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAppbmRleCBiZjNjZDJhZDEzZmViNTJmOGRmMjk5NWQ2ZTlkNmE2MDEzYjRkN2IxLi40N2EyNDNk
OTcwYTY4OWIxMDMxYjY3NGIxNmQ0NTljOGFmMjU2ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlc3Bv
bnNpdmVuZXNzVGltZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlV2ViUGFnZUNvdW50ZXIuaCIKICNp
bmNsdWRlICJXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CkBAIC05OSw3ICsxMDAsNyBAQCBlbnVtIGNsYXNz
IEFsbG93UHJvY2Vzc0NhY2hpbmcgeyBObywgWWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkg
OiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1l
cjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5Piwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Ro
cm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwot
ICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5
Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNlckluaXRp
YXRlZEFjdGlvbk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAtMTMxLDYg
KzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURh
dGFTdG9yZSYpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvcklkZW50
aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHN0YXRpYyBXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQ
cm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b24+JiYpOwogCkBAIC0xNTQsOCArMTU2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRDcmVh
dGVXZWJQYWdlSW5Qcm9jZXNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAotICAgIHZvaWQg
YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRM
aW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBhZGRWaXNpdGVk
TGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7
CisgICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwg
V2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0zNTEsNyArMzUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzKHVp
bnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hlY2tQcm9jZXNz
TG9jYWxQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGlz
TG9jYWxseVJlYWNoYWJsZSk7CiAKLSAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CisgICAgYm9vbCBoYXNQcm92aXNpb25hbFBh
Z2VXaXRoSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93
ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7
CiAKICAgICAvLyBQbHVnaW5zCkBAIC00NDYsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
U2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJ
bml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1h
cDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1f
dmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3Jl
KiwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dp
dGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1l
c1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IDdkNTc1YTQwNGIwNDViOTFhZDdhYzhl
NjY3NjBkMDhiZTM4YjkxZGUuLjVhNmNjOTVkMGY4MzQ0ZjhmMGY5ZDRmMDYwMWJiMmRkY2E3OGE4
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNr
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgYXV0byBy
ZXN1bHQgPSBtX3Rhc2tzLmFkZCh0YXNrSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lVGFzazo6Y3Jl
YXRlKCp0aGlzLCBwYWdlLCBwcm9jZXNzLCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3
RW50cnkpOwogCi0gICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5h
ZGQocGFnZS5wYWdlSUQoKSwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgYXV0byBwYWdlRW50
cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hT
ZXQ8dWludDY0X3Q+KCkpOwogICAgIEFTU0VSVCghcGFnZUVudHJ5Lml0ZXJhdG9yLT52YWx1ZS5j
b250YWlucyh0YXNrSWRlbnRpZmllcikpOwogICAgIHBhZ2VFbnRyeS5pdGVyYXRvci0+dmFsdWUu
YWRkKHRhc2tJZGVudGlmaWVyKTsKIApAQCAtNzAsNyArNzAsNyBAQCBXZWJQcm9jZXNzUHJveHkq
IFdlYlVSTFNjaGVtZUhhbmRsZXI6OnByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih1aW50NjRfdCB0
YXNrSWRlbgogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BBbGxUYXNrc0ZvclBhZ2Uo
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5wYWdlSUQoKSk7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5p
ZGVudGlmaWVyKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmll
ci5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCB0YXNr
SWRlbnRpZmllcikKICAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3AoKTsKICAgICBwbGF0Zm9ybVN0
b3BUYXNrKHBhZ2UsIGl0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICByZW1vdmVUYXNrRnJvbVBhZ2VN
YXAocGFnZS5wYWdlSUQoKSwgdGFza0lkZW50aWZpZXIpOworICAgIHJlbW92ZVRhc2tGcm9tUGFn
ZU1hcChwYWdlLmlkZW50aWZpZXIoKSwgdGFza0lkZW50aWZpZXIpOwogICAgIG1fdGFza3MucmVt
b3ZlKGl0ZXJhdG9yKTsKIH0KIApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlcjo6dGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRm
b3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpy
ZW1vdmVUYXNrRnJvbVBhZ2VNYXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0YXNr
SUQpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNT
RVJUKGl0ZXJhdG9yICE9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCAwOGY4ZjViYTQy
MzI1NTgwMzAyMGQ4ODNiYzg1NjA1OWIwYjU4ZDhiLi5kNThjN2U1NjczMjYxMjg5YjdjZDNjMDhm
NDBiYzZiZTk4ZDRjZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oCkBAIC02NiwxMyArNjYsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVUYXNrJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFz
ayYpID0gMDsKIAotICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSUQpOworICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdl
TWFwKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAg
ICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdl
YlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBI
YXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tz
QnlQYWdlSWRlbnRpZmllcjsKICAgICAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1f
c3luY0xvYWRDb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCAwMzYyMWMwYmIzN2UwMTMwZTU2NmUzNzIwOTE3NDY3
NTI0OTliNWM2Li5kNjFmMTM2MjI2NDg2ODZlMjc0ZDExYWMxOTQwMzk4YWNlZjViZjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9wYWdlKCZwYWdlKQogICAg
ICwgbV9wcm9jZXNzKG1ha2VSZWYocHJvY2VzcykpCiAgICAgLCBtX2lkZW50aWZpZXIocmVzb3Vy
Y2VJZGVudGlmaWVyKQotICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlLnBhZ2VJRCgpKQorICAg
ICwgbV9wYWdlSWRlbnRpZmllcihwYWdlLmlkZW50aWZpZXIoKSkKICAgICAsIG1fcmVxdWVzdChX
VEZNb3ZlKHJlcXVlc3QpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShz
eW5jQ29tcGxldGlvbkhhbmRsZXIpKQogewpAQCAtODIsNyArODIsNyBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9ucwogICAgICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAgIH0KIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1S
ZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVy
LCByZXNwb25zZSwgcmVxdWVzdCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlv
bihtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25z
ZSwgcmVxdWVzdCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6Ok5vbmU7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+
IEUKICAgICBpZiAoaXNTeW5jKCkpCiAgICAgICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRl
bnRpZmllciwgcmVzcG9uc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91
cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpLCBt
X3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0K
IApAQCAtMTM0LDcgKzEzNCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHsgYnVmZmVyIH0pLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwg
bV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENv
bXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVy
cm9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVu
dGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAg
ICBtX3VybFNjaGVtZUhhbmRsZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCiAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKaW5kZXggNzY3MzNmNzRjZjZkNzI2M2Y5MmM1MGM3YTg5MjI0OGRkYjYzNTEzMS4u
MzliMmZlYjQzYmZjNzc5YWUyZjE2YmFlMTc4MmZjNzQ2NWU4YzY0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6
CiAgICAgfldlYlVSTFNjaGVtZVRhc2soKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBj
b25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
LSAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MoKSB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7
IH0KIApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdl
OwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBt
X2lkZW50aWZpZXI7Ci0gICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmll
cjsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBtdXRhYmxlIExvY2sgbV9yZXF1
ZXN0TG9jazsKICAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmlu
ZGV4IGUyZGY0MTdkMmU4MDRkMzA3ZGU0NDk2YzI1YjRmM2ExM2NiMmIxNmEuLjk1YWVkZmUxNDM3
OGU2YTU4NDI0ZTc1ZTViM2RlNWE4ZGY4ZWNiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTUx
LDcgKzE1NTEsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNzUG9v
bC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXND
YXB0dXJlZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjZmMzU2
YWJkODZiN2Y5NjAzNDBiOGI2OWQzM2RhNmMwOWJkZmZiMy4uZjUyZmFkZWU4Yzg2YmMxYWZjNWQ3
MTg4Y2VhYTI1MWRhZGE5ZGM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llLmg+CkBAIC0xMzksNyArMTQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7
CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBsb2dV
c2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYp
OworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYm
KTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1Jl
Z2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNv
bnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3Bw
CmluZGV4IDM4OTE5OGEyMDMzZDczN2ViMDIzNDc1NzY4OGQyOWJmMjlmNWRmZTUuLjA4NjdkOTgz
ZTVkZmYwNjZmYjkyZTc3OGY5Nzg0NjI5NDAzMzE4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVy
KQogewotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVy
Rm9yWm9vbUdlc3R1cmUoY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpLCBNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmU6OlJlcGx5KGNlbnRlciksIG1fcGFnZUlEKTsKKyAg
ICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21H
ZXN0dXJlKGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldENl
bnRlckZvclpvb21HZXN0dXJlOjpSZXBseShjZW50ZXIpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIGJv
b2wgV2ViUGFnZVByb3h5OjptYWtlR0xDb250ZXh0Q3VycmVudCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXgg
NjFlODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0Ni4uNTUzYTNhY2JkNTY1NzI5
YjYzOWQ4MjUwMDEwNDYxMjlhM2MxOGQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtNDYsMTMgKzQ2LDEz
IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcihXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICA6IG1fd2ViUGFnZVByb3h5KG1ha2VXZWFrUHRy
KHdlYlBhZ2VQcm94eSkpCiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IG1fd2ViUGFn
ZVByb3h5LmdldCgpKQotICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICAgICAgd2ViUGFn
ZVByb3h5LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPndlYlBh
Z2VJRCgpLCAqdGhpcyk7CiB9CiAKIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjp+RWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBtX3dlYlBh
Z2VQcm94eS5nZXQoKSkKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKKyAgICAgICAgd2ViUGFnZVBy
b3h5LT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlUHJveHktPndlYlBh
Z2VJRCgpKTsKIH0KIAogRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVu
c3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQg
ZW1iZWRkZWRWaWV3SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCmluZGV4IGMwZTQzZGNiMTI2MTlj
NDRiZWE5YzdmY2YwOWEzYjkxMjdjOTQ4MmQuLjgwOGY3ZjcyMjU4NjJhNTMzMTkyNmViMmZlZTU1
ZTNhMDdkOTE2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCkBAIC01OCwxNyArNTgsMTcgQEAg
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
cihXS0NvbnRlbnRWaWV3ICpjb250ZW4KICAgICA6IG1fd2ViUGFnZVByb3h5KCpjb250ZW50Vmll
dy5wYWdlKQogICAgICwgbV9jb250ZW50Vmlldyhjb250ZW50VmlldykKIHsKLSAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgKnRoaXMpOwogfQog
CiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp+U21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcigpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQ
YWdlSUQoKSk7CiB9CiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6aGFuZGxl
U21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKIHsKLSAgICBtX3dl
YlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmln
aW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJv
eHkud2ViUGFnZUlEKCkpOwogfQogCiB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
OmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxl
cklPUy5tbQppbmRleCBjZWZkZTYxYzQ5YjUyYWNkNmYwODkwODgyMDZiOGQ2NmM3NTUwMjUxLi5l
NGY3NTdjZGYyNjQ0YjU4NTdkYzhlMzQwN2FkNGFkMzJhN2FhY2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0K
QEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lw
ZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbgogICAgICAgICBpZiAo
ZmluaXNoKQogICAgICAgICAgICAgbV93ZWJQYWdlUHJveHlGb3JCYWNrRm9yd2FyZExpc3RGb3JD
dXJyZW50U3dpcGUtPm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh0cmFuc2l0aW9uQ29tcGxldGVk
LCAqdGFyZ2V0SXRlbSk7CiAgICAgfV07Ci0gICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LmlkZW50aWZpZXIo
KTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIFtt
X3N3aXBlVHJhbnNpdGlvbkNvbnRleHQgX3NldENvbXBsZXRpb25IYW5kbGVyOltwYWdlSUQsIGdl
c3R1cmVJRCwgdGFyZ2V0SXRlbV0gKF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQg
KmNvbnRleHQsIEJPT0wgZGlkQ29tcGxldGUpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNv
bnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC0z
MjEsNyArMzIxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVy
ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLAogICAgICAgICBtX3dlYlBhZ2VQ
cm94eS5kaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CiAKLSAgICBhdXRvIHBhZ2VJ
RCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdl
UHJveHkuaWRlbnRpZmllcigpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRH
ZXN0dXJlSUQ7CiAgICAgbV9sb2FkQ2FsbGJhY2sgPSBbdGhpcywgcGFnZUlELCBnZXN0dXJlSURd
IHsKICAgICAgICAgYXV0byBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFs
RHJhd2luZ0FyZWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggMDRmOWM2ZTI3MDJlN2Q4N2NlNTY4YmUyMDIxMWU3MDZkNzFiYzJlZS4uYWY5
MmRkMjAwMTM5Nzk1ZGQ2MTFkMjQ5NzhmOGRiOTVkNDQxM2VjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTc0NSw3ICs3NDUsNyBAQCAtIChO
U1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVyICopcHJpbnRGbwogLSAoQ0dQREZEb2N1bWVudFJlZilfd2tfcHJpbnRlZERvY3Vt
ZW50CiB7CiAgICAgaWYgKF9pc1ByaW50aW5nVG9QREYpIHsKLSAgICAgICAgaWYgKCFfcGFnZS0+
cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2s+KF9wYWdlLT5wYWdlSUQoKSwg
U2Vjb25kczo6aW5maW5pdHkoKSkpIHsKKyAgICAgICAgaWYgKCFfcGFnZS0+cHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2s+KF9wYWdlLT53ZWJQYWdlSUQoKSwgU2Vjb25kczo6
aW5maW5pdHkoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGU0NDg1
YTlmMGM5Mzk4M2MxOTA3NGFmYWZmNGJjODdkNDg1MTA2MDYuLjcxMWJkMTU4NDIwOWVlMjk0ZjQx
YWZhZDM5NDYwNzFjYjYzYTIyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTk5OCw5ICsxOTk4LDkg
QEAgLSAoQk9PTCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTooV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWUKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYg
KFtzZWxmIF9oYXNWYWxpZE91dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3Q6cmVx
dWVzdF0pCi0gICAgICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1h
dGlvbj4oX3BhZ2UtPnBhZ2VJRCgpLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0
V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24t
PndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uPihfcGFnZS0+d2ViUGFnZUlEKCksIDFfcywgSVBD
OjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwog
Ci0gICAgYm9vbCByZWNlaXZlZFJlc3BvbnNlID0gX3BhZ2UtPnByb2Nlc3MoKS5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb246OlJlcGx5KF9wb3NpdGlvbkluZm9y
bWF0aW9uKSwgX3BhZ2UtPnBhZ2VJRCgpLCAxX3MsIElQQzo6U2VuZFN5bmNPcHRpb246OkZvcmNl
RGlzcGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpOwor
ICAgIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSA9IF9wYWdlLT5wcm9jZXNzKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb24ocmVxdWVzdCksIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9uOjpSZXBseShfcG9zaXRpb25JbmZvcm1h
dGlvbiksIF9wYWdlLT53ZWJQYWdlSUQoKSwgMV9zLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpGb3Jj
ZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5KTsK
ICAgICBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uID0gcmVjZWl2ZWRSZXNwb25zZSAmJiBf
cG9zaXRpb25JbmZvcm1hdGlvbi5jYW5CZVZhbGlkOwogICAgIAogICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIGNsZWFuIHVwIHRoZXNlIGhhbmRsZXJzIGluIHRoZSBldmVudCB0aGF0IHdlIGFyZSBu
b3QgYWJsZSB0byBjb2xsZWN0IGRhdGEsIG9yIGlmIHRoZSBXZWJQcm9jZXNzIGNyYXNoZXMuCkBA
IC0zOTUzLDcgKzM5NTMsNyBAQCAtICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tBdXRvY29ycgogICAgIF9wYWdlLT5y
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAKICAgICBpZiAodXNlU3luY1JlcXVlc3Qp
IHsKLSAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0
aW9uQ29udGV4dD4oX3BhZ2UtPnBhZ2VJRCgpLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50
ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dD4oX3BhZ2UtPndlYlBh
Z2VJRCgpLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzKTsKICAgICAgICAgW3NlbGYgX2NhbmNlbFBlbmRpbmdBdXRvY29ycmVjdGlv
bkNvbnRleHRIYW5kbGVyXTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiYmUzOWY0ZjNlNTU4NGI1MDc0OTkxZmMyYWE1
NjYwNjJiZTQ1ODIxLi4wZDhkOGZkYmYxYTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAg
LTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb2N1c2VkRQogICAgIH0KIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUpCkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
JgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlKG1fcGFnZUlELCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCAwKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGUobV93ZWJQYWdlSUQsIHZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZW5kTGFzdFZpc2libGVDb250ZW50
UmVjdHMoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6Vmlld1VwZGF0ZURpc3Bh
dGNoZXI6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZShtX3BhZ2VJRCwgbV9sYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKG1fd2ViUGFnZUlELCBt
X2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCAwKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnVwZGF0ZVN0cmluZ0ZvckZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0zMDUsNyAr
MzA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29u
c3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSwgY28KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUodmlld0xheW91dFNpemUs
CiAgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0
LCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwKICAgICAgICAgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNj
cm9sbFZpZXdDb29yZGluYXRlcywgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLAotICAgICAgICB0
YXJnZXRTY2FsZSwgZGV2aWNlT3JpZW50YXRpb24sIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJ
RCksIG1fcGFnZUlEKTsKKyAgICAgICAgdGFyZ2V0U2NhbGUsIGRldmljZU9yaWVudGF0aW9uLCBk
eW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGRvdWJsZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmlt
dW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaQogICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUVmZmVjdGl2ZURl
dmljZVdpZHRoID0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOwogCiAgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUoc2l6ZSwgc2NhbGVGYWN0
b3IsIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25W
aWV3TGF5b3V0U2l6ZShzaXplLCBzY2FsZUZhY3RvciwgbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9yY2VBbHdh
eXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxh
YmxlKQogICAgIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgPSB1c2VyU2NhbGFibGU7CiAKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSh1c2VyU2NhbGFibGUpLCBt
X3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUodXNlclNjYWxhYmxlKSwgbV93ZWJQYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgc2l6ZSkKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSkKICAgICBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IHNpemU7CiAKICAgICBpZiAoaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUo
c2l6ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldERldmljZU9y
aWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24pCkBAIC0zNDEsNyArMzQxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldERldmljZU9yaWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3Jp
ZW50YXRpb24pCiAgICAgaWYgKGRldmljZU9yaWVudGF0aW9uICE9IG1fZGV2aWNlT3JpZW50YXRp
b24pIHsKICAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IGRldmljZU9yaWVudGF0aW9uOwog
ICAgICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RGV2aWNlT3JpZW50YXRpb24oZGV2aWNlT3JpZW50
YXRpb24pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldERldmljZU9yaWVudGF0aW9uKGRldmljZU9yaWVudGF0aW9uKSwgbV93ZWJQ
YWdlSUQpOwogICAgIH0KIH0KIApAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJn
dW1lbnRzCiAgICAgbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzID0gdmlld3BvcnRBcmd1bWVu
dHM7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdw
b3J0QXJndW1lbnRzKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVu
dHMpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHN0YXRpYyBib29sIGV4Y2VlZHNSZW5kZXJUcmVlU2l6
ZVNpemVUaHJlc2hvbGQodWludDY0X3QgdGhyZXNob2xkU2l6ZSwgdWludDY0X3QgY29tbWl0dGVk
U2l6ZSkKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdl
c3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleAogICAgIH0K
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdl
c3R1cmUocG9pbnQsICh1aW50MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVT
dGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhH
ZXN0dXJlKHBvaW50LCAodWludDMyX3QpZ3JhbnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0dXJl
U3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9v
bCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKQEAgLTQyNiwxNyArNDI2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVT
ZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWluCiAg
ICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVT
ZWxlY3Rpb25XaXRoVG91Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVw
bGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3
VGV4dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VE
aWN0YXRlZFRleHQob2xkVGV4dCwgbmV3VGV4dCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VEaWN0YXRlZFRleHQob2xkVGV4dCwgbmV3
VGV4dCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxl
Y3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRU
ZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rp
b25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYgY2FsbGJhY2spCkBAIC00NDUsNyAr
NDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29u
c3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAgICAgICAgY2FsbGJhY2soeyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25E
YXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YSh0ZXh0Rm9yQXV0b2NvcnJlY3Rp
b24pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC00NTYsMTMgKzQ1
NiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9u
LCBvcmlnaW5hbFRleHQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9y
aWdpbmFsVGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCkKIHsKICAgICBib29sIGF1dG9jb3JyZWN0aW9uQXBwbGll
ZCA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlN5
bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCksIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTeW5jQXBwbHlBdXRvY29ycmVjdGlvbjo6UmVwbHkoYXV0b2NvcnJlY3Rpb25B
cHBsaWVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OlN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCks
IE1lc3NhZ2VzOjpXZWJQYWdlOjpTeW5jQXBwbHlBdXRvY29ycmVjdGlvbjo6UmVwbHkoYXV0b2Nv
cnJlY3Rpb25BcHBsaWVkKSwgbV93ZWJQYWdlSUQpOwogICAgIHJldHVybiBhdXRvY29ycmVjdGlv
bkFwcGxpZWQ7CiB9CiAKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9p
bgogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZ3JhbnVsYXJpdHkpLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihncmFudWxhcml0eSksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVj
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxl
bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBv
c2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAg
ICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0
eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRp
cmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVT
ZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkK
ICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpN
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpN
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9z
aXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIGJvb2wgaXNJCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVp
bnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNTE4
LDcgKzUxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9u
KFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgfQogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVj
dGlvbihkaXJlY3Rpb24sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlv
biwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZv
aWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBA
IC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwKICAgICB9CiAgICAgCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgCiB9CiAK
QEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgIH0KICAgICAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFj
dGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludEFuZEJvdW5kYXJ5KHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICAKIH0KIApAQCAtNTUz
LDEyICs1NTMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICB9CiAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25Db250ZXh0KCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgbV93ZWJQYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNv
bnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYgY29udGV4dCkKQEAgLTU3NCwxNyArNTc0LDE3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgdWlu
dDY0X3QgcmVxdWVzdElEKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHBvaW50LCBtb2RpZmllcnMsIHJlcXVlc3RJRCks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxl
VHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwgbW9kaWZpZXJzLCByZXF1ZXN0SUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3QgcmVxdWVzdElEKQog
ewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVTdHlsdXNTaW5n
bGVUYXBBdFBvaW50KHBvaW50LCByZXF1ZXN0SUQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQocG9p
bnQsIHJlcXVlc3RJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
bGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWlu
dDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0
V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQwog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0
V2l0aFR3b1RvdWNoZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RXaXRoVHdvVG91Y2hlcyhmcm9tLCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0
ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJiBpbmZvKQpAQCAtNjA1LDIyICs2MDUsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFAKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24o
cmVxdWVzdCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRp
b24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKHBvaW50KSwgbV93ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEludGVyYWN0aW9uKCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BJbnRlcmFjdGlvbigpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wSW50
ZXJhY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9y
bUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uT25FbGVtZW50KGFjdGlvbiksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rp
b25PbkVsZW1lbnQoYWN0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhh
bmRsZSwgdWludDY0X3QgaW1hZ2VTaXplKQpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCiAgICAgaWYgKGlzU3VzcGVu
ZGVkVW5kZXJMb2NrKQogICAgICAgICBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp0aGlz
KS5yZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmF2aWdhdGlvblN0YXRlOjpOZXR3b3JrQWN0
aXZpdHlUb2tlblJlbGVhc2VSZWFzb246OlNjcmVlbkxvY2tlZCk7CiAjZW5kaWYKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNw
ZW5kZWRVbmRlckxvY2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojph
cHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKCkK
QEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRGaW5p
c2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCgpCiAgICAgICAgIG1fZHJhd2lu
Z0FyZWEtPnByZXBhcmVGb3JBcHBTdXNwZW5zaW9uKCk7CiAgICAgICAgIG1fZHJhd2luZ0FyZWEt
PmhpZGVDb250ZW50VW50aWxQZW5kaW5nVXBkYXRlKCk7CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdB
ZnRlckVudGVyaW5nQmFja2dyb3VuZCgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVy
RW50ZXJpbmdCYWNrZ3JvdW5kKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJv
eHk6OmlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZSgpCkBAIC02NjAsMTMgKzY2MCwxMyBAQCBib29s
IFdlYlBhZ2VQcm94eTo6aXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCkKIHZvaWQgV2ViUGFnZVBy
b3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogewogICAgIGJvb2wgaXNTdXNw
ZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV9wYWdlSUQpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQo
aXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNT
dXNwZW5kZWRVbmRlckxvY2spLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpIYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChpc0lu
SGFyZHdhcmVLZXlib2FyZE1vZGUoKSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKQEAgLTY3NSwxNyArNjc1LDE3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcikKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogI2VuZGlmCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2VsZWN0aW9u
KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSkpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTZWxlY3Rpb24oc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXb3JkQmFja3dhcmQoKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V29yZEJhY2t3YXJkKCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIHVpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC02OTYsNyArNjk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RS
ZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3IKICAg
ICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRS
ZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZ3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0
aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBvZmZz
ZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25z
dCBTdHJpbmcmIHRleHQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpAQCAtNzA3LDIyICs3MDcsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFMKICAgICB9CiAg
ICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNl
bGVjdGlvbk9mZnNldFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJp
bGl0eShib29sIHNob3VsZFN0b3JlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KHNob3VsZFN0b3JlKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmVTZWxl
Y3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KHNob3VsZFN0b3JlKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBwb3NpdGlvbkluV2luZG93KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihwb3NpdGlvbkluV2lu
ZG93KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihwb3NpdGlvbkluV2luZG93KSwgbV93ZWJQYWdlSUQp
OwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbEF1dG9zY3JvbGwoKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQXV0b3Njcm9sbCgpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxB
dXRvc2Nyb2xsKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVT
ZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzMzLDcgKzczMyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQs
IFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Ok1vdmVTZWxlY3Rpb25CeU9mZnNldChvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBFZGl0
b3JTdGF0ZSYgc3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93VG9rZW4p
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lz
dGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2Vu
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9jdXNPcldp
bmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCwgYm9vbCkKQEAgLTgwNiw1OCArODA2LDU4IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3VzZShpbnQsIGNvbnN0IFdlYktpdDo6V2Vi
TW91c2VFdmVudCYpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3RhcnRVc2VyVHJpZ2dlcmVk
Wm9vbWluZygpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbGxT
dGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6V2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cG90ZW50aWFsVGFwQXRQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwgYm9vbCBzaG91bGRSZXF1ZXN0
TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uLCB1aW50NjRfdCYgcmVxdWVzdElEKQogewogICAgIGhp
ZGVWYWxpZGF0aW9uTWVzc2FnZSgpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHJlcXVlc3RJRCwgcG9zaXRpb24sIHNob3VsZFJl
cXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvdGVudGlhbFRhcEF0UG9zaXRpb24ocmVxdWVzdElE
LCBwb3NpdGlvbiwgc2hvdWxkUmVxdWVzdE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbiksIG1fd2Vi
UGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFBvdGVudGlhbFRhcChPcHRp
b25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIFRyYW5zYWN0aW9uSUQgbGF5ZXJU
cmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQsIFdlYkNvcmU6OlBvaW50ZXJJRCBwb2lu
dGVySWQpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbW1pdFBv
dGVudGlhbFRhcChtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0
YXJ0LCBwb2ludGVySWQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbW1pdFBvdGVudGlhbFRhcChtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0
aW9uSWRBdExhc3RUb3VjaFN0YXJ0LCBwb2ludGVySWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpjYW5jZWxQb3RlbnRpYWxUYXAoKQogewotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb3RlbnRpYWxUYXAoKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb3RlbnRpYWxUYXAo
KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dGFwSGlnaGxpZ2h0QXRQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwgdWludDY0X3QmIHJl
cXVlc3RJRCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFwSGln
aGxpZ2h0QXRQb3NpdGlvbihyZXF1ZXN0SUQsIHBvc2l0aW9uKSwgbV9wYWdlSUQpOworICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYXBIaWdobGlnaHRBdFBvc2l0aW9uKHJl
cXVlc3RJRCwgcG9zaXRpb24pLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVUYXAoY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJFdmVu
dDo6TW9kaWZpZXI+IG1vZGlmaWVycywgVHJhbnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlv
bklkQXRMYXN0VG91Y2hTdGFydCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SGFuZGxlVGFwKHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIG1vZGlmaWVycywgbGF5
ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQpLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVRhcChyb3VuZGVkSW50UG9pbnQo
bG9jYXRpb24pLCBtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0
YXJ0KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjb2duaXpl
TG9uZ1ByZXNzKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
UmVjb2duaXplTG9uZ1ByZXNzKCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVjb2duaXplTG9uZ1ByZXNzKCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9k
aWZpZXI+IG1vZGlmaWVycywgVHJhbnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRM
YXN0VG91Y2hTdGFydCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KHBvaW50LCBtb2RpZmllcnMsIGxh
eWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KSwgbV9wYWdlSUQpOworICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVEb3VibGVUYXBGb3JEb3VibGVD
bGlja0F0UG9pbnQocG9pbnQsIG1vZGlmaWVycywgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFz
dFRvdWNoU3RhcnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNw
ZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHBvc2l0aW9uKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNw
ZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKHBvc2l0aW9uKSwgbV9wYWdlSUQpOworICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoTW92
ZWRUb1Bvc2l0aW9uKHBvc2l0aW9uKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihwb3NpdGlvbiksIG1fcGFn
ZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9k
ZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihwb3NpdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmJsdXJGb2N1c2VkRWxlbWVudCgpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJsdXJGb2N1c2VkRWxlbWVudCgpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJsdXJGb2N1c2VkRWxlbWVudCgp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIEZsb2F0U2l6ZSBXZWJQYWdlUHJveHk6OnNjcmVlblNpemUo
KQpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRUYXBIaWdobGln
aHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRJc1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChib29sIHNo
b3dpbmdJbnB1dFZpZXcpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50KHNob3dpbmdJbnB1dFZpZXcp
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElz
U2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50KHNob3dpbmdJbnB1dFZpZXcpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVJbnB1dENvbnRleHRBZnRl
ckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnQoKQpAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWxlYXNlQWxsVG91Y2hQb2ludHMoKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBdXRvZmlsbExvZ2luQ3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXV0b2ZpbGxM
b2dpbkNyZWRlbnRpYWxzKHVzZXJuYW1lLCBwYXNzd29yZCksIG1fd2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNob3dJbnNwZWN0b3JIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6
SGlnaGxpZ2h0JiBoaWdobGlnaHQpCkBAIC05OTcsMjIgKzk5NywyMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rp
b248dm9pZChDYQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Rm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoaXNGb3J3YXJkLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05l
eHRGb2N1c2VkRWxlbWVudChpc0ZvcndhcmQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb2N1c2VkRWxlbWVudFZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZv
Y3VzZWRFbGVtZW50VmFsdWUodmFsdWUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50VmFsdWUodmFsdWUpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb2N1c2VkRWxlbWVudFZhbHVlQXNO
dW1iZXIoZG91YmxlIHZhbHVlKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXIodmFsdWUpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWRFbGVtZW50VmFs
dWVBc051bWJlcih2YWx1ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEZvY3VzZWRFbGVtZW50U2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxv
d011bHRpcGxlU2VsZWN0aW9uKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRGb2N1c2VkRWxlbWVudFNlbGVjdGVkSW5kZXgoaW5kZXgsIGFsbG93TXVsdGlwbGVT
ZWxlY3Rpb24pLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEZvY3VzZWRFbGVtZW50U2VsZWN0ZWRJbmRleChpbmRleCwgYWxsb3dNdWx0aXBsZVNl
bGVjdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQ
b3B1cEluZm8pCkBAIC0xMDgyLDcgKzEwODIsNyBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZQog
ICAgIHVpbnQzMl90IHBhZ2VDb3VudCA9IDA7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY7Ci0gICAgcHJvY2Vzcygp
LnNlbmRTeW5jKE1lc3NhZ2UoZnJhbWVJRCwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgTWVzc2Fn
ZTo6UmVwbHkocGFnZUNvdW50KSwgbV9wYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCkpOworICAg
IHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5mbywgY2FsbGJhY2tJ
RCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fd2ViUGFnZUlELCBTZWNvbmRzOjppbmZp
bml0eSgpKTsKICAgICByZXR1cm4gcGFnZUNvdW50OwogfQogCkBAIC0xMDk1LDcgKzEwOTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBwZGZEYXRhLCBDYWxsYmFjawogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFNp
emVDYXRlZ29yeURpZENoYW5nZShjb25zdCBTdHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCiB7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRlbnRTaXplQ2F0ZWdv
cnlEaWRDaGFuZ2UoY29udGVudFNpemVDYXRlZ29yeSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShj
b250ZW50U2l6ZUNhdGVnb3J5KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZSBjb21tYW5kKQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoV2ViS2l0OjpTeW50aGV0aWNF
ZGl0aW5nQ29tbWEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGNvbW1hbmQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoY29t
bWFuZCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUVkaXRv
clN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKQEAgLTExNTgsNyArMTE1OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJc1Njcm9sbGluZ09yWm9vbWluZyhib29sIGlzU2Ny
b2xsaW5nT3Jab29taW5nKQogdm9pZCBXZWJQYWdlUHJveHk6OmhhcmR3YXJlS2V5Ym9hcmRBdmFp
bGFiaWxpdHlDaGFuZ2VkKGJvb2wga2V5Ym9hcmRJc0F0dGFjaGVkKQogewogICAgIHVwZGF0ZUN1
cnJlbnRNb2RpZmllclN0YXRlKCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChrZXlib2FyZElzQXR0YWNo
ZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpI
YXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChrZXlib2FyZElzQXR0YWNoZWQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RXZhc2lvblJlY3Rz
QWJvdmVTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYpPiYmIGNhbGxiYWNrKQpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBs
ZW5ndGhEZWx0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlv
bldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShsb2Nh
dGlvbkRlbHRhLCBsZW5ndGhEZWx0YSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGxvY2F0aW9uRGVsdGEs
IGxlbmd0aERlbHRhKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KFdl
YktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtMTE4OCw3ICsxMTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RE
b2N1bWVudEVkaXRpbmdDb250ZXh0KFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REb2N1bWVudEVkaXRpbmdD
b250ZXh0KHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KHJlcXVlc3QpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKERBVEFf
SU5URVJBQ1RJT04pCkBAIC0xMjA2LDEzICsxMjA2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKQogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dlZEFjdGlvbnMpCiB7CiAgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVxdWVzdERyYWdTdGFydChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRB
Y3Rpb25zKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3REcmFnU3RhcnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBh
bGxvd2VkQWN0aW9ucyksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucykKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBhbGxvd2VkQWN0aW9ucyksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fd2ViUGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgp
CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3QoT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRhdGEpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb25jbHVkZURyb3AoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ29uY2x1ZGVEcm9wKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbmNsdWRlRHJvcCgpLCBtX3dlYlBhZ2VJ
RCk7CiB9CiAKICNlbmRpZgpAQCAtMTI1Myw4ICsxMjUzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewotICAgIHBhZ2VDbGllbnQoKS5yZXF1ZXN0UGFz
c3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgW3Byb2Nlc3MgPSBXVEZNb3ZlKHBy
b2Nlc3MpLCBwYWdlSUQgPSBtX3BhZ2VJRF0oY29uc3QgU3RyaW5nJiBwYXNzd29yZCkgewotICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudChwYXNzd29yZCksIHBhZ2VJRCk7CisgICAgcGFnZUNsaWVudCgp
LnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGZpbGVOYW1lLCBbcHJvY2VzcyA9
IFdURk1vdmUocHJvY2VzcyksIHdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEXShjb25zdCBTdHJpbmcm
IHBhc3N3b3JkKSB7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KHBhc3N3b3JkKSwgd2ViUGFnZUlE
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDM0OWNlZDNlMTgwZDU2YTg2
MmZjOTY3ZTUwOTI3ZmZmNDdiZDJjMTMuLjY4NmExZjE2YzdlOTUwN2VjYjY3MzMxZjNhMGExYjU2
NWZiOGE1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRVUkwsIGNvbnN0IFN0cgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29w
eSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9y
UGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykg
ewpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTCiAgICAgW2hhbmRs
ZSBjbG9zZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gd2ViVmll
dygpLT5fcGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRl
U3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChb
YWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpp
bmRleCAyMTM1YmYxMTg4ZWE3N2Q0ZTBmODkwYTVlMWFkMWQzMDc1NWQ5MGE2Li5jYTdiNmM1MTM4
MTM1YWQzMGMyNjhiYTA1NTI4ZjIwYWI5ODMyYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2VvbWV0cnkoKQogdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0
eVN0YXRlQ2hhbmdlSUQpCiB7CiAgICAgU2Vjb25kcyBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91
dCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMjUwKTsKLSAgICBwcm9jZXNzKCkuY29ubmVj
dGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0
aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2Fp
dGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgYWN0aXZpdHlT
dGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lm
U3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Ojp3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDUw
MjQxZDhiZjYyYTU0NjQ5NjliNGIxNTg4NjMzM2JmYWY5NDM5ZGMuLjQyM2EwNmFhYzYwOTdhODI0
NDQwNDRlODZkZDIwYmJkOTJiN2M1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMTQ0LDcgKzE0NCw3
IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVy
ZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAKICAgICAgICAgLy8gRklYTUU6IFdlIGRyb3Ag
dGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBk
b24ndCBoYXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQgYm91bmRzIHlldC4KICAgICAgICAgbV9tYWdu
aWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpLCBtX3dl
YlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0
cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7
CiAgICAgICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0aW9u
ID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0
UG9pbnQgb3JpZ2luKQogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJl
VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsK
IH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShGbG9hdFJl
Y3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAyMTUxNjYyZDM0N2Ez
OTIzMWQ3ZGFiMmEwOTY1MTg4MjA1M2QwMzVmLi5hZTg3YWE5Y2IwZDNmOTJhZGQwNzEzYzFkMGIw
OTMwZjdlMTE4MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAt
ICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsQmVnaW5BbmltYXRpb246KE5TSW1t
ZWRpYXRlQWN0aW9uR2VzdHVyZVJlYwogICAgIC8vIEZJWE1FOiBDb25uZWN0aW9uIGNhbiBiZSBu
dWxsIGlmIHRoZSBwcm9jZXNzIGlzIGNsb3NlZDsgd2Ugc2hvdWxkIGNsZWFuIHVwIGJldHRlciBp
biB0aGF0IGNhc2UuCiAgICAgaWYgKF9zdGF0ZSA9PSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0
YXRlOjpQZW5kaW5nKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2UtPnBy
b2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9
IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlE
KCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwKSk7CisgICAgICAgICAgICBib29sIHJl
Y2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdD4o
X3BhZ2UtPndlYlBhZ2VJRCgpLCBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDUwMCkpOwogICAg
ICAgICAgICAgaWYgKCFyZWNlaXZlZFJlcGx5KQogICAgICAgICAgICAgICAgIF9zdGF0ZSA9IFdl
YktpdDo6SW1tZWRpYXRlQWN0aW9uU3RhdGU6OlRpbWVkT3V0OwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5k
ZXggMjljNjE0MGIyMDkyNjdjNjVhYTgzMGJkMDk5NDJjZTVkYzMzOTljZi4uZTUzNzk3NDA5NGY0
ZjE5YmNhMTEyMDM3MTQ3YWRmOGM2OTliY2IxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNDgyLDcgKzQ4Miw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2Nv
bnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1
YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdl
LT53ZWJQYWdlSUQoKSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBA
IC01MjcsNyArNTI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdy
aXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11d
OwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkQXBw
ZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdl
SUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IGMzMjU2NzhmMzhjMWZmZmQ3MDViZjE2NTBmNmE0OTAzMzJjM2JlMDMuLjdkNDExZTgwODhi
ZGMzNmNlYzU1ZWYzYWNmZTYwMDgyMzIxNzNkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIHZp
ZXdGcmFtZUluV2luZG93CiAgICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBn
ZXRXaW5kb3dGcmFtZSgpLCB3ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhl
IGFwcHJvcHJpYXRlIHdpbmRvdyBmcmFtZS4KICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgq
dGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdmlld0ZyYW1lSW5X
aW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlc10gKEZsb2F0UmVj
dCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgRmxvYXRSZWN0IHdp
bmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IHBhZ2VDbGllbnQoKS5jb252
ZXJ0VG9Vc2VyU3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKLSAgICAgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFu
Z2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBl
ZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3Np
YmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRp
bmF0ZXMsIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29v
cmRpbmF0ZXMpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTE4MSw3ICsxODEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wgaXNTY3Jv
bGxhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZShpc1Njcm9sbGFibGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Njcm9sbGFibGUpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRB
c3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRS
YW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4
dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVn
aXN0ZXJVbmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2Us
IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3dlYlBhZ2VJRCk7
CiAjZWxzZQogICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5yZWdp
c3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3lu
Yyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5n
ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2Us
IGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphdHRy
aWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0
U2VsZWN0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9udEluZm8mLCBkb3VibGUsIGJvb2wsCiAg
ICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb250QXRTZWxlY3Rpb24o
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25DYWxsYmFjayhjb25zdCBGb250SW5mbyYg
Zm9udEluZm8sIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRz
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNzAsNyArMjcwLDcgQEAgU3RyaW5nIFdlYlBh
Z2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgICAgIHJldHVybiB2
YWx1ZTsKICAgICAKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIwKTsKLSAgICBw
cm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBw
cm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cgogICAgIHVpbnQ2NF90IHNpemUgPSAwOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2Fn
ZVRpbWVvdXQoMjApOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6
OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3Bh
Z2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgICAgICBNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSksIG1fd2ViUGFnZUlE
LCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKQEAgLTI5NiwxNCArMjk2LDE0IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2Vs
ZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgy
MCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0
aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZTo6UmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2Fn
ZVRpbWVvdXQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBh
Z2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV93ZWJQYWdl
SUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGlvbldp
dGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSksIG1f
cGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNl
bGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSksIG1fd2ViUGFnZUlEKTsKIH0K
ICNlbmRpZgogCkBAIC0zMzMsMjIgKzMzMywyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENv
bXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRv
UGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3Bh
Z2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDb21wbGV4
VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHRleHRJ
bnB1dCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwcGVyY2FzZVdv
cmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBlcmNhc2VX
b3JkKCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBwZXJjYXNlV29yZCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojps
b3dlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG93ZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKQpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCkKIAogICAgIFRleHRDaGVja2VyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIG1faXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQgPSBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9u
YXJ5UG9wdXBJbmZvKQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdp
c3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93VG9rZW4pLCBtX3BhZ2VJRCk7CisgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV93ZWJQYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1
aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNG
b2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJN
b3VzZUV2ZW50CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMg
bWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoZXZlbnQpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50OjpSZXBseShyZXN1bHQpLCBtX3Bh
Z2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGV2ZW50KSwgTWVzc2FnZXM6
OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudDo6UmVwbHkocmVzdWx0KSwg
bV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC00MzQsNyArNDM0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJzdE1vdXNlKGlu
dCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW4KIAogICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBw
cm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2
ZW50TnVtYmVyLCBldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6
UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBwcm9jZXNzKCku
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVy
LCBldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVz
dWx0KSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAwMjZmODU3YWZkMzQyM2Q2Zjc3ZDc0ZDFhZmFmOWExOWZjZGZkOGU4Li40M2EwYWQxN2Fh
MWE3MDRhZDY2ZGFiMzRiYjdmMWMxYWVlOWViZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxNyw2ICs5MTcsNyBAQAogCQk0NkJF
QjZEQjIyRkI5RDQ4MDAyNjk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZEOTIyRkI5RDQ4MDAy
Njk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkRGMjJGQkIx
NkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQyMkZCQjE2QjAwMjY5ODY3IC8q
IFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2
OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAv
KiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKKwkJNDZDMzkyMjkyMzE2
RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAv
KiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5
ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAw
RDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0
MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsg
fTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmggKi87IH07CkBAIC0zMjI4LDYgKzMyMjksNyBAQAogCQk0NkJFQjZERTIyRkJCMTZCMDAy
Njk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFMjIyRkJCMjFBMDAyNjk4NjcgLyog
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzNTE5
QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NTksNiArNzg2MSw3IEBA
CiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgKi8sCiAJ
CQkJQkMwMzJEQ0IxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oICovLAogCQkJCUJD
QkQzOEZBMTI1QkFCOUEwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAq
LywKIAkJCQk3QzQ2OTRDRDFBNTFFMzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5LmNw
cCAqLywKIAkJCQk3QzQ2OTRDRTFBNTFFMzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5
LmggKi8sCiAJCQkJN0M0Njk0Q0YxQTUxRTM2ODAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94
eS5tZXNzYWdlcy5pbiAqLywKQEAgLTEwMDI1LDYgKzEwMDI4LDcgQEAKIAkJCQlDNUZBMUVEMzE4
RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEMTJEQUI1MjA2NjJDNzMwMDZGMDBGQiAvKiBXS0FuaW1hdGlvbkRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRTM0RTUxMzBCNEQwNTAwQUJE
MTlBIC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
M0RDNjgyMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5
LmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>