<?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>192588</bug_id>
          
          <creation_ts>2018-12-11 06:28:44 -0800</creation_ts>
          <short_desc>REGRESSION(r239071): Broke WPE build due to undefined references to toAPI() and toImpl() inside the C API (Requested by magomez on #webkit).</short_desc>
          <delta_ts>2018-12-11 06:34:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>192449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>magomez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486915</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 06:28:44 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/239071 broke the build:
Broke WPE build due to undefined references to toAPI() and toImpl() inside the C API (Requested by magomez on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486917</commentid>
    <comment_count>1</comment_count>
      <attachid>357045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 06:28:57 -0800</bug_when>
    <thetext>Created attachment 357045
ROLLOUT of r239071

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486919</commentid>
    <comment_count>2</comment_count>
      <attachid>357045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 06:33:45 -0800</bug_when>
    <thetext>Comment on attachment 357045
ROLLOUT of r239071

Clearing flags on attachment: 357045

Committed r239072: &lt;https://trac.webkit.org/changeset/239072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486920</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 06:33:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486921</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-11 06:34:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/46627778&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357045</attachid>
            <date>2018-12-11 06:28:57 -0800</date>
            <delta_ts>2018-12-11 06:33:45 -0800</delta_ts>
            <desc>ROLLOUT of r239071</desc>
            <filename>bug-192588-20181211062857.patch</filename>
            <type>text/plain</type>
            <size>164038</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5MTY3NjViOTA4NjMxNWM1
MDc5MmY2ZTcxYTQ3NGJlNjA0MWE2ZWIuLmE5OGQzNTcxNmVlMmViZmQwYTE3ZmNjMTA5YzVhNzQx
ZDE0NDlmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMTItMTEgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMzkwNzEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTI1ODgKKworICAgICAgICBCcm9rZSBXUEUgYnVpbGQgZHVlIHRvIHVuZGVm
aW5lZCByZWZlcmVuY2VzIHRvIHRvQVBJKCkgYW5kCisgICAgICAgIHRvSW1wbCgpIGluc2lkZSB0
aGUgQyBBUEkgKFJlcXVlc3RlZCBieSBtYWdvbWV6IG9uICN3ZWJraXQpLgorCisgICAgICAgIFJl
dmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW21ldGFdW1dlYktpdF0gUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgaW4KKyAgICAgICAgdGhlIGdsb2JhbCBzY29w
ZSBmb3IgdW5pZmllZCBzb3VyY2UgYnVpbGRzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDQ5CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yMzkwNzEKKwogMjAxOC0xMi0xMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFttZXRhXVtXZWJLaXRdIFJlbW92ZSB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZSBhbmQgV2ViS2l0IGluIHRoZSBnbG9iYWwgc2NvcGUgZm9yIHVuaWZp
ZWQgc291cmNlIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Db29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCmluZGV4IDBjYTQy
NjA1ZDhmNDUyZjAzY2Y2Nzc5Mzg4ZWY0MWVjOWEyNWJmOGYuLjk4MGJhYzExYWEyN2VlNmE2ZGY4
NDkxOWZmYTJjYWY3ZGM3YmE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0KQEAg
LTMxLDkgKzMxLDEwIEBACiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2lt
cG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQuY3BwCmluZGV4IDFmZTExODljMDE4ZjUwOGY5ZjNmMDA2MTM5NzU1NWEy
YWMyOTUzZWIuLjFhZjI1OWU5ZTYwMWZiODk1Yjc3ZjRlZGMzZDU5YWUwODZhMzhmZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtNDEsOSArNDEsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1RocmVhZFNhZmVEYXRhQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIFJlZjxXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ+IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChjb25uZWN0aW9uLCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU2OTU5ZjRjZGMwNmM0NDVjZjEwMmU5ODI2ZjE4
N2U5ZGZmMDBmZWUuLjBjMjgwMmQyMzQyOTI0OGM1N2ZhMjhmNmM2MTBkY2M3MjBkMjRmYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC01MywxMCArNTMsMTEg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViS2l0
IHsKKwogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQs
IHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3Nl
c3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCBlM2Q3YWFjMjA1ZTI4ZmQzZmVlNGFiZmVhNTNkYzdjMDlhZTI5YzYzLi5jMmU3Zjg0MzRmYzkx
NjM4ZDliOWNhYTFmYjk5ZGFhMjFiODFiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzMsOSArMzMsMTAgQEAKICNpbmNs
dWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKICAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihz
ZWN1cml0eU9yaWdpbikKICAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1By
b2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQppbmRleCAzMGU1YjI3NzYzODMwYzgxZjMxN2EyZTI2NmU3OGExMTdhYWIyN2Ri
Li5hNjUzZjkxMmViZDEyYjg1YWZjYTE3YjY1YmZhMDNkNzZhY2M4MDFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpA
QCAtNDEsOSArNDEsMTAgQEAKIAogI2RlZmluZSBFTkFCTEVfTUFOVUFMX05FVFdPUktfU0FOREJP
WElORyAwCiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K25hbWVzcGFjZSBXZWJLaXQgeworCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJv
Y2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogICAg
IEluaXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IDJhZTIz
NWMxNDc1ZGMzZTJiNWVjNzQ1NWEzMDg1Y2QxMmVjYjY1N2EuLjhiMGU2ZmRlYTQ2ODYzMTk2NGU3
MmJiN2MzY2I5ZmIwYjIzZWI5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC00Nyw5ICs0NywxMCBAQAogI2lt
cG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSBXZWJLaXQgeworCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
UHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewog
ICAgIC8vIEhhdmluZyBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbiBpbiB0aGlzIHByb2Nlc3Mg
d291bGQgcmVzdWx0IGluIHNwaW4gbG9ncyAoPHJkYXI6Ly9wcm9ibGVtLzEzMjM5MTE5PikuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDhkYWM5MDRjNjUwN2I3MmNjYjY4NGQwMWNiMmQ1MTY2
YzU3Y2JlMjEuLjE1NDY3OGM4ZTJmMmYwNGM3MjY3M2I3M2UzYTA4M2Y2YTQ2YjkxNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0zOSw5ICszOSwxMCBAQAogI2ltcG9ydCA8cGFsL1Nlc3Np
b25JRC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIHZvaWQg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Np
b25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKaW5kZXggZDcyYWRkMjk1NTg3YjkyMzgyNThlM2ExOTVkMzI3MGZlNjE2MTQyNS4uODRl
M2FhNTdmZWI2ZjIxNjU0YTJiZmQzM2I1ZGZjYTQxZDEwYzU4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTUx
LDkgKzUxLDEwIEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2VuZGlmCiAK
LW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFj
ZSBXZWJLaXQgeworCiBQbHVnaW5Db250cm9sbGVyUHJveHk6OlBsdWdpbkNvbnRyb2xsZXJQcm94
eShXZWJQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVj
dGlvbikKICAgICAsIG1fcGx1Z2luSW5zdGFuY2VJRChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2lu
SW5zdGFuY2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmNwcAppbmRleCAzODMyOWEwMzYxOTk0YTU2YjM3MWNmOGI5YTdiM2Q0ODk0YTAwNWEzLi45YzRl
N2ExODY4NDBmODFjZDM0ZGE3NDg4ZDdhZWY1YzY2YjJlYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBAIC00OSwxMCArNDksMTAgQEAKICNp
bmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIE5PX1JFVFVS
TiBzdGF0aWMgdm9pZCBjYWxsRXhpdChJUEM6OkNvbm5lY3Rpb24qKQogewogICAgIF9leGl0KEVY
SVRfU1VDQ0VTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA2ZDRhMGVmNGQ2ZGJmZDc2NzMwYzA0ZDc4ZDBiYTVj
OWI5Y2VkYjdmLi45ODUyMzhkY2I0NmQ3NDcwMjczMjQxOWY3MWE4MTlmZmJhYmZhODczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTQ0LDkgKzQ0LDEwIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAot
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNl
IFdlYktpdCB7CisKIHN0YXRpYyBJUEM6OkNvbm5lY3Rpb24qIGN1cnJlbnRDb25uZWN0aW9uOwog
CiBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAu
ZXJiCmluZGV4IGE4NzNjYTEzNzdmZWE2NDQzY2RhYWFhM2E2NDhjYTg1YThkMDZmZDcuLjA2NDhm
YWU1ZmY3NTkyNTczMWMwMzBlY2I0Zjk3YjQ5NjY2ZGU1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVm
YXVsdHNNYXAuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKQEAgLTQwLDkg
KzQwLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dEVuY29kaW5nUmVnaXN0cnkuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIFdlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlTWFwJiBXZWJQcmVmZXJlbmNlc1N0b3JlOjpkZWZhdWx0cygpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFZhbHVlTWFwPiBkZWZhdWx0czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS0Vycm9yQ0YuY3BwCmluZGV4IGY1MzM1ZmExNzY1NTYyMzZhZjFl
ZDNmMGQzODQ0MWI4MDBmZmM5NWQuLjM5YWQ5NTk5NDJmMzllNGU2YmQzMjYwNmE4ZmFkNjVlNjE4
NGU4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLRXJyb3JD
Ri5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tFcnJvckNGLmNwcApA
QCAtMjksMTQgKzI5LDE2IEBACiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCiBXS0Vycm9yUmVmIFdLRXJyb3JDcmVhdGVXaXRoQ0ZFcnJvcihDRkVycm9yUmVmIGNm
RXJyb3IpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6RXJyb3I6OmNyZWF0ZShX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yKGNmRXJyb3IpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSSgmQVBJOjpFcnJvcjo6Y3JlYXRlKFJlc291cmNlRXJyb3IoY2ZFcnJvcikpLmxlYWtSZWYo
KSk7CiB9CiAKIENGRXJyb3JSZWYgV0tFcnJvckNvcHlDRkVycm9yKENGQWxsb2NhdG9yUmVmIGFs
bG9jLCBXS0Vycm9yUmVmIGVycm9yKQogewotICAgIFdURjo6UmV0YWluUHRyPENGRXJyb3JSZWY+
IGNmRXJyb3IgPSBXZWJLaXQ6OnRvSW1wbChlcnJvciktPnBsYXRmb3JtRXJyb3IoKS5jZkVycm9y
KCk7CisgICAgUmV0YWluUHRyPENGRXJyb3JSZWY+IGNmRXJyb3IgPSB0b0ltcGwoZXJyb3IpLT5w
bGF0Zm9ybUVycm9yKCkuY2ZFcnJvcigpOwogICAgIHJldHVybiBjZkVycm9yLmxlYWtSZWYoKTsK
IH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXgg
NDY2ZmZmZGNkNjI1ZjFhYjM5ZWM1ZWExMWY2MjA1OTQ1YmE2YjRmOS4uMTU0N2UyMjg2N2E5OGIx
ZjI4ODI5YTBkYjFmMjk0MGJjMGJkZDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC0zMiw5ICszMiwxMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogQ0dJbWFn
ZVJlZiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdlUmVmKQogewotICAgIFdl
YktpdDo6V2ViSW1hZ2UqIHdlYkltYWdlID0gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpOworICAg
IFdlYkltYWdlKiB3ZWJJbWFnZSA9IHRvSW1wbChpbWFnZVJlZik7CiAgICAgaWYgKCF3ZWJJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTQ2LDEzICs0OSwxMiBAQCBXS0ltYWdl
UmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdl
T3B0aW9ucyBvcHRpb25zKQogICAgIGlmICghaW1hZ2VSZWYpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0
aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsKLSAgICBhdXRvIHdlYklt
YWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0b0ltYWdl
T3B0aW9ucyhvcHRpb25zKSk7CisgICAgSW50U2l6ZSBpbWFnZVNpemUoQ0dJbWFnZUdldFdpZHRo
KGltYWdlUmVmKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZVJlZikpOworICAgIGF1dG8gd2ViSW1h
Z2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykp
OwogCiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoV2ViQ29yZTo6
RmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXplKTsKKyAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBv
aW50KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJl
Y3QpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFn
ZVNpemUsIHJlY3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkp
OwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCA3MTg0ZTU4Yzgz
NWYxNjlhZmUyNjljNWUzZDMwY2IwYmI2ZDQ4MzM5Li5mMTY4ZTJlY2U2ODY1OWJlMjBiNjc2ZWI2
NWM0NmNiY2ZmZWIzYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKQEAg
LTM5LDkgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgog
I2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K25hbWVzcGFjZSBXZWJLaXQgeworCiBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2VzcygpCiAgICAg
OiBtX3Rlcm1pbmF0aW9uQ291bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRl
eCBkZmZiN2E4MDc0MTNkODAxOGRjZDVmODRhYmQzN2VjNDA3YzFhMWQ4Li43OTIyMDg4Yjk2ZWY1
NGI3M2U0NzY0MDM3ZWMyNjgzMDM3OGQwMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtMzMsOSArMzMsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKK25hbWVzcGFjZSBXZWJLaXQgeworCiBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250
ZXh0TWVudUNvbnRleHREYXRhKCkKICAgICA6IG1fdHlwZShUeXBlOjpDb250ZXh0TWVudSkKICNp
ZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNw
cAppbmRleCBjOGM4Zjg5ODUzZTlhYmNjN2UzZjQxNTA0ZTAxODMwMzQ1NjQ1ZTI4Li4wYTJiYTdm
MDM2NzU5OTE3ZWIzNGM5MzU5MDA1YWJiM2VjY2NlNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dG9yU3RhdGUuY3BwCkBAIC0yOSw5ICsyOSwxMCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7
CisKIHZvaWQgRWRpdG9yU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKaW5kZXgg
OTI1MTcxZTljNzU0ZjRmY2U1YWUzYWFkOTcxMTg3Y2NhNjQwZDU4MS4uNzVkNjA5MzFhOTFjZDIw
NjBjNzJmOGVjNzI2MDM4ZTZmODE4NmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCkBAIC0zMyw5ICszMywxMCBAQAogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSWRlbnRpZmll
clJlcC5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CituYW1lc3BhY2UgV2ViS2l0IHsKKwogTlBJZGVudGlmaWVyRGF0YTo6TlBJZGVudGlmaWVyRGF0
YSgpCiAgICAgOiBtX2lzU3RyaW5nKGZhbHNlKQogICAgICwgbV9udW1iZXIoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQ
cm9wZXJ0eUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCmluZGV4IDgyMTczNzEyMWU3OGVjNjdh
MDEzOGRjNjJkODk5NDNhNDUxZTY0Y2YuLjZkYTFkZDI5Y2MyM2E4MDBmNGVjZmQ0ZmVlM2UxNmU5
ZDg3Y2I1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQpA
QCAtNzcsOSArNzcsMTAgQEAKIEBlbmQKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViS2l0IHsKKwogc3RhdGljIENH
Q29sb3JSZWYgY2dDb2xvckZyb21Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYg
KCFjb2xvci5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggY2FkNzZiYjMyNTU1YTMzYmQ5ZjUzMTdjNTliMzE1
MTI4ZTM5MjQwNi4uOWFmMDg5ZDZmNWRmOTQ2OGE4MmEyOTUyMzk1NmNiZmY3ZjFiMjYwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNw
cApAQCAtMzgsMTAgKzM4LDExIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiBuYW1lc3BhY2UgSVBDIHsKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlTm9kZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNw
cAppbmRleCBjMmMyYTNhMmFiMjEyYzFjM2JkNTc3OThiOThkZmE4M2I4NjhjYTY1Li5lZTIxZDY1
ZDdhYmVhZWJhZjJlNWVjZjFlNTIzZDM1MzE1MWI1MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5jcHAKQEAgLTI5LDkgKzI5LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
Lmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25h
bWVzcGFjZSBXZWJLaXQgeworCiBib29sIGlzVmFsaWRFbnVtKFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXggYjJhYmQ0ZGVlYTFjNTYwZGIz
NmM1YjU1NjM5ODQ2MGZkZmQ5Mjc0YS4uODgxM2I3MGNmMjk0NTU0ZDAyMjk2OTg0Y2Y0ZmZmYWI2
ODdjYmFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcApAQCAtMzEs
OSArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCituYW1lc3BhY2UgV2ViS2l0IHsKKwogc3RhdGljIFN0cmluZyYgaWRlbnRpZmllckJh
c2UoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA4ZmM1YWQ2YzFiMjlhOTJjMmNmYTU4Y2YzMTI4
NDhmMTE2ZTFiOTkxLi40ZmNmNGQzNGY2OTZmYmM0ZTdjOGNlNWM5MjI2MjNmNTlmZjFiNTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTMwLDkgKzMwLDEw
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLSAgICAKKworbmFtZXNwYWNlIFdlYktpdCB7CisKIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlOjpIYW5kbGUoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCmluZGV4IDIzMmY2NDk2MTRmMmQ0YTgzOWVmNDU3NzIwYmY1YWYyMTE1Yjhl
NDYuLmQxNDdkODBlNTc0NzM1OGZjMzRiYjNkM2U0YjFjZGViYThjMmRkMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTMxLDkgKzMxLDEwIEBACiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwogU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6SGFuZGxlKCkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mby5jcHAKaW5kZXggMmVlOGQ5NmM0ZWEwY2MwZDM0YjIyMTYwZmNkYzEwYTA5ZTI2
MDQzZS4uMDQxNTBjMWMwODg5MTJiMzUyOGJlNTc5NzczYzJkOTUzMWY5NTE3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5j
cHAKQEAgLTMwLDkgKzMwLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3guaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJLaXQgeworCiB2b2lkIFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX2V4cG9zZWRDb250ZW50UmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggNjQ0ZmZmY2Nk
MDJhMDllODU2OWJhMTYwMjNmYWQzZTA2OTY0NTQyNS4uZTE4MTI1ZjZkMDFlMTFhYjQxMGY2OTI2
YmU1MDRjNzZmYjVmNTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAKQEAgLTMyLDkgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0RlYnVn
VXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViS2l0IHsKKwogUmVmPFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90
IHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgcGFnZUlEKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwCmluZGV4IGZkYjQ0
OTllMjhjZTY1NDZkODdkMmZmMzY4Njc2NDNjNjljZTdhYjkuLjJhNjVhYzRmNDc2OTA3NjQ5ODA1
NTA3ZGNjNzU2Y2ExZmU2MTE1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbURhdGEuY3BwCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAKLW5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJL
aXQgeworCiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhKCkK
ICAgICA6IG1fdHlwZShXZWJDb3JlOjpBY3Rpb25UeXBlKQogICAgICwgbV9hY3Rpb24oV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhZDIyN2MyNTE3YWM4NjMyMGM4YzJkM2Y5
MTVhZGY2ZjJkYWJkOWVjLi4yYzYzYzZmMDZhNDVkZGIxZjYyZjYxMWMzMzUzYzcyNGIyNTJlNzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTExMiwxMCArMTEyLDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRz
Lmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK25hbWVzcGFjZSBJUEMgeworCiBzdGF0aWMgdm9p
ZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVy
KiBidWZmZXIpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGFkYTNmNTFhMmNm
OTcxZDk4YmQ4ODdiODRjMTU5YTBlOWNiMzUxODYuLmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3
Zjk4NWY3MjI2MzdjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5jcHAKQEAgLTMxLDkgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViS2l0IHsKKwogV2ViSGl0VGVzdFJl
c3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYklt
YWdlLmNwcAppbmRleCA5OWM5NTNjZmMyMjgyZTdhZTdlMzViMzVkYjBjMWU0MTg1MjJjMDU4Li5k
OTQzZGJmNGQ5NGQ1MzI3YzdkZDBkNjExZThhMDgxMzliYmIwZThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViSW1hZ2UuY3BwCkBAIC0yNiw5ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYkltYWdlLmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJLaXQgeworCiBSZWZQdHI8V2ViSW1hZ2U+IFdlYklt
YWdlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7
CiAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoc2l6ZSwgb3B0aW9ucywgeyB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAppbmRleCA4
ZmMxZmRlM2UyMWJhYjI1MzM5MzViOGVjYTI3YjNkYjNlMjE2OGYxLi5jMDNkMTczMWJhZjE2MjBl
NzIyYjcyNTQzNjA2OWZlZjg5Y2ZlY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwCkBAIC0yOCw5ICsyOCwxMCBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJLaXQgeworCiBSZWY8V2ViTWVkaWFTZXNzaW9uTWV0
YWRhdGE+IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVhdGUoY29uc3QgTWVkaWFTZXNzaW9u
TWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhKG1ldGFkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9y
eVNhbXBsZXIuY3BwCmluZGV4IDJiODUyMDBkZWM5Mjc4Yzc0ZGJhZjYyYWU1MzMwZDlmOGQzN2Rj
MDcuLmY2Yzc5MmNiYmZjNTE1NGYzYjUwY2RmODgwMzMzZGNjM2RmNzMzZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCkBAIC0zMyw5ICszMywxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K25hbWVzcGFjZSBXZWJLaXQgeworCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3IgPSAnXHQn
OwogCiBzdGF0aWMgdm9pZCBhcHBlbmRTcGFjZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nLCBpbnQg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCmluZGV4IDYyYWU3MzJl
YjliYWJjZGI5YWQ2NDI3NGQ2MjNjZGZjOThkNTcxZGUuLjE3YmE1YzRjMDAyYzQxYWRiNTIyN2Y1
ZTE4OTQyYWE1NTIxYzA2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1v
dXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3Bw
CkBAIC0yOCw5ICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVz
cGFjZSBXZWJLaXQgeworCiBXZWJNb3VzZUV2ZW50OjpXZWJNb3VzZUV2ZW50KCkKICAgICA6IFdl
YkV2ZW50KCkKICAgICAsIG1fYnV0dG9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihOb0J1dHRvbikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcAppbmRleCAxZGE0YzY5N2Vi
ZmY3OGM5YTVhMTJjYmQzY2U1ZDczYzc4YWI0Yzg2Li4xZTJhYWIyMGRmMGRhZDhkMTAzNTNjNWRi
MTE3MWQ2N2U0MzVmYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJSZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5j
cHAKQEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJXaWRnZXQuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIFJlZlB0cjxX
ZWJSZW5kZXJPYmplY3Q+IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiB7
CiAgICAgRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggNzIzODdh
MjU3ZDZkYmRhZTVjMTI5MTAxOWZhM2MzMGE2OGYxZTc2Mi4uZmI2OTFiMTE4N2Q4MmFiOTYzMjVi
M2E5ZmU0MjgwOTNkMzFiODFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMyw5ICszMywxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFt
ZXNwYWNlIFdlYktpdCB7CisKIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6V2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyKE5ldHdvcmtQcm9jZXNzJiBwcm9jZXNzKQogICAgIDogbV9wcm9jZXNzKHBy
b2Nlc3MpCiAgICAgLCBtX2h5c3RlcmVzaXMoW3RoaXNdKFBBTDo6SHlzdGVyZXNpc1N0YXRlIHN0
YXRlKSB7IGh5c3RlcmVzaXNVcGRhdGVkKHN0YXRlKTsgfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
V2hlZWxFdmVudC5jcHAKaW5kZXggYmExMGU5MGU5OWExOGM0MTlhZTFkZjI1YTZiMjY1MTA2ZGQw
ZWY5Yi4uNGUxM2U4OTY1MjFjMzRjOGUxYmMzYzczY2M4ZjIzYTUyNDU5ZjdlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKQEAgLTI4LDkgKzI4LDEwIEBACiAKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotbmFtZXNwYWNlIFdlYktpdCB7ICAgIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJLaXQgeyAgICAKKwogV2Vi
V2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFNpemUmIGRl
bHRhLCBjb25zdCBGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVu
dCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDAw
YmUxNjE1Y2QyOWRjMzVmMmYxM2U2Mzg3ZDNmNTJiYzE3N2UyZTguLmY4ZjcyOTY0ODZhZTk3YWFm
OGU5NjM1Y2UyY2Q3YTJjNGI4ZmUxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwCkBAIC02Myw5ICs2MywxMCBAQCBleHRlcm4gIkMiIFNlY0FjY2Vz
c0NvbnRyb2xSZWYgU2VjQWNjZXNzQ29udHJvbENyZWF0ZUZyb21EYXRhKENGQWxsb2NhdG9yUmVm
IGFsbAogZXh0ZXJuICJDIiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlEYXRhKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzX2NvbnRyb2wpOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBJUEMgeworCiBDRlR5cGVS
ZWYgdG9rZW5OdWxsVHlwZVJlZigpCiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIHRva2VuTnVs
bFR5cGUgPSBDRlNUUigiV0tOdWxsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwCmluZGV4IDQ3ZGQ5YTA1ZmQzMWUwMjMw
ZDg0MzA0ZWI0NGY3M2U5MzRmNjExNjMuLjhiMGIzZmIyNTFhODgxOGY3NzkyM2RjMjYyOGMwNDA2
MDUwZmI2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQbGF0Zm9y
bVRvdWNoUG9pbnRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQbGF0
Zm9ybVRvdWNoUG9pbnRJT1MuY3BwCkBAIC0zMCw5ICszMCwxMCBAQAogCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJLaXQgeworCiB2b2lkIFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNv
ZGVyIDw8IG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDI2ZjBjMzM1MWQ3MTdjNTFh
ODQyZGVhOGYyYmZlNDZmZjZhNDBiOTYuLjA3NzhjZDY2YmFiOGQ4YzE1NzFjMDc4NjU4YWIzYjg1
MjMxNjIwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtNDUsMTEgKzQ1LDExIEBACiAjaW5jbHVkZSA8
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAKLQotbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6
RmlsZVN5c3RlbTsKIAorbmFtZXNwYWNlIEFQSSB7CisgICAgCiBDb250ZW50UnVsZUxpc3RTdG9y
ZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmxlZ2FjeURlZmF1bHRTdG9yZSgpCiB7CiAgICAgY29u
c3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNmQwNmE0Yjg3NjgwYjNmZjE2N2U2
Njk2MDgxYTFmMTRiYTNiZTI4OS4uOGM4YzdhMGE4ZTQ1ZmM4ZWExYTEwNTcxYjVlMmQ4ODUzZGNm
NGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RS
ZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVz
dWx0LmNwcApAQCAtMjAsOSArMjAsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBUElIaXRUZXN0UmVzdWx0LmgiCiAKLW5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK25hbWVzcGFjZSBBUEkgeworCiBSZWY8SGl0VGVzdFJlc3VsdD4gSGl0VGVz
dFJlc3VsdDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRl
c3RSZXN1bHREYXRhKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhpdFRlc3RSZXN1bHQo
aGl0VGVzdFJlc3VsdERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uLmNwcAppbmRleCBkOGQ4MmU0MGIyYmRkOTgwMDc1NjZhZGFkZDBlMzUwNTIxZTll
ZDBhLi4yNzU0ZTc5NGYyNTA1MzgzMmQ1ZDI2N2UxMjBhYmYwNzQxZTQ3YTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC0zMCwxMCArMzAs
MTEgQEAKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGVi
dWdVdGlsaXRpZXMuaD4KIAotbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK25hbWVzcGFjZSBBUEkgeworCiBOYXZpZ2F0
aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgOiBtX25hdmln
YXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCmluZGV4
IDg1MWViZjVjMDM5ZTdiMjg5MTlhZjkxMGIwMmZlYTAwY2VlZWRmNDcuLjc3MTk5MGE3NGMxM2U2
OTNiM2FhOGE3Y2FlNWIzYTc3NzgxODNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKQEAgLTMxLDkgKzMxLDEw
IEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1u
YW1lc3BhY2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgQVBJ
IHsKKwogUmVmPE9wZW5QYW5lbFBhcmFtZXRlcnM+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmNyZWF0
ZShjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBPcGVuUGFuZWxQYXJhbWV0ZXJzKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRleCAx
ZjA0OWMyYTIzYTA1MThlZGQwNzBjNDRiMjU2NzJmMWMzNjU5OWM3Li45MTI3MGVlN2RkYjhjMTg3
YzAwYmNjY2Y1YTQxZmMzNWVmM2IzYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTM4LDEwICszOCwxMSBAQAog
I2luY2x1ZGUgIkFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKICNlbmRpZgogCi1uYW1lc3BhY2Ug
QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAorbmFtZXNwYWNlIEFQSSB7CisKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3Vy
YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5k
ZXggOTExZTU2MmQ4YzUxNjU1NDdhNTdjMzBiNWQzZjljMTcyYzAwMDk4OC4uZTNiNDY4YjgwMTFj
YjJiYTk5ZGU2Nzc3MjdlNmUyZTRlOTE0MWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC02MCw2ICs2MCw5IEBAIHRlbXBsYXRlPD4gc3RydWN0
IENsaWVudFRyYWl0czxXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZT4gewogfTsKIH0KIAordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCiBXS1R5cGVJ
RCBXS0NvbnRleHRHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShXZWJQcm9jZXNzUG9v
bDo6QVBJVHlwZSk7CkBAIC0xODcsNyArMTkwLDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9h
ZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWQK
ICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIHRvQVBJKCZhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGZpbmFsCisgICAgICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw3ICsyMzIsNyBAQCB2b2lkIFdLQ29udGV4dFNl
dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRE
b3dubG9hZAogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKCZwcm9jZXNzUG9v
bCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKSBmaW5hbAorICAgICAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRGYWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTYsNyBAQCB2
b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBj
b25zdCBXS0NvbnRleHREb3dubG9hZAogICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENy
YXNoKHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xp
ZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3QodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25s
b2FkUHJveHkpLCB0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CkBAIC0zMDcsNyArMzEwLDcgQEAgdm9pZCBXS0NvbnRleHRB
ZGRWaXNpdGVkTGluayhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgdmlzaXRl
ZFVSTCkKICAgICBpZiAodmlzaXRlZFVSTFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+dmlzaXRlZExpbmtTdG9yZSgpLmFkZFZpc2l0
ZWRMaW5rSGFzaChXZWJDb3JlOjpjb21wdXRlU2hhcmVkU3RyaW5nSGFzaCh2aXNpdGVkVVJMU3Ry
aW5nKSk7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT52aXNpdGVkTGlua1N0b3JlKCkuYWRkVmlz
aXRlZExpbmtIYXNoKGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoKHZpc2l0ZWRVUkxTdHJpbmcpKTsK
IH0KIAogdm9pZCBXS0NvbnRleHRDbGVhclZpc2l0ZWRMaW5rcyhXS0NvbnRleHRSZWYgY29udGV4
dFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDJjZTM4
YmJmNzg5NzM4ZGM1YTQxZTgzNTA4ODBmYWJhOTc4ZWM2NDIuLjI1Mzc0Mzk2NDFiNmZmZTI3ZTE2
MjYxNTU0Mzg1MjUxNTAzMzQ2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcApAQCAtOTcsMTAgKzk3LDEwIEBACiAjaW5jbHVkZSAiVmVyc2lvbkNoZWNrcy5oIgog
I2VuZGlmCiAKLW5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotICAgIAorCituYW1lc3BhY2UgQVBJIHsKIHRlbXBsYXRlPD4g
c3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VMb2FkZXJDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPFdLUGFnZUxvYWRlckNsaWVudFYwLCBXS1BhZ2VMb2FkZXJDbGllbnRWMSwg
V0tQYWdlTG9hZGVyQ2xpZW50VjIsIFdLUGFnZUxvYWRlckNsaWVudFYzLCBXS1BhZ2VMb2FkZXJD
bGllbnRWNCwgV0tQYWdlTG9hZGVyQ2xpZW50VjUsIFdLUGFnZUxvYWRlckNsaWVudFY2PiBWZXJz
aW9uczsKIH07CkBAIC0xMzAsOCArMTMwLDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJh
aXRzPFdLUGFnZUZpbmRDbGllbnRCYXNlPiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFp
dHM8V0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50VjA+IFZlcnNpb25zOwogfTsKLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIEFQSQorCit9CiAKIFdLVHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpCiB7CkBAIC0xNjAs
MTMgKzE2MCwxMyBAQCB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJM
UmVmIFVSTFJlZikKIAogdm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgYm9vbCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzKQogewotICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVS
THMgPyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyA6
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93Owor
ICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMgPyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGRBbGxvdyA6IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93OwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB0b1dU
RlN0cmluZyhVUkxSZWYpKSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZv
aWQgV0tQYWdlTG9hZFVSTFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYg
VVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5s
b2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgdG9JbXBsKHVzZXJEYXRh
UmVmKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RG
U3RyaW5nKFVSTFJlZikpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdywgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVl
c3QoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0UmVmKQpAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVlc3QoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0UmVmKQogdm9pZCBXS1BhZ2VMb2FkVVJMUmVx
dWVzdFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJl
cXVlc3RSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKICAgICBhdXRvIHJlc291cmNlUmVx
dWVzdCA9IHRvSW1wbCh1cmxSZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCB0b0ltcGwo
dXNlckRhdGFSZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUo
cmVzb3VyY2VSZXF1ZXN0KSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3csIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJlZiByZXNvdXJjZURpcmVj
dG9yeVVSTCkKQEAgLTY5MSwyMiArNjkxLDIyIEBAIGJvb2wgV0tQYWdlQmFja2dyb3VuZEV4dGVu
ZHNCZXlvbmRQYWdlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBhZ2luYXRp
b25Nb2RlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2luYXRpb25Nb2RlIHBhZ2luYXRpb25Nb2Rl
KQogewotICAgIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZTsKKyAgICBQYWdpbmF0aW9u
OjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9kZSkgewogICAgIGNhc2Uga1dL
UGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKLSAgICAgICAgbW9kZSA9IFdlYkNvcmU6OlBhZ2lu
YXRpb246OlVucGFnaW5hdGVkOworICAgICAgICBtb2RlID0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0
ZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVMZWZ0VG9SaWdo
dDoKLSAgICAgICAgbW9kZSA9IFdlYkNvcmU6OlBhZ2luYXRpb246OkxlZnRUb1JpZ2h0UGFnaW5h
dGVkOworICAgICAgICBtb2RlID0gUGFnaW5hdGlvbjo6TGVmdFRvUmlnaHRQYWdpbmF0ZWQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVSaWdodFRvTGVmdDoKLSAg
ICAgICAgbW9kZSA9IFdlYkNvcmU6OlBhZ2luYXRpb246OlJpZ2h0VG9MZWZ0UGFnaW5hdGVkOwor
ICAgICAgICBtb2RlID0gUGFnaW5hdGlvbjo6UmlnaHRUb0xlZnRQYWdpbmF0ZWQ7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVUb3BUb0JvdHRvbToKLSAgICAgICAg
bW9kZSA9IFdlYkNvcmU6OlBhZ2luYXRpb246OlRvcFRvQm90dG9tUGFnaW5hdGVkOworICAgICAg
ICBtb2RlID0gUGFnaW5hdGlvbjo6VG9wVG9Cb3R0b21QYWdpbmF0ZWQ7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVCb3R0b21Ub1RvcDoKLSAgICAgICAgbW9kZSA9
IFdlYkNvcmU6OlBhZ2luYXRpb246OkJvdHRvbVRvVG9wUGFnaW5hdGVkOworICAgICAgICBtb2Rl
ID0gUGFnaW5hdGlvbjo6Qm90dG9tVG9Ub3BQYWdpbmF0ZWQ7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybjsKQEAgLTcxNywxNSArNzE3LDE1IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnaW5hdGlvbk1vZGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnaW5hdGlvbk1vZGUg
cGFnaW5hdGlvbk1vZGUpCiBXS1BhZ2luYXRpb25Nb2RlIFdLUGFnZUdldFBhZ2luYXRpb25Nb2Rl
KFdLUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHN3aXRjaCAodG9JbXBsKHBhZ2VSZWYpLT5wYWdp
bmF0aW9uTW9kZSgpKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdpbmF0aW9uOjpVbnBhZ2luYXRl
ZDoKKyAgICBjYXNlIFBhZ2luYXRpb246OlVucGFnaW5hdGVkOgogICAgICAgICByZXR1cm4ga1dL
UGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDsKLSAgICBjYXNlIFdlYkNvcmU6OlBhZ2luYXRpb246
OkxlZnRUb1JpZ2h0UGFnaW5hdGVkOgorICAgIGNhc2UgUGFnaW5hdGlvbjo6TGVmdFRvUmlnaHRQ
YWdpbmF0ZWQ6CiAgICAgICAgIHJldHVybiBrV0tQYWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0Owot
ICAgIGNhc2UgV2ViQ29yZTo6UGFnaW5hdGlvbjo6UmlnaHRUb0xlZnRQYWdpbmF0ZWQ6CisgICAg
Y2FzZSBQYWdpbmF0aW9uOjpSaWdodFRvTGVmdFBhZ2luYXRlZDoKICAgICAgICAgcmV0dXJuIGtX
S1BhZ2luYXRpb25Nb2RlUmlnaHRUb0xlZnQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYWdpbmF0aW9u
OjpUb3BUb0JvdHRvbVBhZ2luYXRlZDoKKyAgICBjYXNlIFBhZ2luYXRpb246OlRvcFRvQm90dG9t
UGFnaW5hdGVkOgogICAgICAgICByZXR1cm4ga1dLUGFnaW5hdGlvbk1vZGVUb3BUb0JvdHRvbTsK
LSAgICBjYXNlIFdlYkNvcmU6OlBhZ2luYXRpb246OkJvdHRvbVRvVG9wUGFnaW5hdGVkOgorICAg
IGNhc2UgUGFnaW5hdGlvbjo6Qm90dG9tVG9Ub3BQYWdpbmF0ZWQ6CiAgICAgICAgIHJldHVybiBr
V0tQYWdpbmF0aW9uTW9kZUJvdHRvbVRvVG9wOwogICAgIH0KIApAQCAtMTEwNyw3ICsxMTA3LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0
b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6
Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkm
IGZyYW1lLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVu
dEJhc2UqCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUodG9BUEko
JnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpO
YXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6
TmF2aWdhdGlvbiosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MjMwLDcgKzEyMzAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgICAgICAgICAg
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0
b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmln
aW5hbFJlcXVlc3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIu
cHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAg
LTEyNDIsNyArMTI0Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgICAgIG1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJ
KCZmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9B
UEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlv
bkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1l
LmltcGwoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFJlZjxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZSkgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEyNTgs
NyArMTI1OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgICAgICAgICBtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSks
IHRvQVBJKHJlc3BvbnNlLnB0cigpKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIGNhblNob3dNSU1F
VHlwZSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92
ZXJyaWRlCisgICAgICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC51bmFibGVUb0ltcGxlbWVudFBvbGljeSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMjcxLDggKzEyNzEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0gICAgCisKIGNs
YXNzIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsUmVzdWx0TGlzdGVuZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyPiBjcmVhdGUoRnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI3MDAsNCArMjY5OSwzIEBAIHZvaWQgV0tQYWdl
R2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNh
dGlvbk1hbmlmZXN0CiAjZW5kaWYgLy8gbm90IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
IH0KICNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9j
Zy9XS0ljb25EYXRhYmFzZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwCmluZGV4IDAzMTcxZDViYjllYTExYjI0NWI2OGY3MTdjYmNj
YmMyYWYzNjg3MmUuLjRiMDQwZGJjMmI4ODZjY2EzMmI3ZWUwMzcyNjQ3NzYwZDFmMWRmNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFi
YXNlQ0cuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIENH
SW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNl
UmVmLCBXS1VSTFJlZiwgV0tTaXplKQogewpAQCAtNDEsNCArNDIsMyBAQCBDRkFycmF5UmVmIFdL
SWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiwg
V0tVUkxSZWYpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDAxYTE5ZmQzNThhOGM0NWU1YzBkOTRi
NzNiM2VkNDJhODhjNzI3ZTMuLmQ4MGVmNzk4YTAxMDRkNjEyMDM4NjIzNjc5ZTk3YzE2NjYxMWJm
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAt
MTM0LDcgKzEzNCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUGFnZUNsaWVudDsKIGNs
YXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIFNhZmVC
cm93c2luZ1dhcm5pbmc7CiBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiBjbGFzcyBWaWV3
U25hcHNob3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBkNzRkZGIzNzA1MjJlYzdhMDY3
NTA0M2EzYzQ1YTFlNGJhYzZiYWMyLi5mMWFkMzYzOTU2YWE1NWI1YWVmZTk5ZmI4MzY2NjNlNTJj
MWZjNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQpAQCAtNjEsMTAgKzYxLDggQEAKICNpbXBvcnQgIldLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5oIgogI2ltcG9ydCAiV0tQcmludGluZ1ZpZXcuaCIKICNpbXBvcnQgIldLU2FmZUJyb3dzaW5n
V2FybmluZy5oIgotI2ltcG9ydCAiV0tTaGFyZVNoZWV0LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVmlld0xheW91dFN0cmF0ZWd5LmgiCi0j
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZS5o
IgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFu
ZFByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXgg
M2Q1OGFjZjI3MzYyNTA4ZjI3MWQ2Y2E2YmUzMzI5MDY0ZGEzOWNlNi4uZWZkZTMxNWMzY2RlODg2
ODFiOGQzYmJmN2E2ODEzMmNhMDU0NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbQpAQCAtMzgsOSArMzgsMTAgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLW5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJLaXQg
eworCiBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQs
IHVpbnQzMl90IGNvbnRleHRJRCkKIHsKICNpZiBVU0UoVUlSRU1PVEVWSUVXX0NPTlRFWFRfSE9T
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggMGMyNWQ2NTdlOTc3NmE3NDc0ZDIwNTVm
ZGY1NDg3MmEwMGQ4ZWRkYi4uODI2MTU4ZmIxNGM4ZDVhNmRiMzE4NjVhNmU5OWFiODQ4N2E5MjYw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTM4LDEyICszOCwxMyBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIHN0YXRpYyBjb25zdCBhdXRvIGRhdGFiYXNl
VXBkYXRlSW50ZXJ2YWwgPSAxX3M7CiAKIHN0YXRpYyBjb25zdCBpbnQgbWF4aW11bUl0ZW1zVG9V
cGRhdGUgPSAxMDA7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNy
ZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyPiYmIHRyYWNrZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4p
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4
IDZhZmJjYjgyYmQxNWJlM2E2ZjYyNjQ2YWJjN2ZiNjc0NzZlYzQ1YmEuLjNlN2NjY2Y3ZDIwZmZl
ZDA5MjU0YzkxMDlhYzMzYzAzNTA1YzIwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC02MiwxMSArNjIsMTAgQEAKICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAorbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBIaXN0b3JpY2FsVmVsb2NpdHlEYXRh
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVmVsb2NpdHlEYXRhIHsKQEAgLTE3Miw3ICsxNzEsNyBA
QCBwcml2YXRlOgogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50VmlldyB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IF9wYWdlQ2xpZW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ2xpZW50SW1wbD4gX3BhZ2VDbGllbnQ7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyPiBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTE4Miw3ICsxODEsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxXS0luc3BlY3RvckluZGljYXRpb25WaWV3PiBfaW5zcGVjdG9ySW5kaWNh
dGlvblZpZXc7CiAgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldz4gX2luc3Bl
Y3RvckhpZ2hsaWdodFZpZXc7CiAKLSAgICBXZWJLaXQ6Okhpc3RvcmljYWxWZWxvY2l0eURhdGEg
X2hpc3RvcmljYWxLaW5lbWF0aWNEYXRhOworICAgIEhpc3RvcmljYWxWZWxvY2l0eURhdGEgX2hp
c3RvcmljYWxLaW5lbWF0aWNEYXRhOwogCiAgICAgUmV0YWluUHRyPE5TVW5kb01hbmFnZXI+IF91
bmRvTWFuYWdlcjsKIApAQCAtMTk2LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAKICAgICBfcGFnZSA9
IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKTsKICAgICBfcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKLSAgICBfcGFnZS0+c2V0
SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3IoW1VJ
U2NyZWVuIG1haW5TY3JlZW5dKSk7CisgICAgX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxl
RmFjdG9yKHNjcmVlblNjYWxlRmFjdG9yKFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOwogICAgIF9w
YWdlLT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKICAgICBfcGFnZS0+c2V0RGVsZWdhdGVzU2Ny
b2xsaW5nKHRydWUpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgcHJpdmF0ZToKICAgICBfcGFnZS0+
c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNs
aWVudD4oX3dlYlZpZXcpKTsKICNlbmRpZgogCi0gICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3Rp
Y3MoKS53a1ZpZXdDb3VudCsrOwogCiAgICAgX3Jvb3RDb250ZW50VmlldyA9IGFkb3B0TlMoW1tV
SVZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBbX3Jvb3RDb250ZW50VmlldyBsYXllcl0ubmFtZSA9
IEAiUm9vdENvbnRlbnQiOwpAQCAtMjM0LDkgKzIzMyw5IEBAIHByaXZhdGU6CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lIHdlYlZpZXc6d2ViVmlld10pKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOworICAg
IEluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CisgICAgX3BhZ2VDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKICAg
ICBfd2ViVmlldyA9IHdlYlZpZXc7CiAKICAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShj
b25maWd1cmF0aW9uKV07CkBAIC0yNTAsMTIgKzI0OSwxMiBAQCBwcml2YXRlOgogCiAgICAgX3Bh
Z2UtPmNsb3NlKCk7CiAKLSAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCku
d2tWaWV3Q291bnQtLTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0Nv
dW50LS07CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKFdlYktpdDo6V2ViUGFnZVBy
b3h5KilwYWdlCistIChXZWJQYWdlUHJveHkqKXBhZ2UKIHsKICAgICByZXR1cm4gX3BhZ2UuZ2V0
KCk7CiB9CkBAIC0zNDQsOSArMzQzLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgfQogfQogCi0tICh2b2lkKXVwZGF0ZUZpeGVkQ2xpcHBpbmdWaWV3OihXZWJDb3Jl
OjpGbG9hdFJlY3QpZml4ZWRQb3NpdGlvblJlY3RGb3JVSQorLSAodm9pZCl1cGRhdGVGaXhlZENs
aXBwaW5nVmlldzooRmxvYXRSZWN0KWZpeGVkUG9zaXRpb25SZWN0Rm9yVUkKIHsKLSAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgY2xpcHBpbmdCb3VuZHMgPSBbc2VsZiBib3VuZHNdOworICAgIEZsb2F0
UmVjdCBjbGlwcGluZ0JvdW5kcyA9IFtzZWxmIGJvdW5kc107CiAgICAgY2xpcHBpbmdCb3VuZHMu
dW5pdGUoZml4ZWRQb3NpdGlvblJlY3RGb3JVSSk7CiAKICAgICBbX2ZpeGVkQ2xpcHBpbmdWaWV3
IHNldENlbnRlcjpjbGlwcGluZ0JvdW5kcy5sb2NhdGlvbigpXTsgLy8gTm90IHJlYWxseSB0aGUg
Y2VudGVyIHNpbmNlIHdlIHNldCBhbiBhbmNob3IgcG9pbnQuCkBAIC0zODcsMTggKzM4NiwxOCBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBX
ZWJLaXQ6Okhpc3RvcmljYWxWZWxvY2l0eURhdGE6OlZlbG9jaXR5RGF0YSB2ZWxvY2l0eURhdGE7
CisgICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YTo6VmVsb2NpdHlEYXRhIHZlbG9jaXR5RGF0YTsK
ICAgICBpZiAoIWlzU3RhYmxlU3RhdGUpCiAgICAgICAgIHZlbG9jaXR5RGF0YSA9IF9oaXN0b3Jp
Y2FsS2luZW1hdGljRGF0YS52ZWxvY2l0eUZvck5ld0RhdGEodmlzaWJsZUNvbnRlbnRSZWN0Lm9y
aWdpbiwgem9vbVNjYWxlLCB0aW1lc3RhbXApOwogICAgIGVsc2UKICAgICAgICAgX2hpc3Rvcmlj
YWxLaW5lbWF0aWNEYXRhLmNsZWFyKCk7CiAKLSAgICBXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkoKTsKKyAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KiBz
Y3JvbGxpbmdDb29yZGluYXRvciA9IF9wYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7
CiAKICAgICBDR1JlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0Jv
dW5kcyA9IFtzZWxmIF9jb21wdXRlVW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0
Vmlld0JvdW5kczp1bm9ic2N1cmVkQ29udGVudFJlY3QgaW5wdXRWaWV3Qm91bmRzOmlucHV0Vmll
d0JvdW5kc107Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0Rm9yTGF5
b3V0ID0gX3BhZ2UtPmNvbXB1dGVDdXN0b21GaXhlZFBvc2l0aW9uUmVjdCh1bm9ic2N1cmVkQ29u
dGVudFJlY3QsIHVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMs
IF9wYWdlLT5jdXN0b21GaXhlZFBvc2l0aW9uUmVjdCgpLCB6b29tU2NhbGUsIFdlYkNvcmU6OkZy
YW1lVmlldzo6TGF5b3V0Vmlld3BvcnRDb25zdHJhaW50OjpDb25zdHJhaW5lZFRvRG9jdW1lbnRS
ZWN0LCBzY3JvbGxpbmdDb29yZGluYXRvci0+dmlzdWFsVmlld3BvcnRFbmFibGVkKCkpOworICAg
IEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdEZvckxheW91dCA9IF9wYWdlLT5jb21wdXRlQ3Vz
dG9tRml4ZWRQb3NpdGlvblJlY3QodW5vYnNjdXJlZENvbnRlbnRSZWN0LCB1bm9ic2N1cmVkQ29u
dGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzLCBfcGFnZS0+Y3VzdG9tRml4ZWRQb3Np
dGlvblJlY3QoKSwgem9vbVNjYWxlLCBGcmFtZVZpZXc6OkxheW91dFZpZXdwb3J0Q29uc3RyYWlu
dDo6Q29uc3RyYWluZWRUb0RvY3VtZW50UmVjdCwgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnZpc3Vh
bFZpZXdwb3J0RW5hYmxlZCgpKTsKIAotICAgIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mbyB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKAorICAgIFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygKICAgICAgICAgdmlz
aWJsZUNvbnRlbnRSZWN0LAogICAgICAgICB1bm9ic2N1cmVkQ29udGVudFJlY3QsCiAgICAgICAg
IHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsCkBAIC00MTYsNyArNDE1LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHZlbG9jaXR5RGF0
YS5ob3Jpem9udGFsVmVsb2NpdHksCiAgICAgICAgIHZlbG9jaXR5RGF0YS52ZXJ0aWNhbFZlbG9j
aXR5LAogICAgICAgICB2ZWxvY2l0eURhdGEuc2NhbGVDaGFuZ2VSYXRlLAotICAgICAgICBkb3du
Y2FzdDxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpkcmF3aW5nQXJl
YSkubGFzdENvbW1pdHRlZExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKSk7CisgICAgICAgIGRvd25j
YXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpkcmF3aW5nQXJlYSkubGFzdENv
bW1pdHRlZExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIi1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxl
UmVjdF0iIDw8IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uZHVtcCgpKTsKIApAQCAtNDI1
LDcgKzQyNCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgX3Np
emVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gTk87CiAKLSAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3QgPSBfcGFnZS0+Y29tcHV0ZUN1c3Rv
bUZpeGVkUG9zaXRpb25SZWN0KF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSwgX3BhZ2Ut
PnVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMoKSwgX3BhZ2Ut
PmN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KCksIHpvb21TY2FsZSwgV2ViQ29yZTo6RnJhbWVWaWV3
OjpMYXlvdXRWaWV3cG9ydENvbnN0cmFpbnQ6OlVuY29uc3RyYWluZWQsIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSk7CisgICAgRmxvYXRSZWN0IGZpeGVkUG9z
aXRpb25SZWN0ID0gX3BhZ2UtPmNvbXB1dGVDdXN0b21GaXhlZFBvc2l0aW9uUmVjdChfcGFnZS0+
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCksIF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNw
ZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCksIF9wYWdlLT5jdXN0b21GaXhlZFBvc2l0aW9uUmVjdCgp
LCB6b29tU2NhbGUsIEZyYW1lVmlldzo6TGF5b3V0Vmlld3BvcnRDb25zdHJhaW50OjpVbmNvbnN0
cmFpbmVkLCBzY3JvbGxpbmdDb29yZGluYXRvci0+dmlzdWFsVmlld3BvcnRFbmFibGVkKCkpOwog
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT52aWV3cG9ydENoYW5nZWRWaWFEZWxlZ2F0ZWRTY3Jv
bGxpbmcoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJvb3RTY3JvbGxpbmdOb2RlSUQoKSwgZml4ZWRQ
b3NpdGlvblJlY3QsIHpvb21TY2FsZSk7CiAKICAgICBkcmF3aW5nQXJlYS0+dXBkYXRlRGVidWdJ
bmRpY2F0b3IoKTsKQEAgLTQ3Nyw3ICs0NzYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIC0gKHZvaWQpX3VwZGF0ZUZvclNjcmVlbjooVUlTY3JlZW4gKilzY3JlZW4KIHsK
ICAgICBBU1NFUlQoc2NyZWVuKTsKLSAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVG
YWN0b3IoV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3Ioc2NyZWVuKSk7CisgICAgX3BhZ2UtPnNl
dEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKHNjcmVlblNjYWxlRmFjdG9yKHNjcmVlbikpOwog
ICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnNdOwogfQogCkBA
IC00OTgsMTAgKzQ5NywxMCBAQCBzdGF0aWMgdm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVD
b25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVudCwgcGlkX3QgcGlkLAogLSAodm9pZClfYWNj
ZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zCiB7CiAgICAgYXV0byB1dWlkID0gW05T
VVVJRCBVVUlEXTsKLSAgICBOU0RhdGEgKnJlbW90ZUVsZW1lbnRUb2tlbiA9IFdlYktpdDo6bmV3
QWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKHV1aWQpOworICAgIE5TRGF0YSAqcmVtb3RlRWxlbWVu
dFRva2VuID0gbmV3QWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKHV1aWQpOwogCiAgICAgLy8gU3Rv
cmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFdlYlByb2Nlc3MgdGhhdCBjYW4gbGF0ZXIgYmUgcmV0
cmlldmVkIGJ5IHRoZSBpT1MgQWNjZXNzaWJpbGl0eSBydW50aW1lLgotICAgIGlmIChfcGFnZS0+
cHJvY2VzcygpLnN0YXRlKCkgPT0gV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5u
aW5nKSB7CisgICAgaWYgKF9wYWdlLT5wcm9jZXNzKCkuc3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJv
eHk6OlN0YXRlOjpSdW5uaW5nKSB7CiAgICAgICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biA9IF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpOwogICAgICAgICBzdG9yZUFjY2Vzc2li
aWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oc2VsZiwgX3BhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSWRlbnRpZmllcigpLCBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCkucG9ydCwgdXVpZCk7
CiAKQEAgLTUxNyw5ICs1MTYsOSBAQCBzdGF0aWMgdm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1v
dGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVudCwgcGlkX3QgcGlkLAogCiAjcHJhZ21h
IG1hcmsgUGFnZUNsaWVudEltcGwgbWV0aG9kcwogCi0tIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQcm94eQorLSAoc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5CiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PigqX3BhZ2UpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRF
eGl0CkBAIC01NTUsNyArNTU0LDcgQEAgc3RhdGljIHZvaWQgc3RvcmVBY2Nlc3NpYmlsaXR5UmVt
b3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKGlkIGVsZW1lbnQsIHBpZF90IHBpZCwKICAgICBDR1Bv
aW50IHNjcm9sbE9yaWdpbiA9IC1sYXllclRyZWVUcmFuc2FjdGlvbi5zY3JvbGxPcmlnaW4oKTsK
ICAgICBDR1JlY3QgY29udGVudEJvdW5kcyA9IHsgc2Nyb2xsT3JpZ2luLCBjb250ZW50c1NpemUg
fTsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS0Nv
bnRlbnRWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSB0cmFuc2FjdGlvbklEICIgPDwgIGxheWVy
VHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSA8PCAiIGNvbnRlbnRCb3VuZHMgIiA8PCBX
ZWJDb3JlOjpGbG9hdFJlY3QoY29udGVudEJvdW5kcykpOworICAgIExPR19XSVRIX1NUUkVBTShW
aXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRMYXllclRy
ZWU6XSB0cmFuc2FjdGlvbklEICIgPDwgIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9u
SUQoKSA8PCAiIGNvbnRlbnRCb3VuZHMgIiA8PCBGbG9hdFJlY3QoY29udGVudEJvdW5kcykpOwog
CiAgICAgQk9PTCBib3VuZHNDaGFuZ2VkID0gIUNHUmVjdEVxdWFsVG9SZWN0KFtzZWxmIGJvdW5k
c10sIGNvbnRlbnRCb3VuZHMpOwogICAgIGlmIChib3VuZHNDaGFuZ2VkKQpAQCAtNTY0LDcgKzU2
Myw3IEBAIHN0YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZv
cm1hdGlvbihpZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAgICAgW193ZWJWaWV3IF9kaWRDb21taXRM
YXllclRyZWU6bGF5ZXJUcmVlVHJhbnNhY3Rpb25dOwogCiAgICAgaWYgKF9pbnRlcmFjdGlvblZp
ZXdzQ29udGFpbmVyVmlldykgewotICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE9y
aWdpbiA9IGxheWVyVHJlZVRyYW5zYWN0aW9uLnNjcm9sbE9yaWdpbigpOworICAgICAgICBGbG9h
dFBvaW50IHNjYWxlZE9yaWdpbiA9IGxheWVyVHJlZVRyYW5zYWN0aW9uLnNjcm9sbE9yaWdpbigp
OwogICAgICAgICBmbG9hdCBzY2FsZSA9IFtbX3dlYlZpZXcgc2Nyb2xsVmlld10gem9vbVNjYWxl
XTsKICAgICAgICAgc2NhbGVkT3JpZ2luLnNjYWxlKHNjYWxlKTsKICAgICAgICAgW19pbnRlcmFj
dGlvblZpZXdzQ29udGFpbmVyVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKHNjYWxlZE9yaWdpbi54
KCksIHNjYWxlZE9yaWdpbi55KCksIDAsIDApXTsKQEAgLTU3Miw3ICs1NzEsNyBAQCBzdGF0aWMg
dm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxl
bWVudCwgcGlkX3QgcGlkLAogICAgIAogICAgIGlmIChib3VuZHNDaGFuZ2VkKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBmYWN0b3IgY29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KCkgaW50byBz
b21ldGhpbmcgdGhhdCBnaXZlcyB1cyB0aGlzIHJlY3QuCi0gICAgICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBmaXhlZFBvc2l0aW9uUmVjdCA9IF9wYWdlLT5jb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlv
blJlY3QoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLCBfcGFnZS0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpLCBfcGFnZS0+Y3VzdG9tRml4ZWRQ
b3NpdGlvblJlY3QoKSwgW1tfd2ViVmlldyBzY3JvbGxWaWV3XSB6b29tU2NhbGVdKTsKKyAgICAg
ICAgRmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0ID0gX3BhZ2UtPmNvbXB1dGVDdXN0b21GaXhl
ZFBvc2l0aW9uUmVjdChfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCksIF9wYWdlLT51bm9i
c2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCksIF9wYWdlLT5jdXN0
b21GaXhlZFBvc2l0aW9uUmVjdCgpLCBbW193ZWJWaWV3IHNjcm9sbFZpZXddIHpvb21TY2FsZV0p
OwogICAgICAgICBbc2VsZiB1cGRhdGVGaXhlZENsaXBwaW5nVmlldzpmaXhlZFBvc2l0aW9uUmVj
dF07CiAKICAgICAgICAgLy8gV2UgbmVlZCB0byBwdXNoIHRoZSBuZXcgY29udGVudCBib3VuZHMg
dG8gdGhlIHdlYnZpZXcgdG8gdXBkYXRlIGZpeGVkIHBvc2l0aW9uIHJlY3RzLgpAQCAtNjczLDcg
KzY3Miw3IEBAIHN0YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25J
bmZvcm1hdGlvbihpZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAgICAgaWYgKENHUmVjdElzRW1wdHko
cHJpbnRpbmdSZWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXZWJLaXQ6OlByaW50SW5m
byBwcmludEluZm87CisgICAgUHJpbnRJbmZvIHByaW50SW5mbzsKICAgICBwcmludEluZm8ucGFn
ZVNldHVwU2NhbGVGYWN0b3IgPSAxOwogICAgIHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSA9
IHByaW50Rm9ybWF0dGVyLnNuYXBzaG90Rmlyc3RQYWdlOwogICAgIGlmIChwcmludEluZm8uc25h
cHNob3RGaXJzdFBhZ2UpIHsKQEAgLTY4Nyw5ICs2ODYsOSBAQCBzdGF0aWMgdm9pZCBzdG9yZUFj
Y2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVudCwgcGlkX3Qg
cGlkLAogCiAgICAgX2lzUHJpbnRpbmdUb1BERiA9IFlFUzsKICAgICBhdXRvIHJldGFpbmVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKTsKLSAgICByZXR1cm4gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICByZXR1cm4gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAg
ICAgIHJldGFpbmVkU2VsZi0+X2lzUHJpbnRpbmdUb1BERiA9IE5POwotICAgICAgICBpZiAoZXJy
b3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAgICBpZiAoZXJy
b3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGEzMjc0ZTdmNWEzNzU4MDc2M2I1ZDVmNTcxNDIzOGU3OGY3MDdlZDQuLmUzOWVhNWU1YWJjNGNl
MjdmZGYyNGQ2YzVhNjcwNTA1YjUzNGI1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTQyLDEwICsx
NDIsMTEgQEAKIAogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCituYW1lc3BhY2UgV2ViS2l0IHsK
KwogV0tTZWxlY3Rpb25EcmF3aW5nSW5mbzo6V0tTZWxlY3Rpb25EcmF3aW5nSW5mbygpCiAgICAg
OiB0eXBlKFNlbGVjdGlvblR5cGU6Ok5vbmUpCiB7CkBAIC0yODEsNyArMjgyLDcgQEAgY29uc3Qg
Q0dGbG9hdCBtaW5pbXVtVGFwSGlnaGxpZ2h0UmFkaXVzID0gMi4wOwogQHByb3RvY29sIFVJU2Vs
ZWN0aW9uSW50ZXJhY3Rpb25Bc3Npc3RhbnQ7CiAKIEBpbnRlcmZhY2UgV0tGb2N1c2VkRWxlbWVu
dEluZm8gOiBOU09iamVjdCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPgotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IFdlYktpdDo6QXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDooQk9PTClpc1VzZXJJ
bml0aWF0ZWQgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJPYmpl
Y3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjooY29u
c3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDoo
Qk9PTClpc1VzZXJJbml0aWF0ZWQgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5n
PiAqKXVzZXJPYmplY3Q7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dFNlc3Np
b24gewpAQCAtNDQxLDcgKzQ0Miw3IEBAIGNvbnN0IENHRmxvYXQgbWluaW11bVRhcEhpZ2hsaWdo
dFJhZGl1cyA9IDIuMDsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9sYWJlbDsKIH0KIAotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IFdlYktp
dDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRlZDoo
Qk9PTClpc1VzZXJJbml0aWF0ZWQgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5n
PiAqKXVzZXJPYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uOihjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gaXNVc2Vy
SW5pdGlhdGVkOihCT09MKWlzVXNlckluaXRpYXRlZCB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNT
ZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNjExLDcgKzYxMiw3IEBAIHN0YXRpYyBXS0Ry
YWdTZXNzaW9uQ29udGV4dCAqZW5zdXJlTG9jYWxEcmFnU2Vzc2lvbkNvbnRleHQoaWQgPFVJRHJh
Z1Nlc3Npb24+IHNlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0
OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiBhc3Npc3RlZE5vZGVJbmZvcm1hdGlvbikKIHsKLSAg
ICByZXR1cm4gKGFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlICE9IFdlYktpdDo6
SW5wdXRUeXBlOjpOb25lKTsKKyAgICByZXR1cm4gKGFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlICE9IElucHV0VHlwZTo6Tm9uZSk7CiB9CiAKIC0gKFdLRm9ybUlucHV0U2Vzc2lv
biAqKV9mb3JtSW5wdXRTZXNzaW9uCkBAIC03MjgsNyArNzI5LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIGFzc2lz
dGVkTm9kZUkKICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2Fj
dGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXI+KHNlbGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsK
ICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gTk87CiAgICAgX3BvdGVudGlh
bFRhcEluUHJvZ3Jlc3MgPSBOTzsKICAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gTk87CkBAIC05
NzYsNyArOTc3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6
OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIGFzc2lzdGVkTm9kZUkKICAgICByZXR1cm4gW3N1cGVy
IGhpdFRlc3Q6cG9pbnQgd2l0aEV2ZW50OmV2ZW50XTsKIH0KIAotLSAoY29uc3QgV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpcG9zaXRpb25JbmZvcm1hdGlvbgorLSAo
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKXBvc2l0aW9uSW5mb3JtYXRp
b24KIHsKICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9CkBAIC0xMTA4LDEwICsx
MTA5LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAKICAgICBfbGFzdEludGVyYWN0aW9u
TG9jYXRpb24gPSBsYXN0VG91Y2hFdmVudC0+bG9jYXRpb25JbkRvY3VtZW50Q29vcmRpbmF0ZXM7
CiAgICAgaWYgKGxhc3RUb3VjaEV2ZW50LT50eXBlID09IFVJV2ViVG91Y2hFdmVudFRvdWNoQmVn
aW4pCi0gICAgICAgIF9sYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCA9IGRv
d25jYXN0PFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLT5k
cmF3aW5nQXJlYSgpKS5sYXN0Q29tbWl0dGVkTGF5ZXJUcmVlVHJhbnNhY3Rpb25JRCgpOworICAg
ICAgICBfbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQgPSBkb3duY2FzdDxS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UtPmRyYXdpbmdBcmVhKCkpLmxh
c3RDb21taXR0ZWRMYXllclRyZWVUcmFuc2FjdGlvbklEKCk7CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudCBuYXRpdmVXZWJUb3VjaEV2
ZW50KGxhc3RUb3VjaEV2ZW50KTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50IG5hdGl2ZVdlYlRv
dWNoRXZlbnQobGFzdFRvdWNoRXZlbnQpOwogICAgIG5hdGl2ZVdlYlRvdWNoRXZlbnQuc2V0Q2Fu
UHJldmVudE5hdGl2ZUdlc3R1cmVzKCFfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkg
fHwgW2dlc3R1cmVSZWNvZ25pemVyIGlzRGVmYXVsdFByZXZlbnRlZF0pOwogCiAgICAgaWYgKF9j
YW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSkKQEAgLTExNDQsNyArMTE0NSw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRR
dWFkIGluZmxhdGVRdWFkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UXVhZCYgcXVhZCwgZmxvYXQgaW5m
bGF0ZVNpemUpCitzdGF0aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYg
cXVhZCwgZmxvYXQgaW5mbGF0ZVNpemUpCiB7CiAgICAgLy8gV2Ugc29ydCB0aGUgb3V0cHV0IHBv
aW50cyBsaWtlIHRoaXMgKGFzIGV4cGVjdGVkIGJ5IHRoZSBoaWdobGlnaHQgdmlldyk6CiAgICAg
Ly8gIHAyLS0tLS0tcDMKQEAgLTExNTIsNyArMTE1Myw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9h
dFF1YWQgaW5mbGF0ZVF1YWQoY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBxdWFkLCBmbG9hdCBp
bmZsCiAgICAgLy8gIHAxLS0tLS0tcDQKIAogICAgIC8vIDEpIFNvcnQgdGhlIHBvaW50cyBob3Jp
em9udGFsbHkuCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludHNbNF0gPSB7IHF1YWQucDEo
KSwgcXVhZC5wNCgpLCBxdWFkLnAyKCksIHF1YWQucDMoKSB9OworICAgIEZsb2F0UG9pbnQgcG9p
bnRzWzRdID0geyBxdWFkLnAxKCksIHF1YWQucDQoKSwgcXVhZC5wMigpLCBxdWFkLnAzKCkgfTsK
ICAgICBpZiAocG9pbnRzWzBdLngoKSA+IHBvaW50c1sxXS54KCkpCiAgICAgICAgIHN0ZDo6c3dh
cChwb2ludHNbMF0sIHBvaW50c1sxXSk7CiAgICAgaWYgKHBvaW50c1syXS54KCkgPiBwb2ludHNb
M10ueCgpKQpAQCAtMTE3OCw3ICsxMTc5LDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UXVhZCBp
bmZsYXRlUXVhZChjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIHF1YWQsIGZsb2F0IGluZmwKICAg
ICBwb2ludHNbMl0ubW92ZShpbmZsYXRlU2l6ZSwgLWluZmxhdGVTaXplKTsKICAgICBwb2ludHNb
M10ubW92ZShpbmZsYXRlU2l6ZSwgaW5mbGF0ZVNpemUpOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6
OkZsb2F0UXVhZChwb2ludHNbMV0sIHBvaW50c1swXSwgcG9pbnRzWzJdLCBwb2ludHNbM10pOwor
ICAgIHJldHVybiBGbG9hdFF1YWQocG9pbnRzWzFdLCBwb2ludHNbMF0sIHBvaW50c1syXSwgcG9p
bnRzWzNdKTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xMjE1LDkgKzEyMTYs
OSBAQCBzdGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdl
YkNvcmU6OkludFNpemUgYm9yZGVyUmFkaXVzLAogICAgIGNvbnN0IHNpemVfdCBxdWFkQ291bnQg
PSBoaWdobGlnaHRlZFF1YWRzLnNpemUoKTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IHJlY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OnN0YXRpY19jYXN0PGNvbnN0IE5TVUludGVnZXI+KHF1YWRDb3VudCldKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHF1YWRDb3VudDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UXVhZCYgcXVhZCA9IGhpZ2hsaWdodGVkUXVhZHNbaV07CisgICAgICAgIGNvbnN0IEZs
b2F0UXVhZCYgcXVhZCA9IGhpZ2hsaWdodGVkUXVhZHNbaV07CiAgICAgICAgIGlmIChxdWFkLmlz
UmVjdGlsaW5lYXIoKSkgewotICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5n
Qm94ID0gcXVhZC5ib3VuZGluZ0JveCgpOworICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5n
Qm94ID0gcXVhZC5ib3VuZGluZ0JveCgpOwogICAgICAgICAgICAgYm91bmRpbmdCb3guc2NhbGUo
c2VsZlNjYWxlKTsKICAgICAgICAgICAgIGJvdW5kaW5nQm94LmluZmxhdGUobWluaW11bVRhcEhp
Z2hsaWdodFJhZGl1cyk7CiAgICAgICAgICAgICBDR1JlY3QgcGl4ZWxBbGlnbmVkUmVjdCA9IHN0
YXRpY19jYXN0PENHUmVjdD4oZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyhib3VuZGluZ0JveCwg
ZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTEyMzQsOSArMTIzNSw5IEBAIHN0YXRpYyBOU1ZhbHVl
ICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50U2l6ZSBib3Jk
ZXJSYWRpdXMsCiAgICAgZWxzZSB7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
cXVhZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
c3RhdGljX2Nhc3Q8Y29uc3QgTlNVSW50ZWdlcj4ocXVhZENvdW50KV0pOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHF1YWRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBXZWJDb3Jl
OjpGbG9hdFF1YWQgcXVhZCA9IGhpZ2hsaWdodGVkUXVhZHNbaV07CisgICAgICAgICAgICBGbG9h
dFF1YWQgcXVhZCA9IGhpZ2hsaWdodGVkUXVhZHNbaV07CiAgICAgICAgICAgICBxdWFkLnNjYWxl
KHNlbGZTY2FsZSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpGbG9hdFF1YWQgZXh0ZW5kZWRRdWFk
ID0gaW5mbGF0ZVF1YWQocXVhZCwgbWluaW11bVRhcEhpZ2hsaWdodFJhZGl1cyk7CisgICAgICAg
ICAgICBGbG9hdFF1YWQgZXh0ZW5kZWRRdWFkID0gaW5mbGF0ZVF1YWQocXVhZCwgbWluaW11bVRh
cEhpZ2hsaWdodFJhZGl1cyk7CiAgICAgICAgICAgICBbcXVhZHMgYWRkT2JqZWN0OltOU1ZhbHVl
IHZhbHVlV2l0aENHUG9pbnQ6ZXh0ZW5kZWRRdWFkLnAxKCldXTsKICAgICAgICAgICAgIFtxdWFk
cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpleHRlbmRlZFF1YWQucDIoKV1d
OwogICAgICAgICAgICAgW3F1YWRzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50
OmV4dGVuZGVkUXVhZC5wMygpXV07CkBAIC0xMjU1LDcgKzEyNTYsNyBAQCBzdGF0aWMgTlNWYWx1
ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUgYm9y
ZGVyUmFkaXVzLAogCiAtICh2b2lkKV9zaG93VGFwSGlnaGxpZ2h0CiB7Ci0gICAgYXV0byBzaG91
bGRQYWludFRhcEhpZ2hsaWdodCA9IFsmXShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3Qp
IHsKKyAgICBhdXRvIHNob3VsZFBhaW50VGFwSGlnaGxpZ2h0ID0gWyZdKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgewogICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgaGlnaGxpZ2h0UGFpbnRUaHJl
c2hvbGQgPSAwLjM7IC8vIDMwJQogICAgICAgICBmbG9hdCBoaWdobGlnaHRBcmVhID0gMDsKICAg
ICAgICAgZm9yIChhdXRvIGhpZ2hsaWdodFF1YWQgOiBfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
cXVhZHMpIHsKQEAgLTEzNTksMTggKzEzNjAsMTggQEAgc3RhdGljIE5TVmFsdWUgKm5zU2l6ZUZv
clRhcEhpZ2hsaWdodEJvcmRlclJhZGl1cyhXZWJDb3JlOjpJbnRTaXplIGJvcmRlclJhZGl1cywK
IHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCB0aGUgbG9naWMgdG8gaGFuZGxlIGtleWJv
YXJkIHZpc2liaWxpdHkgZHVyaW5nIGZvY3VzIHJlZGlyZWN0cy4KICAgICBzd2l0Y2ggKF9hc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6Ok5vbmU6CisgICAgY2FzZSBJbnB1dFR5cGU6Ok5vbmU6CiAgICAgICAgIHJldHVybiBO
TzsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CisgICAgY2FzZSBJbnB1dFR5
cGU6OlNlbGVjdDoKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpDb2xvcjoKKyAgICBjYXNlIElucHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYK
LSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6
Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKKyAgICBjYXNlIElucHV0VHlwZTo6
RGF0ZToKKyAgICBjYXNlIElucHV0VHlwZTo6TW9udGg6CisgICAgY2FzZSBJbnB1dFR5cGU6OkRh
dGVUaW1lTG9jYWw6CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiAh
Y3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCk7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RHJhd2luZzoKKyAgICBjYXNlIElucHV0VHlwZTo6RHJhd2luZzoKICAgICAgICAgcmV0
dXJuIFlFUzsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIV9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5pc1JlYWRPbmx5OwpAQCAtMTM4NSwxNyArMTM4NiwxNyBAQCBzdGF0aWMgTlNWYWx1
ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUgYm9y
ZGVyUmFkaXVzLAogCiAtICh2b2lkKV9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZpZXcKIHsKLSAgICBp
ZiAoIV9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnMuY29udGFpbnMoV2ViS2l0OjpG
b2N1c2VkRWxlbWVudElzVHJhbnNwYXJlbnQpKSB7CisgICAgaWYgKCFfc3VwcHJlc3NTZWxlY3Rp
b25Bc3Npc3RhbnRSZWFzb25zLmNvbnRhaW5zKEZvY3VzZWRFbGVtZW50SXNUcmFuc3BhcmVudCkp
IHsKICAgICAgICAgLy8gSW4gY2FzZSB1c2VyIHNjYWxpbmcgaXMgZm9yY2UgZW5hYmxlZCwgZG8g
bm90IHVzZSB0aGF0IHNjYWxpbmcgd2hlbiB6b29taW5nIGluIHdpdGggYW4gaW5wdXQgZmllbGQu
CiAgICAgICAgIC8vIFpvb21pbmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxlIGZhY3Rv
ciBzaG91bGQgb25seSBoYXBwZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KICAgICAgICAg
W3NlbGYgX3pvb21Ub0ZvY3VzUmVjdDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFJl
Y3QKLSAgICAgICAgICAgIHNlbGVjdGlvblJlY3Q6X2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9j
dXMgPyBXZWJDb3JlOjpJbnRSZWN0KCkgOiBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uc2VsZWN0
aW9uUmVjdAorICAgICAgICAgICAgc2VsZWN0aW9uUmVjdDpfZGlkQWNjZXNzb3J5VGFiSW5pdGlh
dGVGb2N1cyA/IEludFJlY3QoKSA6IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5zZWxlY3Rpb25S
ZWN0CiAgICAgICAgICAgICBpbnNpZGVGaXhlZDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5z
aWRlRml4ZWRQb3NpdGlvbgogICAgICAgICAgICAgZm9udFNpemU6X2Fzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLm5vZGVGb250U2l6ZQogICAgICAgICAgICAgbWluaW11bVNjYWxlOl9hc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IKICAgICAgICAgICAgIG1heGltdW1TY2Fs
ZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubWF4aW11bVNjYWxlRmFjdG9ySWdub3JpbmdBbHdh
eXNTY2FsYWJsZQogICAgICAgICAgICAgYWxsb3dTY2FsaW5nOl9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5hbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUgJiYgIWN1cnJlbnRV
c2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpCi0gICAgICAgICAgICBmb3JjZVNjcm9sbDooX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmlucHV0TW9kZSA9PSBXZWJDb3JlOjpJbnB1dE1vZGU6Ok5vbmUp
ID8gIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpIDogW3NlbGYgcmVxdWlyZXNBY2Nl
c3NvcnlWaWV3XV07CisgICAgICAgICAgICBmb3JjZVNjcm9sbDooX2Fzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLmlucHV0TW9kZSA9PSBJbnB1dE1vZGU6Ok5vbmUpID8gIWN1cnJlbnRVc2VySW50ZXJm
YWNlSWRpb21Jc1BhZCgpIDogW3NlbGYgcmVxdWlyZXNBY2Nlc3NvcnlWaWV3XV07CiAgICAgfQog
CiAgICAgX2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPSBOTzsKQEAgLTE0MDgsMjAgKzE0
MDksMjAgQEAgc3RhdGljIE5TVmFsdWUgKm5zU2l6ZUZvclRhcEhpZ2hsaWdodEJvcmRlclJhZGl1
cyhXZWJDb3JlOjpJbnRTaXplIGJvcmRlclJhZGl1cywKICAgICBpZiAoIWhhc0Fzc2lzdGVkTm9k
ZShfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
aWYgKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pbnB1dE1vZGUgPT0gV2ViQ29yZTo6SW5wdXRN
b2RlOjpOb25lKQorICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09
IElucHV0TW9kZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIFtbVUlWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOwogCiAgICAgaWYgKCFfaW5wdXRQZXJpcGhlcmFsKSB7CiAgICAgICAgIHN3aXRjaCAoX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7Ci0gICAgICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlNlbGVjdDoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OlNlbGVjdDoKICAg
ICAgICAgICAgIF9pbnB1dFBlcmlwaGVyYWwgPSBhZG9wdE5TKFtbV0tGb3JtU2VsZWN0Q29udHJv
bCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpD
b2xvcjoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OkNvbG9yOgogICAgICAgICAgICAgX2lucHV0
UGVyaXBoZXJhbCA9IGFkb3B0TlMoW1tXS0Zvcm1Db2xvckNvbnRyb2wgYWxsb2NdIGluaXRXaXRo
VmlldzpzZWxmXSk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgorICAgICAgICBjYXNlIElucHV0VHlwZTo6RHJhd2lu
ZzoKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICAgICAgICAgIF9pbnB1dFBlcmlwaGVyYWwgPSBh
ZG9wdE5TKFtbV0tJbmtQaWNrZXJDb250cm9sIGFsbG9jXSBpbml0V2l0aERyYXdpbmdWaWV3Ol9w
YWdlLT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoX2Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEKS0+ZHJhd2luZ1ZpZXcuZ2V0KCldKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTU1OSw3ICsxNTYwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
U2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwg
VUkKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHNob3dEYXRhRGV0ZWN0b3JzU2hlZXRdOwog
fQogCi0tIChTRUwpX2FjdGlvbkZvckxvbmdQcmVzc0Zyb21Qb3NpdGlvbkluZm9ybWF0aW9uOihj
b25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilwb3NpdGlvbklu
Zm9ybWF0aW9uCistIChTRUwpX2FjdGlvbkZvckxvbmdQcmVzc0Zyb21Qb3NpdGlvbkluZm9ybWF0
aW9uOihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpcG9zaXRpb25JbmZv
cm1hdGlvbgogewogICAgIGlmICghX3dlYlZpZXcuY29uZmlndXJhdGlvbi5fbG9uZ1ByZXNzQWN0
aW9uc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xNTcyLDcgKzE1NzMsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdl
c3R1cmVSZWNvZ25pemVyICpiLCBVSQogCiAgICAgaWYgKHBvc2l0aW9uSW5mb3JtYXRpb24uaXNM
aW5rKSB7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAgICAgICBpZiAoV2ViQ29yZTo6
RGF0YURldGVjdGlvbjo6Y2FuQmVQcmVzZW50ZWRCeURhdGFEZXRlY3RvcnMocG9zaXRpb25JbmZv
cm1hdGlvbi51cmwpKQorICAgICAgICBpZiAoRGF0YURldGVjdGlvbjo6Y2FuQmVQcmVzZW50ZWRC
eURhdGFEZXRlY3RvcnMocG9zaXRpb25JbmZvcm1hdGlvbi51cmwpKQogICAgICAgICAgICAgcmV0
dXJuIEBzZWxlY3Rvcihfc2hvd0RhdGFEZXRlY3RvcnNTaGVldCk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuIEBzZWxlY3Rvcihfc2hvd0xpbmtTaGVldCk7CkBAIC0xNTg4LDEyICsxNTg5LDEyIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgcmV0dXJuIFtzZWxmIF9hY3Rpb25Gb3JMb25n
UHJlc3NGcm9tUG9zaXRpb25JbmZvcm1hdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbl07CiB9CiAK
LS0gKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24pY3VycmVudFBvc2l0
aW9uSW5mb3JtYXRpb24KKy0gKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKWN1cnJl
bnRQb3NpdGlvbkluZm9ybWF0aW9uCiB7CiAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9u
OwogfQogCi0tICh2b2lkKWRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOih2b2lkIChe
KShXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKSlhY3Rpb24gZm9yUmVx
dWVzdDooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0CistICh2
b2lkKWRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOih2b2lkICheKShJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbikpYWN0aW9uIGZvclJlcXVlc3Q6KEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0KXJlcXVlc3QKIHsKICAgICBpZiAoW3NlbGYgX2N1cnJlbnRQb3NpdGlv
bkluZm9ybWF0aW9uSXNWYWxpZEZvclJlcXVlc3Q6cmVxdWVzdF0pIHsKICAgICAgICAgLy8gSWYg
dGhlIG1vc3QgcmVjZW50IHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIGFscmVhZHkgdmFsaWQsIGlu
dm9rZSB0aGUgZ2l2ZW4gYWN0aW9uIGJsb2NrIGltbWVkaWF0ZWx5LgpAQCAtMTYzOCwxNyArMTYz
OSwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVy
ICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIF9wYWdlLT5yZXF1ZXN0UG9zaXRp
b25JbmZvcm1hdGlvbihyZXF1ZXN0KTsKIH0KIAotLSAoQk9PTClfY3VycmVudFBvc2l0aW9uSW5m
b3JtYXRpb25Jc1ZhbGlkRm9yUmVxdWVzdDooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCYpcmVxdWVzdAorLSAoQk9PTClfY3VycmVudFBvc2l0aW9uSW5mb3JtYXRp
b25Jc1ZhbGlkRm9yUmVxdWVzdDooY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qm
KXJlcXVlc3QKIHsKICAgICByZXR1cm4gX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiAmJiBf
cG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LmlzVmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3QpOwog
fQogCi0tIChCT09MKV9oYXNWYWxpZE91dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVl
c3Q6KGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKXJlcXVlc3QK
Ky0gKEJPT0wpX2hhc1ZhbGlkT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdDoo
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKXJlcXVlc3QKIHsKICAgICByZXR1
cm4gX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgJiYgX291dHN0YW5kaW5n
UG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QtPmlzVmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3QpOwog
fQogCi0tIChCT09MKV9jdXJyZW50UG9zaXRpb25JbmZvcm1hdGlvbklzQXBwcm94aW1hdGVseVZh
bGlkRm9yUmVxdWVzdDooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCYpcmVxdWVzdAorLSAoQk9PTClfY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb25Jc0FwcHJveGlt
YXRlbHlWYWxpZEZvclJlcXVlc3Q6KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
JilyZXF1ZXN0CiB7CiAgICAgcmV0dXJuIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gJiYg
X3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5pc0FwcHJveGltYXRlbHlWYWxpZEZvclJlcXVl
c3QocmVxdWVzdCk7CiB9CkBAIC0xNzE0LDcgKzE3MTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpi
LCBVSQogICAgICAgICBpZiAoaGFzQXNzaXN0ZWROb2RlKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bikpIHsKICAgICAgICAgICAgIC8vIFJlcXVlc3QgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvc2l0
aW9uIHdpdGggc3luYyBtZXNzYWdlLgogICAgICAgICAgICAgLy8gSWYgdGhlIGFzc2lzdGVkIG5v
ZGUgaXMgdGhlIHNhbWUsIHByZXZlbnQgdGhlIGdlc3R1cmUuCi0gICAgICAgICAgICBpZiAoIVtz
ZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOldlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHBvaW50KSldKQor
ICAgICAgICAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0
ZTpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKV0p
CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICAgICAgaWYgKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSXNBc3Npc3RlZE5vZGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIE5POwpAQCAtMTczMyw3ICsxNzM0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2Ft
ZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkK
ICAgICAgICAgLy8gV2Ugc3RpbGwgaGF2ZSBubyBpZGVhIGFib3V0IHdoYXQgaXMgYXQgdGhlIGxv
Y2F0aW9uLgogICAgICAgICAvLyBTZW5kIGFuIGFzeW5jIG1lc3NhZ2UgdG8gZmluZCBvdXQuCiAg
ICAgICAgIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSBOTzsKLSAgICAgICAgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KFdlYkNvcmU6OnJvdW5kZWRJ
bnRQb2ludChwb2ludCkpOworICAgICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBy
ZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwogCiAgICAgICAgIC8vIElmIDNEIFRvdWNo
IGlzIGVuYWJsZWQsIGFzeW5jaHJvbm91c2x5IGNvbGxlY3Qgc25hcHNob3RzIGluIHRoZSBob3Bl
cyB0aGF0CiAgICAgICAgIC8vIHRoZXknbGwgYXJyaXZlIGJlZm9yZSB3ZSBoYXZlIHRvIHN5bmNo
cm9ub3VzbHkgcmVxdWVzdCB0aGVtIGluCkBAIC0xNzUyLDcgKzE3NTMsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNv
Z25pemVyICpiLCBVSQogICAgICAgICAvLyBVc2UgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCB3
aXRoIG9uZSBvZiB0aGUgcHJldmlvdXMgY2FsbHMKICAgICAgICAgLy8gdG8gZ2VzdHVyZVJlY29n
bml6ZXJTaG91bGRCZWdpbi4KICAgICAgICAgLy8gRm9yY2UgYSBzeW5jIGNhbGwgaWYgbm90IHJl
YWR5IHlldC4KLSAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBy
ZXF1ZXN0KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb2ludCkpOworICAgICAgICBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwog
ICAgICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJl
cXVlc3RdKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC0xODA5LDcgKzE4MTAsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdl
c3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QgcmVxdWVzdChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKKyAg
ICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChw
b2ludCkpOwogICAgIGlmICghW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0Rh
dGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBOTzsKIApAQCAtMTgzMiw3ICsxODMzLDcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlH
ZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0
YW50UmVhc29ucykKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb2lu
dCkpOworICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZElu
dFBvaW50KHBvaW50KSk7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9u
SXNVcFRvRGF0ZTpyZXF1ZXN0XSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIHJldHVybiBfcG9z
aXRpb25JbmZvcm1hdGlvbi5pc05lYXJNYXJrZWRUZXh0OwpAQCAtMTg0Niw3ICsxODQ3LDcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlH
ZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0
YW50UmVhc29ucykKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb2lu
dCkpOworICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZElu
dFBvaW50KHBvaW50KSk7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9u
SXNVcFRvRGF0ZTpyZXF1ZXN0XSkKICAgICAgICAgcmV0dXJuIE5POwogCkBAIC0xODkwLDcgKzE4
OTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVy
ICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgICAgICBjb25zdCBXZWJDb3JlOjpT
ZWxlY3Rpb25SZWN0JiBjb3JlUmVjdCA9IHNlbGVjdGlvblJlY3RzW2ldOwogICAgICAgICBXZWJT
ZWxlY3Rpb25SZWN0ICp3ZWJSZWN0ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07
CiAgICAgICAgIHdlYlJlY3QucmVjdCA9IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAgd2ViUmVj
dC53cml0aW5nRGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gV2ViQ29yZTo6VGV4
dERpcmVjdGlvbjo6TFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRp
bmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9u
ID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gV0tXcml0aW5n
RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAg
ICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJyZWFrKCk7CiAgICAg
ICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RPbkxpbmUoKTsKICAg
ICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RPbkxpbmUoKTsKQEAg
LTE5NDcsNyArMTk0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVy
ZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiB7CiAgICAgX2lzVGFw
SGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29t
bWl0ID0gWUVTOwotICAgIF9wYWdlLT5oYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXplci5jZW50cm9pZCksICsrX2xhdGVzdFRh
cElEKTsKKyAgICBfcGFnZS0+aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChyb3VuZGVkSW50UG9p
bnQoZ2VzdHVyZVJlY29nbml6ZXIuY2VudHJvaWQpLCArK19sYXRlc3RUYXBJRCk7CiB9CiAKIC0g
KHZvaWQpX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIg
KilnZXN0dXJlUmVjb2duaXplcgpAQCAtMTk1Niw3ICsxOTU3LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXpl
ciAqYiwgVUkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVy
ID09IF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcik7Ci0gICAgX3BhZ2UtPmhhbmRs
ZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdlc3R1cmVS
ZWNvZ25pemVyLmxvY2F0aW9uKSwgKytfbGF0ZXN0VGFwSUQpOworICAgIF9wYWdlLT5oYW5kbGVT
dHlsdXNTaW5nbGVUYXBBdFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXplci5s
b2NhdGlvbiksICsrX2xhdGVzdFRhcElEKTsKIH0KIAogLSAodm9pZClfbG9uZ1ByZXNzUmVjb2du
aXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCkBA
IC0yMDQ4LDcgKzIwNDksNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vz
c2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKIAogICAgIGlmICghW3NlbGYgaXNGaXJz
dFJlc3BvbmRlcl0pIHsKICAgICAgICAgaWYgKCFfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0g
ICAgICAgICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KCk7CisgICAgICAgICAgICBfaW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElucHV0Vmlld1VwZGF0ZURlZmVycmVy
PigpOwogICAgICAgICBbc2VsZiBiZWNvbWVGaXJzdFJlc3BvbmRlcl07CiAgICAgfQogCkBAIC0y
MTA3LDcgKzIxMDgsNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2Fy
eShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKIHsKICAgICBpZiAoIVtzZWxmIGlzRmlyc3RS
ZXNwb25kZXJdKSB7CiAgICAgICAgIGlmICghX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAg
ICAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPigpOworICAgICAgICAgICAgX2lucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4o
KTsKICAgICAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwogICAgIH0KIApAQCAtMjEz
MSwxMSArMjEzMiwxMSBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2Fy
eShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKICAgICBfcGFnZS0+Y2xlYXJTZWxlY3Rpb24o
KTsKIH0KIAotLSAodm9pZClfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTooY29uc3QgV2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpaW5mbworLSAodm9pZClfcG9z
aXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTooY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mKWluZm8KIHsKICAgICBfb3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24gbmV3SW5mbyA9IGluZm87CisgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24gbmV3SW5mbyA9IGluZm87CiAgICAgbmV3SW5mby5tZXJnZUNvbXBhdGlibGVPcHRp
b25hbEluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKIAogICAgIF9wb3NpdGlvbklu
Zm9ybWF0aW9uID0gbmV3SW5mbzsKQEAgLTIxODQsMzQgKzIxODUsMzQgQEAgc3RhdGljIHZvaWQg
Y2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29udGVudFZpZXcp
CiAgICAgaWYgKFtfZm9ybUlucHV0U2Vzc2lvbiBjdXN0b21JbnB1dEFjY2Vzc29yeVZpZXddKQog
ICAgICAgICByZXR1cm4gWUVTOwogCi0gICAgaWYgKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5p
bnB1dE1vZGUgPT0gV2ViQ29yZTo6SW5wdXRNb2RlOjpOb25lKQorICAgIGlmIChfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09IElucHV0TW9kZTo6Tm9uZSkKICAgICAgICAgcmV0
dXJuIE5POwogCiAgICAgc3dpdGNoIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5
cGUpIHsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgorICAgIGNhc2UgSW5wdXRU
eXBlOjpOb25lOgogICAgICAgICByZXR1cm4gTk87Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6VGV4dDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKLSAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpTZWFyY2g6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RW1haWw6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMOgotICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlBob25lOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok51bWJlcjoK
LSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXJQYWQ6Ci0gICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OlRleHRBcmVhOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDoKLSAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRh
dGVUaW1lOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6Ci0gICAgY2FzZSBXZWJLaXQ6OiBJbnB1dFR5
cGU6OldlZWs6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKKyAgICBjYXNlIElu
cHV0VHlwZTo6VGV4dDoKKyAgICBjYXNlIElucHV0VHlwZTo6UGFzc3dvcmQ6CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlNlYXJjaDoKKyAgICBjYXNlIElucHV0VHlwZTo6RW1haWw6CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlVSTDoKKyAgICBjYXNlIElucHV0VHlwZTo6UGhvbmU6CisgICAgY2FzZSBJbnB1
dFR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIElucHV0VHlwZTo6TnVtYmVyUGFkOgorICAgIGNhc2Ug
SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6CisgICAgY2FzZSBJbnB1dFR5cGU6OlRleHRBcmVh
OgorICAgIGNhc2UgSW5wdXRUeXBlOjpTZWxlY3Q6CisgICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6
CisgICAgY2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lOgorICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRl
VGltZUxvY2FsOgorICAgIGNhc2UgSW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIElucHV0VHlw
ZTo6V2VlazoKKyAgICBjYXNlIElucHV0VHlwZTo6VGltZToKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb2xvcjoKKyAgICBjYXNlIElu
cHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICFjdXJyZW50VXNlckludGVy
ZmFjZUlkaW9tSXNQYWQoKTsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgor
ICAgIGNhc2UgSW5wdXRUeXBlOjpEcmF3aW5nOgogICAgICAgICByZXR1cm4gWUVTOwogICAgIH0K
IH0KQEAgLTIyNTYsNyArMjI1Nyw3IEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElm
TmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQogICAgICAgICBbcGxhaW5UZXh0
VHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpVSVBhc3RlYm9hcmRUeXBlTGlzdFN0cmluZ107CiAK
ICAgICAgICAgcmljaFR5cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0OldlYkNvcmU6OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsK
KyAgICAgICAgW3JpY2hUeXBlcyBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAg
ICAgICBbcmljaFR5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VUlQYXN0ZWJvYXJkVHlwZUxpc3RJ
bWFnZV07CiAgICAgICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwbGFpblRleHRU
eXBlc107CiAgICAgfQpAQCAtMjI3OCw4ICsyMjc5LDggQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NP
TlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpCiAtICh2b2lkKV9s
b29rdXBGb3JXZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmll
dz4gdmlldyA9IHNlbGY7Ci0gICAgX3BhZ2UtPmdldFNlbGVjdGlvbkNvbnRleHQoW3ZpZXddKGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIHRleHRCZWZvcmUsIGNvbnN0
IFN0cmluZyYgdGV4dEFmdGVyLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
LSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkK
KyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uQ29udGV4dChbdmlld10oY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgdGV4dEJlZm9yZSwgY29uc3QgU3RyaW5nJiB0ZXh0QWZ0
ZXIsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlm
ICghc2VsZWN0ZWRUZXh0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMwMyw4ICsyMzA0LDgg
QEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9U
T19XS1dFQlZJRVcpCiAtICh2b2lkKV9zaGFyZUZvcldlYlZpZXc6KGlkKXNlbmRlcgogewogICAg
IFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2Vs
ZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCisgICAgX3BhZ2UtPmdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhbdmlld10oY29uc3QgU3RyaW5nJiBzdHJpbmcsIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghc3RyaW5nKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2NCw5ICsyNDY1LDkgQEAgV0VCQ09SRV9DT01NQU5E
X0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiAKICAgICBhdXRvIHR5cGluZ0F0dHJp
YnV0ZXMgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnR5cGluZ0F0dHJp
YnV0ZXM7CiAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgc3ltYm9saWNUcmFpdHMgPSAwOwotICAg
IGlmICh0eXBpbmdBdHRyaWJ1dGVzICYgV2ViS2l0OjpBdHRyaWJ1dGVCb2xkKQorICAgIGlmICh0
eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlQm9sZCkKICAgICAgICAgc3ltYm9saWNUcmFpdHMg
fD0ga0NURm9udEJvbGRUcmFpdDsKLSAgICBpZiAodHlwaW5nQXR0cmlidXRlcyAmIFdlYktpdDo6
QXR0cmlidXRlSXRhbGljcykKKyAgICBpZiAodHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZUl0
YWxpY3MpCiAgICAgICAgIHN5bWJvbGljVHJhaXRzIHw9IGtDVEZvbnRUcmFpdEl0YWxpYzsKIAog
ICAgIC8vIFdlIGNob3NlIGEgcmFuZG9tIGZvbnQgZmFtaWx5IGFuZCBzaXplLgpAQCAtMjQ4MCw3
ICsyNDgxLDcgQEAgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHls
ZSk7CiAgICAgaWYgKGZvbnQpCiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OihpZClmb250Lmdl
dCgpIGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKICAgICAKLSAgICBpZiAodHlwaW5nQXR0
cmlidXRlcyAmIFdlYktpdDo6QXR0cmlidXRlVW5kZXJsaW5lKQorICAgIGlmICh0eXBpbmdBdHRy
aWJ1dGVzICYgQXR0cmlidXRlVW5kZXJsaW5lKQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNV
bmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI1
NzMsMTAgKzI1NzQsMTAgQEAgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0
Y2hTdHlsZSk7CiAgICAgICAgIGlmIChmb2N1c2VkRG9jdW1lbnRPcmlnaW4uaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3Rl
Ym9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107Cisg
ICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0
YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBp
bkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3Rv
bVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luID09
IGZvY3VzZWREb2N1bWVudE9yaWdpbikKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBpZiAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4gPT0gZm9jdXNlZERvY3Vt
ZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIE5POwpAQCAtMjcxMiw3ICsyNzEzLDcgQEAgV0VCQ09SRV9DT01NQU5EX0ZPUl9X
RUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiB7CiAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0
YW50IHNlbGVjdFdvcmRdOwogICAgIC8vIFdlIGNhbm5vdCB1c2Ugc2VsZWN0V29yZCBjb21tYW5k
LCBiZWNhdXNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBzZWxlY3QgdGhlIHdvcmQgZXZlbiB3aGVu
IGl0IGlzIHRoZSBsYXN0IGluIHRoZSBwYXJhZ3JhcGguCi0gICAgX3BhZ2UtPmV4dGVuZFNlbGVj
dGlvbihXZWJDb3JlOjpXb3JkR3JhbnVsYXJpdHkpOworICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rp
b24oV29yZEdyYW51bGFyaXR5KTsKIH0KIAogLSAodm9pZClzZWxlY3RBbGxGb3JXZWJWaWV3Oihp
ZClzZW5kZXIKQEAgLTI3OTIsNyArMjc5Myw3IEBAIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklF
VyhwYXN0ZUFuZE1hdGNoU3R5bGUpOwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVj
dHNFbmNsb3NpbmdTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aEdyYW51bGFy
aXR5OihVSVRleHRHcmFudWxhcml0eSlncmFudWxhcml0eQogewogICAgIFJldGFpblB0cjxXS0Nv
bnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+cmVxdWVzdFJlY3RzRm9yR3JhbnVs
YXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkp
LCBvZmZzZXQgLCBbdmlldywgb2Zmc2V0LCBncmFudWxhcml0eV0oY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0
aFNlbGVjdGlvbk9mZnNldCh0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgb2Zmc2V0
ICwgW3ZpZXcsIG9mZnNldCwgZ3JhbnVsYXJpdHldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
ICAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKFt2aWV3IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX2FjY2Vzc2liaWxpdHlEaWRHZXRTZWxlY3Rpb25SZWN0czp3aXRoR3JhbnVs
YXJpdHk6YXRPZmZzZXQ6KV0pCkBAIC0yODA1LDEwICsyODA2LDEwIEBAIFdFQkNPUkVfQ09NTUFO
RF9GT1JfV0VCVklFVyhwYXN0ZUFuZE1hdGNoU3R5bGUpOwogICAgIFtzZWxmIF9hY2Nlc3NpYmls
aXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0Om9mZnNldCB3aXRoVGV4dDp0ZXh0IGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKLS0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2
ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6KE5TU3Ry
aW5nICopdGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+JiByZWN0cykpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2Fj
Y2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZz
ZXQgd2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
Y29uc3QgVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cykpY29tcGxldGlvbkhhbmRsZXIKIHsK
ICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNlbGY7Ci0gICAgX3BhZ2UtPnJl
cXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBbdmlldywg
b2Zmc2V0LCBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rp
b25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2Ut
PnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBbdmll
dywgb2Zmc2V0LCBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0
cywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoY2FwdHVyZWRDb21w
bGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIoc2Vs
ZWN0aW9uUmVjdHMpOwogCkBAIC0yODMxLDE2MCArMjgzMiwxNjAgQEAgV0VCQ09SRV9DT01NQU5E
X0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiAKIC8vIFVJV0tJbnRlcmFjdGlvblZp
ZXdQcm90b2NvbAogCi1zdGF0aWMgaW5saW5lIFdlYktpdDo6R2VzdHVyZVR5cGUgdG9HZXN0dXJl
VHlwZShVSVdLR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCitzdGF0aWMgaW5saW5lIEdlc3R1cmVU
eXBlIHRvR2VzdHVyZVR5cGUoVUlXS0dlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogewogICAgIHN3
aXRjaCAoZ2VzdHVyZVR5cGUpIHsKICAgICBjYXNlIFVJV0tHZXN0dXJlTG91cGU6Ci0gICAgICAg
IHJldHVybiBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpMb3VwZTsKKyAgICAgICAgcmV0dXJuIEdlc3R1
cmVUeXBlOjpMb3VwZTsKICAgICBjYXNlIFVJV0tHZXN0dXJlT25lRmluZ2VyVGFwOgotICAgICAg
ICByZXR1cm4gV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwOworICAgICAgICByZXR1
cm4gR2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRhcDsKICAgICBjYXNlIFVJV0tHZXN0dXJlVGFwQW5k
QUhhbGY6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRBSGFsZjsK
KyAgICAgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpUYXBBbmRBSGFsZjsKICAgICBjYXNlIFVJV0tH
ZXN0dXJlRG91YmxlVGFwOgotICAgICAgICByZXR1cm4gV2ViS2l0OjpHZXN0dXJlVHlwZTo6RG91
YmxlVGFwOworICAgICAgICByZXR1cm4gR2VzdHVyZVR5cGU6OkRvdWJsZVRhcDsKICAgICBjYXNl
IFVJV0tHZXN0dXJlVGFwQW5kSGFsZjoKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6R2VzdHVyZVR5
cGU6OlRhcEFuZEhhbGY7CisgICAgICAgIHJldHVybiBHZXN0dXJlVHlwZTo6VGFwQW5kSGFsZjsK
ICAgICBjYXNlIFVJV0tHZXN0dXJlRG91YmxlVGFwSW5VbmVkaXRhYmxlOgotICAgICAgICByZXR1
cm4gV2ViS2l0OjpHZXN0dXJlVHlwZTo6RG91YmxlVGFwSW5VbmVkaXRhYmxlOworICAgICAgICBy
ZXR1cm4gR2VzdHVyZVR5cGU6OkRvdWJsZVRhcEluVW5lZGl0YWJsZTsKICAgICBjYXNlIFVJV0tH
ZXN0dXJlT25lRmluZ2VyVGFwSW5VbmVkaXRhYmxlOgotICAgICAgICByZXR1cm4gV2ViS2l0OjpH
ZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwSW5VbmVkaXRhYmxlOworICAgICAgICByZXR1cm4gR2Vz
dHVyZVR5cGU6Ok9uZUZpbmdlclRhcEluVW5lZGl0YWJsZTsKICAgICBjYXNlIFVJV0tHZXN0dXJl
T25lRmluZ2VyVGFwU2VsZWN0c0FsbDoKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6R2VzdHVyZVR5
cGU6Ok9uZUZpbmdlclRhcFNlbGVjdHNBbGw7CisgICAgICAgIHJldHVybiBHZXN0dXJlVHlwZTo6
T25lRmluZ2VyVGFwU2VsZWN0c0FsbDsKICAgICBjYXNlIFVJV0tHZXN0dXJlT25lRmluZ2VyRG91
YmxlVGFwOgotICAgICAgICByZXR1cm4gV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91
YmxlVGFwOworICAgICAgICByZXR1cm4gR2VzdHVyZVR5cGU6Ok9uZUZpbmdlckRvdWJsZVRhcDsK
ICAgICBjYXNlIFVJV0tHZXN0dXJlT25lRmluZ2VyVHJpcGxlVGFwOgotICAgICAgICByZXR1cm4g
V2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVHJpcGxlVGFwOworICAgICAgICByZXR1cm4g
R2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRyaXBsZVRhcDsKICAgICBjYXNlIFVJV0tHZXN0dXJlVHdv
RmluZ2VyU2luZ2xlVGFwOgotICAgICAgICByZXR1cm4gV2ViS2l0OjpHZXN0dXJlVHlwZTo6VHdv
RmluZ2VyU2luZ2xlVGFwOworICAgICAgICByZXR1cm4gR2VzdHVyZVR5cGU6OlR3b0ZpbmdlclNp
bmdsZVRhcDsKICAgICBjYXNlIFVJV0tHZXN0dXJlVHdvRmluZ2VyUmFuZ2VkU2VsZWN0R2VzdHVy
ZToKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6R2VzdHVyZVR5cGU6OlR3b0ZpbmdlclJhbmdlZFNl
bGVjdEdlc3R1cmU7CisgICAgICAgIHJldHVybiBHZXN0dXJlVHlwZTo6VHdvRmluZ2VyUmFuZ2Vk
U2VsZWN0R2VzdHVyZTsKICAgICBjYXNlIFVJV0tHZXN0dXJlVGFwT25MaW5rV2l0aEdlc3R1cmU6
Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBPbkxpbmtXaXRoR2VzdHVy
ZTsKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpUYXBPbkxpbmtXaXRoR2VzdHVyZTsKICAg
ICBjYXNlIFVJV0tHZXN0dXJlTWFrZVdlYlNlbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIFdlYktp
dDo6R2VzdHVyZVR5cGU6Ok1ha2VXZWJTZWxlY3Rpb247CisgICAgICAgIHJldHVybiBHZXN0dXJl
VHlwZTo6TWFrZVdlYlNlbGVjdGlvbjsKICAgICBjYXNlIFVJV0tHZXN0dXJlUGhyYXNlQm91bmRh
cnk6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpQaHJhc2VCb3VuZGFyeTsK
KyAgICAgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpQaHJhc2VCb3VuZGFyeTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R2VzdHVyZVR5cGU6Okxv
dXBlOworICAgIHJldHVybiBHZXN0dXJlVHlwZTo6TG91cGU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
VUlXS0dlc3R1cmVUeXBlIHRvVUlXS0dlc3R1cmVUeXBlKFdlYktpdDo6R2VzdHVyZVR5cGUgZ2Vz
dHVyZVR5cGUpCitzdGF0aWMgaW5saW5lIFVJV0tHZXN0dXJlVHlwZSB0b1VJV0tHZXN0dXJlVHlw
ZShHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKIHsKICAgICBzd2l0Y2ggKGdlc3R1cmVUeXBlKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpMb3VwZToKKyAgICBjYXNlIEdlc3R1cmVU
eXBlOjpMb3VwZToKICAgICAgICAgcmV0dXJuIFVJV0tHZXN0dXJlTG91cGU7Ci0gICAgY2FzZSBX
ZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUYXA6CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6
T25lRmluZ2VyVGFwOgogICAgICAgICByZXR1cm4gVUlXS0dlc3R1cmVPbmVGaW5nZXJUYXA7Ci0g
ICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRBSGFsZjoKKyAgICBjYXNlIEdlc3R1
cmVUeXBlOjpUYXBBbmRBSGFsZjoKICAgICAgICAgcmV0dXJuIFVJV0tHZXN0dXJlVGFwQW5kQUhh
bGY7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpEb3VibGVUYXA6CisgICAgY2FzZSBH
ZXN0dXJlVHlwZTo6RG91YmxlVGFwOgogICAgICAgICByZXR1cm4gVUlXS0dlc3R1cmVEb3VibGVU
YXA7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRIYWxmOgorICAgIGNhc2Ug
R2VzdHVyZVR5cGU6OlRhcEFuZEhhbGY6CiAgICAgICAgIHJldHVybiBVSVdLR2VzdHVyZVRhcEFu
ZEhhbGY7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpEb3VibGVUYXBJblVuZWRpdGFi
bGU6CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6RG91YmxlVGFwSW5VbmVkaXRhYmxlOgogICAgICAg
ICByZXR1cm4gVUlXS0dlc3R1cmVEb3VibGVUYXBJblVuZWRpdGFibGU7Ci0gICAgY2FzZSBXZWJL
aXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUYXBJblVuZWRpdGFibGU6CisgICAgY2FzZSBHZXN0
dXJlVHlwZTo6T25lRmluZ2VyVGFwSW5VbmVkaXRhYmxlOgogICAgICAgICByZXR1cm4gVUlXS0dl
c3R1cmVPbmVGaW5nZXJUYXBJblVuZWRpdGFibGU7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVU
eXBlOjpPbmVGaW5nZXJUYXBTZWxlY3RzQWxsOgorICAgIGNhc2UgR2VzdHVyZVR5cGU6Ok9uZUZp
bmdlclRhcFNlbGVjdHNBbGw6CiAgICAgICAgIHJldHVybiBVSVdLR2VzdHVyZU9uZUZpbmdlclRh
cFNlbGVjdHNBbGw7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJEb3Vi
bGVUYXA6CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91YmxlVGFwOgogICAgICAg
ICByZXR1cm4gVUlXS0dlc3R1cmVPbmVGaW5nZXJEb3VibGVUYXA7Ci0gICAgY2FzZSBXZWJLaXQ6
Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUcmlwbGVUYXA6CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6
T25lRmluZ2VyVHJpcGxlVGFwOgogICAgICAgICByZXR1cm4gVUlXS0dlc3R1cmVPbmVGaW5nZXJU
cmlwbGVUYXA7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUd29GaW5nZXJTaW5nbGVU
YXA6CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6VHdvRmluZ2VyU2luZ2xlVGFwOgogICAgICAgICBy
ZXR1cm4gVUlXS0dlc3R1cmVUd29GaW5nZXJTaW5nbGVUYXA7Ci0gICAgY2FzZSBXZWJLaXQ6Okdl
c3R1cmVUeXBlOjpUd29GaW5nZXJSYW5nZWRTZWxlY3RHZXN0dXJlOgorICAgIGNhc2UgR2VzdHVy
ZVR5cGU6OlR3b0ZpbmdlclJhbmdlZFNlbGVjdEdlc3R1cmU6CiAgICAgICAgIHJldHVybiBVSVdL
R2VzdHVyZVR3b0ZpbmdlclJhbmdlZFNlbGVjdEdlc3R1cmU7Ci0gICAgY2FzZSBXZWJLaXQ6Okdl
c3R1cmVUeXBlOjpUYXBPbkxpbmtXaXRoR2VzdHVyZToKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpU
YXBPbkxpbmtXaXRoR2VzdHVyZToKICAgICAgICAgcmV0dXJuIFVJV0tHZXN0dXJlVGFwT25MaW5r
V2l0aEdlc3R1cmU7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpNYWtlV2ViU2VsZWN0
aW9uOgorICAgIGNhc2UgR2VzdHVyZVR5cGU6Ok1ha2VXZWJTZWxlY3Rpb246CiAgICAgICAgIHJl
dHVybiBVSVdLR2VzdHVyZU1ha2VXZWJTZWxlY3Rpb247Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1
cmVUeXBlOjpQaHJhc2VCb3VuZGFyeToKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpQaHJhc2VCb3Vu
ZGFyeToKICAgICAgICAgcmV0dXJuIFVJV0tHZXN0dXJlUGhyYXNlQm91bmRhcnk7CiAgICAgfQog
fQogCi1zdGF0aWMgaW5saW5lIFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG9TZWxlY3Rpb25Ub3Vj
aChVSVdLU2VsZWN0aW9uVG91Y2ggdG91Y2gpCitzdGF0aWMgaW5saW5lIFNlbGVjdGlvblRvdWNo
IHRvU2VsZWN0aW9uVG91Y2goVUlXS1NlbGVjdGlvblRvdWNoIHRvdWNoKQogewogICAgIHN3aXRj
aCAodG91Y2gpIHsKICAgICBjYXNlIFVJV0tTZWxlY3Rpb25Ub3VjaFN0YXJ0ZWQ6Ci0gICAgICAg
IHJldHVybiBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpTdGFydGVkOworICAgICAgICByZXR1cm4g
U2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQ7CiAgICAgY2FzZSBVSVdLU2VsZWN0aW9uVG91Y2hNb3Zl
ZDoKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6Ok1vdmVkOworICAgICAg
ICByZXR1cm4gU2VsZWN0aW9uVG91Y2g6Ok1vdmVkOwogICAgIGNhc2UgVUlXS1NlbGVjdGlvblRv
dWNoRW5kZWQ6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZDsK
KyAgICAgICAgcmV0dXJuIFNlbGVjdGlvblRvdWNoOjpFbmRlZDsKICAgICBjYXNlIFVJV0tTZWxl
Y3Rpb25Ub3VjaEVuZGVkTW92aW5nRm9yd2FyZDoKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Vs
ZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5nRm9yd2FyZDsKKyAgICAgICAgcmV0dXJuIFNlbGVjdGlv
blRvdWNoOjpFbmRlZE1vdmluZ0ZvcndhcmQ7CiAgICAgY2FzZSBVSVdLU2VsZWN0aW9uVG91Y2hF
bmRlZE1vdmluZ0JhY2t3YXJkOgotICAgICAgICByZXR1cm4gV2ViS2l0OjpTZWxlY3Rpb25Ub3Vj
aDo6RW5kZWRNb3ZpbmdCYWNrd2FyZDsKKyAgICAgICAgcmV0dXJuIFNlbGVjdGlvblRvdWNoOjpF
bmRlZE1vdmluZ0JhY2t3YXJkOwogICAgIGNhc2UgVUlXS1NlbGVjdGlvblRvdWNoRW5kZWROb3RN
b3Zpbmc6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZE5vdE1v
dmluZzsKKyAgICAgICAgcmV0dXJuIFNlbGVjdGlvblRvdWNoOjpFbmRlZE5vdE1vdmluZzsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6U2VsZWN0
aW9uVG91Y2g6OkVuZGVkOworICAgIHJldHVybiBTZWxlY3Rpb25Ub3VjaDo6RW5kZWQ7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgVUlXS1NlbGVjdGlvblRvdWNoIHRvVUlXS1NlbGVjdGlvblRvdWNoKFdl
YktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2gpCitzdGF0aWMgaW5saW5lIFVJV0tTZWxlY3Rpb25U
b3VjaCB0b1VJV0tTZWxlY3Rpb25Ub3VjaChTZWxlY3Rpb25Ub3VjaCB0b3VjaCkKIHsKICAgICBz
d2l0Y2ggKHRvdWNoKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpTdGFydGVk
OgorICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQ6CiAgICAgICAgIHJldHVybiBVSVdL
U2VsZWN0aW9uVG91Y2hTdGFydGVkOwotICAgIGNhc2UgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6
TW92ZWQ6CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6TW92ZWQ6CiAgICAgICAgIHJldHVybiBV
SVdLU2VsZWN0aW9uVG91Y2hNb3ZlZDsKLSAgICBjYXNlIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6
OkVuZGVkOgorICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkOgogICAgICAgICByZXR1cm4g
VUlXS1NlbGVjdGlvblRvdWNoRW5kZWQ7Ci0gICAgY2FzZSBXZWJLaXQ6OlNlbGVjdGlvblRvdWNo
OjpFbmRlZE1vdmluZ0ZvcndhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3Zp
bmdGb3J3YXJkOgogICAgICAgICByZXR1cm4gVUlXS1NlbGVjdGlvblRvdWNoRW5kZWRNb3ZpbmdG
b3J3YXJkOwotICAgIGNhc2UgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdCYWNr
d2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpFbmRlZE1vdmluZ0JhY2t3YXJkOgogICAg
ICAgICByZXR1cm4gVUlXS1NlbGVjdGlvblRvdWNoRW5kZWRNb3ZpbmdCYWNrd2FyZDsKLSAgICBj
YXNlIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVuZGVkTm90TW92aW5nOgorICAgIGNhc2UgU2Vs
ZWN0aW9uVG91Y2g6OkVuZGVkTm90TW92aW5nOgogICAgICAgICByZXR1cm4gVUlXS1NlbGVjdGlv
blRvdWNoRW5kZWROb3RNb3Zpbmc7CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIFdlYktpdDo6
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoVUlHZXN0dXJl
UmVjb2duaXplclN0YXRlIHN0YXRlKQorc3RhdGljIGlubGluZSBHZXN0dXJlUmVjb2duaXplclN0
YXRlIHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgc3Rh
dGUpCiB7CiAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlUG9zc2libGU6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVy
U3RhdGU6OlBvc3NpYmxlOworICAgICAgICByZXR1cm4gR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6
UG9zc2libGU7CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbjoKLSAgICAg
ICAgcmV0dXJuIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6QmVnYW47CisgICAgICAg
IHJldHVybiBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpCZWdhbjsKICAgICBjYXNlIFVJR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyU3RhdGU6OkNoYW5nZWQ7CisgICAgICAgIHJldHVybiBHZXN0dXJlUmVjb2duaXpl
clN0YXRlOjpDaGFuZ2VkOwogICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2Vs
bGVkOgotICAgICAgICByZXR1cm4gV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDYW5j
ZWxsZWQ7CisgICAgICAgIHJldHVybiBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDYW5jZWxsZWQ7
CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKLSAgICAgICAgcmV0dXJu
IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6RW5kZWQ7CisgICAgICAgIHJldHVybiBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUZhaWxlZDoKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6RmFpbGVkOworICAgICAgICByZXR1cm4gR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6RmFp
bGVkOwogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUg
dG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRl
IHN0YXRlKQorc3RhdGljIGlubGluZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgdG9VSUdlc3R1
cmVSZWNvZ25pemVyU3RhdGUoR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBzdGF0ZSkKIHsKICAgICBz
d2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6
OlBvc3NpYmxlOgorICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2libGU6CiAg
ICAgICAgIHJldHVybiBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVQb3NzaWJsZTsKLSAgICBjYXNl
IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6QmVnYW46CisgICAgY2FzZSBHZXN0dXJl
UmVjb2duaXplclN0YXRlOjpCZWdhbjoKICAgICAgICAgcmV0dXJuIFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUJlZ2FuOwotICAgIGNhc2UgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpD
aGFuZ2VkOgorICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2hhbmdlZDoKICAgICAg
ICAgcmV0dXJuIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7Ci0gICAgY2FzZSBXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkNhbmNlbGxlZDoKKyAgICBjYXNlIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGU6OkNhbmNlbGxlZDoKICAgICAgICAgcmV0dXJuIFVJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZUNhbmNlbGxlZDsKLSAgICBjYXNlIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6RW5kZWQ6CisgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoKICAg
ICAgICAgcmV0dXJuIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOwotICAgIGNhc2UgV2Vi
S2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQ6CisgICAgY2FzZSBHZXN0dXJlUmVj
b2duaXplclN0YXRlOjpGYWlsZWQ6CiAgICAgICAgIHJldHVybiBVSUdlc3R1cmVSZWNvZ25pemVy
U3RhdGVGYWlsZWQ7CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIFVJV0tTZWxlY3Rpb25GbGFn
cyB0b1VJV0tTZWxlY3Rpb25GbGFncyhXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzIGZsYWdzKQorc3Rh
dGljIGlubGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLU2VsZWN0aW9uRmxhZ3MoU2VsZWN0
aW9uRmxhZ3MgZmxhZ3MpCiB7CiAgICAgTlNJbnRlZ2VyIHVpRmxhZ3MgPSBVSVdLTm9uZTsKLSAg
ICBpZiAoZmxhZ3MgJiBXZWJLaXQ6OldvcmRJc05lYXJUYXApCisgICAgaWYgKGZsYWdzICYgV29y
ZElzTmVhclRhcCkKICAgICAgICAgdWlGbGFncyB8PSBVSVdLV29yZElzTmVhclRhcDsKLSAgICBp
ZiAoZmxhZ3MgJiBXZWJLaXQ6OlBocmFzZUJvdW5kYXJ5Q2hhbmdlZCkKKyAgICBpZiAoZmxhZ3Mg
JiBQaHJhc2VCb3VuZGFyeUNoYW5nZWQpCiAgICAgICAgIHVpRmxhZ3MgfD0gVUlXS1BocmFzZUJv
dW5kYXJ5Q2hhbmdlZDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxVSVdLU2VsZWN0aW9uRmxh
Z3M+KHVpRmxhZ3MpOwpAQCAtMjk5NCwxNyArMjk5NSwxNyBAQCBzdGF0aWMgaW5saW5lIFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSB0b1dLVGV4dEdyYW51bGFyaXR5KFVJVGV4dEdyYW51bGFyaXR5
IGdyYQogewogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBjYXNlIFVJVGV4dEdyYW51
bGFyaXR5Q2hhcmFjdGVyOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHk7CisgICAgICAgIHJldHVybiBDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBjYXNlIFVJ
VGV4dEdyYW51bGFyaXR5V29yZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldvcmRHcmFudWxh
cml0eTsKKyAgICAgICAgcmV0dXJuIFdvcmRHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdy
YW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTZW50ZW5jZUdyYW51
bGFyaXR5OworICAgICAgICByZXR1cm4gU2VudGVuY2VHcmFudWxhcml0eTsKICAgICBjYXNlIFVJ
VGV4dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAg
ICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okxp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIExpbmVHcmFudWxhcml0eTsKICAgICBjYXNl
IFVJVGV4dEdyYW51bGFyaXR5RG9jdW1lbnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEb2N1
bWVudEdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4gRG9jdW1lbnRHcmFudWxhcml0eTsKICAg
ICB9CiB9CiAKQEAgLTMwMTMsMTQgKzMwMTQsMTQgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb24gdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihVSVRleHREaXJlY3Rpb24K
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9u
RG93bjoKICAgICBjYXNlIFVJVGV4dExheW91dERpcmVjdGlvblJpZ2h0OgotICAgICAgICByZXR1
cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmlnaHQ7CisgICAgICAgIHJldHVybiBEaXJlY3Rpb25SaWdo
dDsKICAgICBjYXNlIFVJVGV4dExheW91dERpcmVjdGlvblVwOgogICAgIGNhc2UgVUlUZXh0TGF5
b3V0RGlyZWN0aW9uTGVmdDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvbkxlZnQ7
CisgICAgICAgIHJldHVybiBEaXJlY3Rpb25MZWZ0OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8v
IFVJVGV4dERpcmVjdGlvbiBpcyBub3QgYW4gZW51bSwgYnV0IHdlIG9ubHkgd2FudCB0byBhY2Nl
cHQgdmFsdWVzIGZyb20gVUlUZXh0TGF5b3V0RGlyZWN0aW9uLgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvblJpZ2h0OworICAg
ICAgICByZXR1cm4gRGlyZWN0aW9uUmlnaHQ7CiAgICAgfQogfQogCkBAIC0zMDMwLDcgKzMwMzEs
NyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoV0tDb250ZW50Vmll
dyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Np
c3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdlZFdpdGhH
ZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6dG9VSVdLR2VzdHVyZVR5cGUoKFdl
YktpdDo6R2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUpIHdpdGhTdGF0ZTp0b1VJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU+KGdl
c3R1cmVTdGF0ZSkpIHdpdGhGbGFnczoodG9VSVdLU2VsZWN0aW9uRmxhZ3MoKFdlYktpdDo6U2Vs
ZWN0aW9uRmxhZ3MpZmxhZ3MpKV07CisgICAgWyhVSVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50
ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVy
ZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRvVUlXS0dlc3R1cmVUeXBlKChHZXN0dXJl
VHlwZSlnZXN0dXJlVHlwZSkgd2l0aFN0YXRlOnRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKHN0
YXRpY19jYXN0PEdlc3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkpIHdpdGhGbGFn
czoodG9VSVdLU2VsZWN0aW9uRmxhZ3MoKFNlbGVjdGlvbkZsYWdzKWZsYWdzKSldOwogfQogCiBz
dGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90
IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCkBAIC0zMDM5LDcgKzMw
NDAsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZp
ZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbKFVJV0tUZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdlZFdp
dGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0b1VJV0tTZWxlY3Rp
b25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0aEZsYWdzOnN0YXRpY19j
YXN0PFVJV0tTZWxlY3Rpb25GbGFncz4oZmxhZ3MpXTsKKyAgICBbKFVJV0tUZXh0SW50ZXJhY3Rp
b25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdl
ZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0b1VJV0tTZWxl
Y3Rpb25Ub3VjaCgoU2VsZWN0aW9uVG91Y2gpdG91Y2gpIHdpdGhGbGFnczpzdGF0aWNfY2FzdDxV
SVdLU2VsZWN0aW9uRmxhZ3M+KGZsYWdzKV07CiB9CiAKIC0gKEJPT0wpX2lzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlCkBAIC0zMDU1LDcgKzMwNTYsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaQogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50
IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGUgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3Mp
ZmxhZ3MKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdl
LT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIFdlYkNvcmU6OkNo
YXJhY3RlckdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShn
ZXN0dXJlVHlwZSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0
YXRlKHN0YXRlKSksIFtzZWxmIF9pc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZV0sIFtzZWxm
LCBzdGF0ZSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgaW5uZXJGbGFncywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPnNlbGVjdFdp
dGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSksIHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoc3RhdGUpKSwgW3NlbGYg
X2lzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlXSwgW3NlbGYsIHN0YXRlLCBmbGFnc10oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNl
bGYsIHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncyB8IGlubmVyRmxhZ3Ms
IGVycm9yKTsKICAgICAgICAgaWYgKHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVu
ZGVkIHx8IHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKICAgICAg
ICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKQEAgLTMwOTQsNyArMzA5NSw3
IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAq
dmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAgfSk7CiB9CiAKLS0gKGNvbnN0IFdlYktp
dDo6V0tBdXRvQ29ycmVjdGlvbkRhdGEmKWF1dG9jb3JyZWN0aW9uRGF0YQorLSAoY29uc3QgV0tB
dXRvQ29ycmVjdGlvbkRhdGEmKWF1dG9jb3JyZWN0aW9uRGF0YQogewogICAgIHJldHVybiBfYXV0
b2NvcnJlY3Rpb25EYXRhOwogfQpAQCAtMzEwOSw3ICszMTEwLDcgQEAgc3RhdGljIHZvaWQgc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2kKIAogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKICAg
ICBfYXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9jb3JyZWN0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XTsKLSAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShpbnB1
dCwgW3ZpZXddKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50NjRfdCB0cmFpdHMsIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJlY3Rp
b25EYXRhKGlucHV0LCBbdmlld10oY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIENHUmVjdCBmaXJzdFJlY3QgPSBD
R1JlY3RaZXJvOwogICAgICAgICBDR1JlY3QgbGFzdFJlY3QgPSBDR1JlY3RaZXJvOwogICAgICAg
ICBpZiAocmVjdHMuc2l6ZSgpKSB7CkBAIC0zMzQ5LDcgKzMzNTAsNyBAQCBzdGF0aWMgdm9pZCBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNv
cmU6OkludFBvaQogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShj
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBz
ZWxmOwogICAgIF9wYWdlLT5zZXRJbml0aWFsRm9jdXMoc2VsZWN0aW5nRm9yd2FyZCwgZmFsc2Us
IFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCgpLCBbdmlldywgY29tcGxldGlvbkhhbmRsZXJDb3B5
XShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgQk9PTCBkaWRCZWNvbWVG
aXJzdFJlc3BvbmRlciA9IHZpZXctPl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlw
ZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZSAmJiBbdmlldyBiZWNvbWVGaXJzdFJlc3BvbmRl
cl07CisgICAgICAgIEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIgPSB2aWV3LT5fYXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgIT0gSW5wdXRUeXBlOjpOb25lICYmIFt2aWV3
IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KGRp
ZEJlY29tZUZpcnN0UmVzcG9uZGVyKTsKICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9u
SGFuZGxlckNvcHkpOwogICAgIH0pOwpAQCAtMzQwMCwxMCArMzQwMSwxMCBAQCBzdGF0aWMgdm9p
ZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdl
YkNvcmU6OkludFBvaQogICAgICAgICBbX2Zvcm1BY2Nlc3NvcnlWaWV3IHNldENsZWFyVmlzaWJs
ZTpOT107CiAgICAgZWxzZSB7CiAgICAgICAgIHN3aXRjaCAoX2Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmVsZW1lbnRUeXBlKSB7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6
Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgotICAgICAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpUaW1lOgorICAgICAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKKyAgICAgICAgY2Fz
ZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2Nh
bDoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgICAgICBbX2Zvcm1BY2Nl
c3NvcnlWaWV3IHNldENsZWFyVmlzaWJsZTpZRVNdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC0zNDY5LDggKzM0NzAsOCBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25D
aGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBv
aQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIGF1dG8mIHBvc3RMYXlvdXRFZGl0b3JT
dGF0ZURhdGEgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpOwotICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCBzdGFydFJlY3QgPSBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhLmNh
cmV0UmVjdEF0U3RhcnQ7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGVuZFJlY3QgPSBwb3N0TGF5
b3V0RWRpdG9yU3RhdGVEYXRhLmNhcmV0UmVjdEF0RW5kOworICAgIEZsb2F0UmVjdCBzdGFydFJl
Y3QgPSBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CisgICAgRmxv
YXRSZWN0IGVuZFJlY3QgPSBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhLmNhcmV0UmVjdEF0RW5k
OwogICAgIGRvdWJsZSBpbnZlcnNlU2NhbGUgPSBbc2VsZiBpbnZlcnNlU2NhbGVdOwogICAgIC8v
IFdlIHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgY2FyZXQgd2lkdGgsIHdoaWxlIHRoZSBoZWln
aHQgc2NhbGVzIHdpdGgKICAgICAvLyB0aGUgY29udGVudCB0YWtpbmcgb3JpZW50YXRpb24gaW50
byBhY2NvdW50LgpAQCAtMzU0OSw3ICszNTUwLDcgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hh
bmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kK
IC0gKHZvaWQpc2V0TWFya2VkVGV4dDooTlNTdHJpbmcgKiltYXJrZWRUZXh0IHNlbGVjdGVkUmFu
Z2U6KE5TUmFuZ2Upc2VsZWN0ZWRSYW5nZQogewogICAgIF9tYXJrZWRUZXh0ID0gbWFya2VkVGV4
dDsKLSAgICBfcGFnZS0+c2V0Q29tcG9zaXRpb25Bc3luYyhtYXJrZWRUZXh0LCBWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+KCksIHNlbGVjdGVkUmFuZ2UsIFdlYktpdDo6RWRp
dGluZ1JhbmdlKCkpOworICAgIF9wYWdlLT5zZXRDb21wb3NpdGlvbkFzeW5jKG1hcmtlZFRleHQs
IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4oKSwgc2VsZWN0ZWRSYW5nZSwg
RWRpdGluZ1JhbmdlKCkpOwogfQogCiAtICh2b2lkKXVubWFya1RleHQKQEAgLTM2MTMsMTggKzM2
MTQsMTggQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRW
aWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKICAgICByZXR1cm4gTlNXcml0aW5nRGly
ZWN0aW9uTGVmdFRvUmlnaHQ7CiB9CiAKLXN0YXRpYyBXZWJLaXQ6OldyaXRpbmdEaXJlY3Rpb24g
Y29yZVdyaXRpbmdEaXJlY3Rpb24oTlNXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRp
YyBXcml0aW5nRGlyZWN0aW9uIGNvcmVXcml0aW5nRGlyZWN0aW9uKE5TV3JpdGluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIE5TV3Jp
dGluZ0RpcmVjdGlvbk5hdHVyYWw6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpXcml0aW5nRGly
ZWN0aW9uOjpOYXR1cmFsOworICAgICAgICByZXR1cm4gV3JpdGluZ0RpcmVjdGlvbjo6TmF0dXJh
bDsKICAgICBjYXNlIE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0OgotICAgICAgICByZXR1
cm4gV2ViQ29yZTo6V3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQ7CisgICAgICAgIHJldHVy
biBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDsKICAgICBjYXNlIE5TV3JpdGluZ0RpcmVj
dGlvblJpZ2h0VG9MZWZ0OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V3JpdGluZ0RpcmVjdGlv
bjo6UmlnaHRUb0xlZnQ7CisgICAgICAgIHJldHVybiBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRv
TGVmdDsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OldyaXRpbmdEaXJlY3Rpb246Ok5hdHVyYWw7CisgICAgICAgIHJl
dHVybiBXcml0aW5nRGlyZWN0aW9uOjpOYXR1cmFsOwogICAgIH0KIH0KIApAQCAtMzY0Niw3ICsz
NjQ3LDcgQEAgc3RhdGljIFdlYktpdDo6V3JpdGluZ0RpcmVjdGlvbiBjb3JlV3JpdGluZ0RpcmVj
dGlvbihOU1dyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW8KIC0gKFVJVGV4dFBvc2l0aW9uICopY2xv
c2VzdFBvc2l0aW9uVG9Qb2ludDooQ0dQb2ludClwb2ludAogewogI2lmIFBMQVRGT1JNKElPU01B
QykKLSAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QoV2Vi
Q29yZTo6cm91bmRlZEludFBvaW50KHBvaW50KSk7CisgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKICAgICBbc2VsZiByZXF1
ZXN0QXN5bmNocm9ub3VzUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpyZXF1ZXN0XTsKICAgICBp
ZiAoW3NlbGYgX2N1cnJlbnRQb3NpdGlvbkluZm9ybWF0aW9uSXNBcHByb3hpbWF0ZWx5VmFsaWRG
b3JSZXF1ZXN0OnJlcXVlc3RdICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzU2VsZWN0YWJsZSkK
ICAgICAgICAgcmV0dXJuIFtXS1RleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25XaXRoUmVjdDpfcG9z
aXRpb25JbmZvcm1hdGlvbi5jYXJldFJlY3RdOwpAQCAtMzY3Miw3ICszNjczLDcgQEAgc3RhdGlj
IFdlYktpdDo6V3JpdGluZ0RpcmVjdGlvbiBjb3JlV3JpdGluZ0RpcmVjdGlvbihOU1dyaXRpbmdE
aXJlY3Rpb24gZGlyZWN0aW8KIC8vIEluc2VydHMgdGhlIGdpdmVuIHN0cmluZywgcmVwbGFjaW5n
IGFueSBzZWxlY3RlZCBvciBtYXJrZWQgdGV4dC4KIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJp
bmcgKilhU3RyaW5nVmFsdWUKIHsKLSAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdW
YWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSk7CisgICAgX3BhZ2UtPmluc2VydFRleHRBc3lu
YyhhU3RyaW5nVmFsdWUsIEVkaXRpbmdSYW5nZSgpKTsKIH0KIAogLSAoQk9PTCloYXNUZXh0CkBA
IC0zNzkyLDEzICszNzkzLDEzIEBAIHN0YXRpYyBOU1N0cmluZyAqY29udGVudFR5cGVGcm9tRmll
bGROYW1lKFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lIGZpZWxkTmFtZSkKICAgICBpZiAoIV90
cmFpdHMpCiAgICAgICAgIF90cmFpdHMgPSBhZG9wdE5TKFtbVUlUZXh0SW5wdXRUcmFpdHMgYWxs
b2NdIGluaXRdKTsKIAotICAgIFtfdHJhaXRzIHNldFNlY3VyZVRleHRFbnRyeTpfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3Jk
IHx8IFtfZm9ybUlucHV0U2Vzc2lvbiBmb3JjZVNlY3VyZVRleHRFbnRyeV1dOwotICAgIFtfdHJh
aXRzIHNldFNob3J0Y3V0Q29udmVyc2lvblR5cGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZCA/IFVJVGV4dFNob3J0Y3V0
Q29udmVyc2lvblR5cGVObyA6IFVJVGV4dFNob3J0Y3V0Q29udmVyc2lvblR5cGVEZWZhdWx0XTsK
KyAgICBbX3RyYWl0cyBzZXRTZWN1cmVUZXh0RW50cnk6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6UGFzc3dvcmQgfHwgW19mb3JtSW5wdXRTZXNzaW9u
IGZvcmNlU2VjdXJlVGV4dEVudHJ5XV07CisgICAgW190cmFpdHMgc2V0U2hvcnRjdXRDb252ZXJz
aW9uVHlwZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBl
OjpQYXNzd29yZCA/IFVJVGV4dFNob3J0Y3V0Q29udmVyc2lvblR5cGVObyA6IFVJVGV4dFNob3J0
Y3V0Q29udmVyc2lvblR5cGVEZWZhdWx0XTsKIAogICAgIGlmICghX2Fzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLmZvcm1BY3Rpb24uaXNFbXB0eSgpKQotICAgICAgICBbX3RyYWl0cyBzZXRSZXR1cm5L
ZXlUeXBlOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJ
bnB1dFR5cGU6OlNlYXJjaCkgPyBVSVJldHVybktleVNlYXJjaCA6IFVJUmV0dXJuS2V5R29dOwor
ICAgICAgICBbX3RyYWl0cyBzZXRSZXR1cm5LZXlUeXBlOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpTZWFyY2gpID8gVUlSZXR1cm5LZXlTZWFyY2gg
OiBVSVJldHVybktleUdvXTsKIAotICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxl
bWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkIHx8IF9hc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6RW1haWwgfHwgX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpV
UkwgfHwgX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmZvcm1BY3Rpb24uY29udGFpbnMoImxvZ2lu
IikpIHsKKyAgICBpZiAoX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElu
cHV0VHlwZTo6UGFzc3dvcmQgfHwgX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
ID09IElucHV0VHlwZTo6RW1haWwgfHwgX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRU
eXBlID09IElucHV0VHlwZTo6VVJMIHx8IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5mb3JtQWN0
aW9uLmNvbnRhaW5zKCJsb2dpbiIpKSB7CiAgICAgICAgIFtfdHJhaXRzIHNldEF1dG9jYXBpdGFs
aXphdGlvblR5cGU6VUlUZXh0QXV0b2NhcGl0YWxpemF0aW9uVHlwZU5vbmVdOwogICAgICAgICBb
X3RyYWl0cyBzZXRBdXRvY29ycmVjdGlvblR5cGU6VUlUZXh0QXV0b2NvcnJlY3Rpb25UeXBlTm9d
OwogICAgIH0gZWxzZSB7CkBAIC0zODA3LDY0ICszODA4LDY0IEBAIHN0YXRpYyBOU1N0cmluZyAq
Y29udGVudFR5cGVGcm9tRmllbGROYW1lKFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lIGZpZWxk
TmFtZSkKICAgICB9CiAKICAgICBzd2l0Y2ggKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pbnB1
dE1vZGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6VW5zcGVjaWZpZWQ6CisgICAg
Y2FzZSBJbnB1dE1vZGU6OlVuc3BlY2lmaWVkOgogICAgICAgICBzd2l0Y2ggKF9hc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewotICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpQaG9uZToKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OlBob25lOgogICAgICAgICAgICAg
W190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5Ym9hcmRUeXBlUGhvbmVQYWRdOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlVSTDoKKyAgICAg
ICAgY2FzZSBJbnB1dFR5cGU6OlVSTDoKICAgICAgICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJk
VHlwZTpVSUtleWJvYXJkVHlwZVVSTF07CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6RW1haWw6CisgICAgICAgIGNhc2UgSW5wdXRUeXBlOjpFbWFp
bDoKICAgICAgICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlwZUVt
YWlsQWRkcmVzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6TnVtYmVyOgorICAgICAgICBjYXNlIElucHV0VHlwZTo6TnVtYmVyOgogICAgICAg
ICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5Ym9hcmRUeXBlTnVtYmVyc0FuZFB1
bmN0dWF0aW9uXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpOdW1iZXJQYWQ6CisgICAgICAgIGNhc2UgSW5wdXRUeXBlOjpOdW1iZXJQYWQ6CiAg
ICAgICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVOdW1iZXJQ
YWRdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
Ok5vbmU6Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToK
LSAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKLSAgICAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ6Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OlRleHRBcmVhOgotICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWFyY2g6Ci0gICAg
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkRhdGVUaW1lOgotICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRl
VGltZUxvY2FsOgotICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKLSAgICAgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6VGltZToKLSAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0Ogot
ICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgorICAgICAgICBjYXNlIElu
cHV0VHlwZTo6Tm9uZToKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToK
KyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OlRleHQ6CisgICAgICAgIGNhc2UgSW5wdXRUeXBlOjpQ
YXNzd29yZDoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OlRleHRBcmVhOgorICAgICAgICBjYXNl
IElucHV0VHlwZTo6U2VhcmNoOgorICAgICAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKKyAgICAg
ICAgY2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lOgorICAgICAgICBjYXNlIElucHV0VHlwZTo6RGF0
ZVRpbWVMb2NhbDoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBjYXNl
IElucHV0VHlwZTo6V2VlazoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CisgICAgICAg
IGNhc2UgSW5wdXRUeXBlOjpTZWxlY3Q6CisgICAgICAgIGNhc2UgSW5wdXRUeXBlOjpEcmF3aW5n
OgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpDb2xvcjoKKyAgICAgICAgY2FzZSBJbnB1dFR5cGU6OkNvbG9yOgogI2VuZGlmCiAg
ICAgICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVEZWZhdWx0
XTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9k
ZTo6Tm9uZToKKyAgICBjYXNlIElucHV0TW9kZTo6Tm9uZToKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlRleHQ6CisgICAgY2FzZSBJbnB1dE1vZGU6OlRleHQ6
CiAgICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlwZURlZmF1bHRd
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6VGVsZXBob25l
OgorICAgIGNhc2UgSW5wdXRNb2RlOjpUZWxlcGhvbmU6CiAgICAgICAgIFtfdHJhaXRzIHNldEtl
eWJvYXJkVHlwZTpVSUtleWJvYXJkVHlwZVBob25lUGFkXTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlVybDoKKyAgICBjYXNlIElucHV0TW9kZTo6VXJsOgog
ICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVVUkxdOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6RW1haWw6CisgICAgY2Fz
ZSBJbnB1dE1vZGU6OkVtYWlsOgogICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlL
ZXlib2FyZFR5cGVFbWFpbEFkZHJlc3NdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNv
cmU6OklucHV0TW9kZTo6TnVtZXJpYzoKKyAgICBjYXNlIElucHV0TW9kZTo6TnVtZXJpYzoKICAg
ICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5Ym9hcmRUeXBlTnVtYmVyc0FuZFB1
bmN0dWF0aW9uXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6
OkRlY2ltYWw6CisgICAgY2FzZSBJbnB1dE1vZGU6OkRlY2ltYWw6CiAgICAgICAgIFtfdHJhaXRz
IHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlwZURlY2ltYWxQYWRdOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6U2VhcmNoOgorICAgIGNhc2UgSW5wdXRN
b2RlOjpTZWFyY2g6CiAgICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJk
VHlwZVdlYlNlYXJjaF07CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM5NTgsMTMgKzM5NTks
MTMgQEAgc3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZyb21GaWVsZE5hbWUoV2ViQ29yZTo6
QXV0b2ZpbGxGaWVsZE5hbWUgZmllbGROYW1lKQogCiAtICh2b2lkKWhhbmRsZUtleVdlYkV2ZW50
Oig6OldlYkV2ZW50ICopdGhlRXZlbnQKIHsKLSAgICBfcGFnZS0+aGFuZGxlS2V5Ym9hcmRFdmVu
dChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhlRXZlbnQpKTsKKyAgICBfcGFnZS0+
aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHRoZUV2ZW50KSk7CiB9
CiAKIC0gKHZvaWQpaGFuZGxlS2V5V2ViRXZlbnQ6KDo6V2ViRXZlbnQgKil0aGVFdmVudCB3aXRo
Q29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKDo6V2ViRXZlbnQgKnRoZUV2ZW50LCBCT09MIHdh
c0hhbmRsZWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX2tleVdlYkV2ZW50SGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgX3BhZ2UtPmhhbmRsZUtleWJv
YXJkRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHRoZUV2ZW50KSk7CisgICAg
X3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCh0aGVFdmVu
dCkpOwogfQogCiAtICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50
IGV2ZW50V2FzSGFuZGxlZDooQk9PTClldmVudFdhc0hhbmRsZWQKQEAgLTQwNjgsMjAgKzQwNjks
MjAgQEAgc3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZyb21GaWVsZE5hbWUoV2ViQ29yZTo6
QXV0b2ZpbGxGaWVsZE5hbWUgZmllbGROYW1lKQogICAgIGlmIChfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5pc0NvbnRlbnRFZGl0YWJsZSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgaWYgKF9hc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6U2Vs
ZWN0KQorICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5w
dXRUeXBlOjpTZWxlY3QpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIHJldHVybiBZRVM7CiB9
CiAKLS0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpT
Y3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50CistIChDR0Zsb2F0KWtleWJvYXJkU2Nyb2xsVmll
d0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3IgZGlzdGFu
Y2VGb3JJbmNyZW1lbnQ6KFNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQKIHsKICAgICBzd2l0
Y2ggKGluY3JlbWVudCkgewotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRv
Y3VtZW50OgorICAgIGNhc2UgU2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKICAgICAgICAg
cmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0OnNlbGYuYm91bmRzIHRvVmlldzpfd2ViVmlld10uc2l6
ZS5oZWlnaHQ7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZToKKyAg
ICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6UGFnZToKICAgICAgICAgcmV0dXJuIFtzZWxmIGNv
bnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWdlU3RlcChfcGFn
ZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCksIHNlbGYuYm91bmRzLnNpemUuaGVp
Z2h0KSkgdG9WaWV3Ol93ZWJWaWV3XS5oZWlnaHQ7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGlu
Z0luY3JlbWVudDo6TGluZToKKyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6TGluZToKICAg
ICAgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKSB0b1ZpZXc6X3dlYlZpZXddLmhlaWdodDsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MzM3LDEyICs0MzM4LDEyIEBAIHN0
YXRpYyBOU1N0cmluZyAqY29udGVudFR5cGVGcm9tRmllbGROYW1lKFdlYkNvcmU6OkF1dG9maWxs
RmllbGROYW1lIGZpZWxkTmFtZSkKICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgZGVhY3Rp
dmF0ZVNlbGVjdGlvbl07CiB9CiAKLS0gKGNvbnN0IFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24mKWFzc2lzdGVkTm9kZUluZm9ybWF0aW9uCistIChjb25zdCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiYpYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24KIHsKICAgICByZXR1cm4gX2Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uOwogfQogCi0tIChWZWN0b3I8V2ViS2l0OjpPcHRpb25JdGVtPiYpYXNz
aXN0ZWROb2RlU2VsZWN0T3B0aW9ucworLSAoVmVjdG9yPE9wdGlvbkl0ZW0+Jilhc3Npc3RlZE5v
ZGVTZWxlY3RPcHRpb25zCiB7CiAgICAgcmV0dXJuIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5z
ZWxlY3RPcHRpb25zOwogfQpAQCAtNDM1MywzMyArNDM1NCwzMyBAQCBzdGF0aWMgTlNTdHJpbmcg
KmNvbnRlbnRUeXBlRnJvbUZpZWxkTmFtZShXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBmaWVs
ZE5hbWUpCiAgICAgcmV0dXJuIF9mb3JtQWNjZXNzb3J5Vmlldy5nZXQoKTsKIH0KIAotc3RhdGlj
IGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCitzdGF0
aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxl
OgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHQ6Ci0gICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6UGFzc3dvcmQ6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dEFyZWE6
Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNoOgotICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkVtYWlsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlVSTDoKLSAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQaG9uZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpOdW1iZXI6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgotICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RGF0ZVRpbWU6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKLSAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpXZWVrOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6Ci0gICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRy
YXdpbmc6CisgICAgY2FzZSBJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKKyAgICBjYXNlIElu
cHV0VHlwZTo6VGV4dDoKKyAgICBjYXNlIElucHV0VHlwZTo6UGFzc3dvcmQ6CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlRleHRBcmVhOgorICAgIGNhc2UgSW5wdXRUeXBlOjpTZWFyY2g6CisgICAgY2Fz
ZSBJbnB1dFR5cGU6OkVtYWlsOgorICAgIGNhc2UgSW5wdXRUeXBlOjpVUkw6CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlBob25lOgorICAgIGNhc2UgSW5wdXRUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJ
bnB1dFR5cGU6Ok51bWJlclBhZDoKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKKyAgICBjYXNl
IElucHV0VHlwZTo6RGF0ZVRpbWU6CisgICAgY2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6
CisgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgIGNhc2UgSW5wdXRUeXBlOjpXZWVrOgor
ICAgIGNhc2UgSW5wdXRUeXBlOjpUaW1lOgorICAgIGNhc2UgSW5wdXRUeXBlOjpTZWxlY3Q6Cisg
ICAgY2FzZSBJbnB1dFR5cGU6OkRyYXdpbmc6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CisgICAgY2FzZSBJbnB1dFR5cGU6
OkNvbG9yOgogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6Tm9uZToKKyAgICBjYXNlIElucHV0VHlwZTo6Tm9uZToKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM4Nyw3ICs0Mzg4LDcgQEAgc3RhdGljIGJvb2wgaXNB
c3Npc3RhYmxlSW5wdXRUeXBlKFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi0tICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09M
KXVzZXJJc0ludGVyYWN0aW5nIGJsdXJQcmV2aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9k
ZSBjaGFuZ2luZ0FjdGl2aXR5U3RhdGU6KEJPT0wpY2hhbmdpbmdBY3Rpdml0eVN0YXRlIHVzZXJP
YmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1c2VyT2JqZWN0CistICh2b2lkKV9z
dGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1h
dGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVyUHJldmlv
dXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgY2hhbmdpbmdBY3Rpdml0eVN0YXRlOihCT09M
KWNoYW5naW5nQWN0aXZpdHlTdGF0ZSB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rp
bmc+ICopdXNlck9iamVjdAogewogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzQ2hhbmdpbmdGb2N1
c0ZvclNjb3BlIHsgX2lzQ2hhbmdpbmdGb2N1cywgaGFzQXNzaXN0ZWROb2RlKF9hc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbikgfTsKICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBudWxscHRy
OwpAQCAtNDQwOSw5ICs0NDEwLDkgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBl
KFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgICAgIHN0YXJ0SW5wdXRTZXNzaW9uUG9saWN5
ID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yRm9jdXNl
ZEVsZW1lbnQ6Zm9jdXNlZEVsZW1lbnRJbmZvLmdldCgpXTsKIAogICAgIGlmIChpbmZvcm1hdGlv
bi5lbGVtZW50SXNUcmFuc3BhcmVudCkKLSAgICAgICAgW3NlbGYgX2JlZ2luU3VwcHJlc3NpbmdT
ZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2ViS2l0OjpGb2N1c2VkRWxlbWVudElzVHJhbnNw
YXJlbnRdOworICAgICAgICBbc2VsZiBfYmVnaW5TdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFu
dEZvclJlYXNvbjpGb2N1c2VkRWxlbWVudElzVHJhbnNwYXJlbnRdOwogICAgIGVsc2UKLSAgICAg
ICAgW3NlbGYgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJL
aXQ6OkZvY3VzZWRFbGVtZW50SXNUcmFuc3BhcmVudF07CisgICAgICAgIFtzZWxmIF9zdG9wU3Vw
cHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246Rm9jdXNlZEVsZW1lbnRJc1RyYW5z
cGFyZW50XTsKIAogICAgIHN3aXRjaCAoc3RhcnRJbnB1dFNlc3Npb25Qb2xpY3kpIHsKICAgICBj
YXNlIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QXV0bzoKQEAgLTQ0ODcsMTMgKzQ0
ODgsMTMgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKFdlYktpdDo6SW5wdXRU
eXBlIHR5cGUpCiAjZW5kaWYKICAgICAKICAgICBzd2l0Y2ggKGluZm9ybWF0aW9uLmVsZW1lbnRU
eXBlKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgotICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6VGltZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgIGNhc2UgSW5wdXRUeXBlOjpTZWxlY3Q6CisgICAg
Y2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6
CisgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkNvbG9yOgorICAgIGNhc2UgSW5wdXRUeXBlOjpDb2xvcjoKICNlbmRpZgogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpAQCAtNDUzNSw3ICs0NTM2LDcgQEAgc3RhdGljIGJvb2wgaXNBc3Np
c3RhYmxlSW5wdXRUeXBlKFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAKICAgICBCT09MIGVkaXRh
YmxlQ2hhbmdlZCA9IFtzZWxmIHNldElzRWRpdGFibGU6Tk9dOwogCi0gICAgX2Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU7CisgICAg
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpOb25lOwog
ICAgIF9pbnB1dFBlcmlwaGVyYWwgPSBuaWw7CiAgICAgX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNz
d29yZEFzc2lzdGFuY2UgPSBOTzsKIApAQCAtNDU1Niw3ICs0NTU3LDcgQEAgc3RhdGljIGJvb2wg
aXNBc3Npc3RhYmxlSW5wdXRUeXBlKFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAKICAgICBbX3dl
YlZpZXcgZGlkRW5kRm9ybUNvbnRyb2xJbnRlcmFjdGlvbl07CiAKLSAgICBbc2VsZiBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6Rm9jdXNlZEVsZW1l
bnRJc1RyYW5zcGFyZW50XTsKKyAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNz
aXN0YW50Rm9yUmVhc29uOkZvY3VzZWRFbGVtZW50SXNUcmFuc3BhcmVudF07CiB9CiAKIC0gKHZv
aWQpX2RpZFJlY2VpdmVFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXMKQEAgLTQ1ODEsNyArNDU4
Miw3IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShXZWJLaXQ6OklucHV0VHlw
ZSB0eXBlKQogICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IHdlYWtTZWxmIHsgc2VsZiB9
OwogICAgIGF1dG8gaWRlbnRpZmllckJlZm9yZVVwZGF0ZSA9IF9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5hc3Npc3RlZE5vZGVJZGVudGlmaWVyOwogICAgIF9wYWdlLT5yZXF1ZXN0QXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24oW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXJC
ZWZvcmVVcGRhdGUsIHdlYWtTZWxmXSAoYXV0byYgaW5mbywgYXV0byBlcnJvcikgewotICAgICAg
ICBpZiAoIXdlYWtTZWxmIHx8IGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSB8fCBpbmZvLmFzc2lzdGVkTm9kZUlkZW50aWZpZXIgIT0gaWRlbnRpZmllckJlZm9yZVVw
ZGF0ZSkgeworICAgICAgICBpZiAoIXdlYWtTZWxmIHx8IGVycm9yICE9IENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUgfHwgaW5mby5hc3Npc3RlZE5vZGVJZGVudGlmaWVyICE9IGlkZW50aWZpZXJC
ZWZvcmVVcGRhdGUpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBhc3Npc3RlZCBub2RlIG1heSBo
YXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lLCBkb24ndCBvdmVyd3JpdGUgYXNzaXN0ZWQgbm9k
ZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQ2NDAsMTkgKzQ2NDEsMTkgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxl
SW5wdXRUeXBlKFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgQk9PTCBwcmVmZXJzTW9kYWxQ
cmVzZW50YXRpb24gPSBOTzsKIAogICAgIHN3aXRjaCAoX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmVsZW1lbnRUeXBlKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgorICAg
IGNhc2UgSW5wdXRUeXBlOjpTZWxlY3Q6CiAgICAgICAgIF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5w
dXRWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgorICAgIGNhc2UgSW5wdXRUeXBlOjpUaW1lOgog
ICAgICAgICAvLyBUaW1lIGlucHV0cyBhcmUgc3BlY2lhbCwgaW4gdGhhdCB0aGUgb25seSBVSSBh
ZmZvcmRhbmNlcyBmb3IgZGlzbWlzc2FsIGFyZSBwdXNoIGJ1dHRvbnMgcmF0aGVyIHRoYW4gc3Rh
dHVzIGJhciBjaGV2cm9ucy4KICAgICAgICAgLy8gQXMgc3VjaCwgbW9kYWwgcHJlc2VudGF0aW9u
IGFuZCBkaXNtaXNzYWwgaXMgcHJlZmVycmVkIGV2ZW4gaWYgYSBuYXZpZ2F0aW9uIHN0YWNrIGV4
aXN0cy4KICAgICAgICAgcHJlZmVyc01vZGFsUHJlc2VudGF0aW9uID0gWUVTOwogICAgICAgICBf
cHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tUaW1l
UGlja2VyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgIGNhc2Ug
SW5wdXRUeXBlOjpEYXRlOgogICAgICAgICBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRXaXRoRGVsZWdhdGU6c2VsZl0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpOb25lOgorICAgIGNhc2UgSW5wdXRUeXBlOjpOb25lOgogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOwpAQCAtNDc3MSwxNCArNDc3MiwxNCBAQCBzdGF0aWMg
Ym9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAogICAgIHN3aXRjaCAoX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgotICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RGF0ZToKKyAgICBjYXNlIElucHV0VHlwZTo6U2VsZWN0OgorICAgIGNhc2UgSW5wdXRUeXBlOjpU
aW1lOgorICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9yOgorICAgIGNhc2UgSW5wdXRU
eXBlOjpDb2xvcjoKICNlbmRpZgogICAgICAgICByZXR1cm4gbmlsOwotICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlNlYXJjaDoKKyAgICBjYXNlIElucHV0VHlwZTo6U2VhcmNoOgogICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6Zm9ybUNvbnRyb2xTZWFyY2hCdXR0b25UaXRsZSgpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpmb3JtQ29udHJvbEdvQnV0dG9uVGl0bGUo
KTsKQEAgLTQ4OTYsNyArNDg5Nyw3IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlw
ZShXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQogCiAtICh2b2lkKXNlbGVjdFdvcmRGb3JSZXBsYWNl
bWVudAogewotICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6V29yZEdyYW51bGFy
aXR5KTsKKyAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdvcmRHcmFudWxhcml0eSk7CiB9CiAK
IC0gKHZvaWQpX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb24KQEAgLTQ5MTMsMTIgKzQ5MTQsMTIgQEAg
c3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKFdlYktpdDo6SW5wdXRUeXBlIHR5cGUp
CiAgICAgYXV0byYgcG9zdExheW91dERhdGEgPSBzdGF0ZS5wb3N0TGF5b3V0RGF0YSgpOwogICAg
IGlmIChoYXNBc3Npc3RlZE5vZGUoX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uKSkgewogICAgICAg
ICBpZiAocG9zdExheW91dERhdGEuZWxlbWVudElzVHJhbnNwYXJlbnQpCi0gICAgICAgICAgICBb
c2VsZiBfYmVnaW5TdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6
OkZvY3VzZWRFbGVtZW50SXNUcmFuc3BhcmVudF07CisgICAgICAgICAgICBbc2VsZiBfYmVnaW5T
dXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpGb2N1c2VkRWxlbWVudElzVHJh
bnNwYXJlbnRdOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBbc2VsZiBfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6Rm9jdXNlZEVsZW1lbnRJc1Ry
YW5zcGFyZW50XTsKKyAgICAgICAgICAgIFtzZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25B
c3Npc3RhbnRGb3JSZWFzb246Rm9jdXNlZEVsZW1lbnRJc1RyYW5zcGFyZW50XTsKICAgICB9CiAK
LSAgICBXZWJLaXQ6OldLU2VsZWN0aW9uRHJhd2luZ0luZm8gc2VsZWN0aW9uRHJhd2luZ0luZm8o
X3BhZ2UtPmVkaXRvclN0YXRlKCkpOworICAgIFdLU2VsZWN0aW9uRHJhd2luZ0luZm8gc2VsZWN0
aW9uRHJhd2luZ0luZm8oX3BhZ2UtPmVkaXRvclN0YXRlKCkpOwogICAgIGlmIChmb3JjZSB8fCBz
ZWxlY3Rpb25EcmF3aW5nSW5mbyAhPSBfbGFzdFNlbGVjdGlvbkRyYXdpbmdJbmZvKSB7CiAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShTZWxlY3Rpb24sIHN0cmVhbSA8PCAiX3VwZGF0ZUNoYW5nZWRT
ZWxlY3Rpb24gIiA8PCBzZWxlY3Rpb25EcmF3aW5nSW5mbyk7CiAKQEAgLTQ5NTUsNyArNDk1Niw3
IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShXZWJLaXQ6OklucHV0VHlwZSB0
eXBlKQogICAgIHJldHVybiAhIV9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnM7CiB9
CiAKLS0gKHZvaWQpX2JlZ2luU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246
KFdlYktpdDo6U3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uCistICh2b2lk
KV9iZWdpblN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihTdXBwcmVzc1Nl
bGVjdGlvbkFzc2lzdGFudFJlYXNvbilyZWFzb24KIHsKICAgICBib29sIHdhc1N1cHByZXNzaW5n
U2VsZWN0aW9uQXNzaXN0YW50ID0gISFfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25z
OwogICAgIF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnMuYWRkKHJlYXNvbik7CkBA
IC00OTY0LDcgKzQ5NjUsNyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoV2Vi
S2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGRl
YWN0aXZhdGVTZWxlY3Rpb25dOwogfQogCi0tICh2b2lkKV9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rp
b25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRS
ZWFzb24pcmVhc29uCistICh2b2lkKV9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRG
b3JSZWFzb246KFN1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29uKXJlYXNvbgogewogICAg
IGJvb2wgd2FzU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnQgPSAhIV9zdXBwcmVzc1NlbGVj
dGlvbkFzc2lzdGFudFJlYXNvbnM7CiAgICAgX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVh
c29ucy5yZW1vdmUocmVhc29uKTsKQEAgLTUwMjksNyArNTAzMCw3IEBAIHN0YXRpYyBib29sIGlz
QXNzaXN0YWJsZUlucHV0VHlwZShXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQogICAgIFtpbnB1dERl
bGVnYXRlIHNldFN1Z2dlc3Rpb25zOm5pbF07CiB9CiAKLS0gKHZvaWQpX3Nob3dQbGF5YmFja1Rh
cmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpZWxlbWVudFJlY3Qgcm91dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQ
b2xpY3kpcm91dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOihOU1N0cmluZyAqKXJv
dXRpbmdDb250ZXh0VUlECistICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KEJPT0wp
aGFzVmlkZW8gZnJvbVJlY3Q6KGNvbnN0IEludFJlY3QmKWVsZW1lbnRSZWN0IHJvdXRlU2hhcmlu
Z1BvbGljeTooV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5KXJvdXRlU2hhcmluZ1BvbGljeSBy
b3V0aW5nQ29udGV4dFVJRDooTlNTdHJpbmcgKilyb3V0aW5nQ29udGV4dFVJRAogewogI2lmIEVO
QUJMRShBSVJQTEFZX1BJQ0tFUikKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpA
QCAtNTA0NCw3ICs1MDQ1LDcgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKFdl
YktpdDo6SW5wdXRUeXBlIHR5cGUpCiAjZW5kaWYKIH0KIAotLSAodm9pZClfc2hvd1J1bk9wZW5Q
YW5lbDooQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKilwYXJhbWV0ZXJzIHJlc3VsdExpc3RlbmVy
OihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKWxpc3RlbmVyCistICh2
b2lkKV9zaG93UnVuT3BlblBhbmVsOihBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRl
cnMgcmVzdWx0TGlzdGVuZXI6KFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKWxpc3Rl
bmVyCiB7CiAgICAgQVNTRVJUKCFfZmlsZVVwbG9hZFBhbmVsKTsKICAgICBpZiAoX2ZpbGVVcGxv
YWRQYW5lbCkKQEAgLTUwNzAsNyArNTA3MSw3IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlu
cHV0VHlwZShXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQogICAgIF9maWxlVXBsb2FkUGFuZWwgPSBu
aWw7CiB9CiAKLS0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJilkYXRhIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9zaG93U2hhcmVTaGVl
dDooY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYpZGF0YSBjb21wbGV0aW9uSGFuZGxlcjoo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewogI2lm
ICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICAgICBpZiAoX3NoYXJl
U2hlZXQpCkBAIC01MTQ5LDcgKzUxNTAsNyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1
dFR5cGUoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKIAogLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlvbkluZm9ybWF0aW9uRm9y
QWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQK
IHsKLSAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QoX3Bv
c2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CisgICAgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QgcmVxdWVzdChfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsK
ICAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9IHRydWU7CiAgICAgcmVxdWVzdC5pbmNsdWRl
TGlua0luZGljYXRvciA9IGFzc2lzdGFudC5uZWVkc0xpbmtJbmRpY2F0b3I7CiAgICAgaWYgKCFb
c2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XSkKQEAgLTUx
NjEsNyArNTE2Miw3IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShXZWJLaXQ6
OklucHV0VHlwZSB0eXBlKQogLSAodm9pZCl1cGRhdGVQb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsK
ICAgICBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uID0gTk87Ci0gICAgV2ViS2l0OjpJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KF9wb3NpdGlvbkluZm9ybWF0aW9uLnJl
cXVlc3QucG9pbnQpOworICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qo
X3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CiAgICAgcmVxdWVzdC5pbmNsdWRl
U25hcHNob3QgPSB0cnVlOwogICAgIHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IgPSBhc3Np
c3RhbnQubmVlZHNMaW5rSW5kaWNhdG9yOwogCkBAIC01MzIzLDkgKzUzMjQsOSBAQCBzdGF0aWMg
Qk9PTCBzaG91bGRFbmFibGVEcmFnSW50ZXJhY3Rpb25Gb3JQb2xpY3koX1dLRHJhZ0ludGVyYWN0
aW9uUG9saWN5IHBvbGljeQogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRl
XTsKIH0KIAotLSAodm9pZClfc3RhcnREcmFnOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2Ug
aXRlbTooY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mKWl0ZW0KKy0gKHZvaWQpX3N0YXJ0RHJhZzoo
UmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IERyYWdJdGVtJilpdGVtCiB7
Ci0gICAgQVNTRVJUKGl0ZW0uc291cmNlQWN0aW9uICE9IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b25Ob25lKTsKKyAgICBBU1NFUlQoaXRlbS5zb3VyY2VBY3Rpb24gIT0gRHJhZ1NvdXJjZUFjdGlv
bk5vbmUpOwogCiAgICAgaWYgKGl0ZW0ucHJvbWlzZWRBdHRhY2htZW50SW5mbykKICAgICAgICAg
W3NlbGYgX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6aXRlbS5wcm9taXNlZEF0dGFj
aG1lbnRJbmZvXTsKQEAgLTUzNTEsNyArNTM1Miw3IEBAIHN0YXRpYyBCT09MIHNob3VsZEVuYWJs
ZURyYWdJbnRlcmFjdGlvbkZvclBvbGljeShfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgcG9saWN5
CiAgICAgTlNBcnJheSAqZHJhZ0l0ZW1zVG9BZGQgPSBbc2VsZiBfaXRlbXNGb3JCZWdpbm5pbmdP
ckFkZGluZ1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaXN0OnJlZ2lzdHJhdGlvbkxpc3Qgc3Rh
Z2VkRHJhZ1NvdXJjZTpzdGFnZWREcmFnU291cmNlXTsKIAogICAgIFJFTEVBU0VfTE9HKERyYWdB
bmREcm9wLCAiRHJhZyBzZXNzaW9uOiAlcCBhZGRpbmcgJXR1IGl0ZW1zIiwgX2RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5kcmFnU2Vzc2lvbigpLCBkcmFnSXRlbXNUb0FkZC5jb3VudCk7Ci0gICAg
X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5jbGVhclN0YWdlZERyYWdTb3VyY2UoZHJhZ0l0ZW1z
VG9BZGQuY291bnQgPyBXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6RGlkQmVjb21l
QWN0aXZlOjpZZXMgOiBXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6RGlkQmVjb21l
QWN0aXZlOjpObyk7CisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5jbGVhclN0YWdlZERy
YWdTb3VyY2UoZHJhZ0l0ZW1zVG9BZGQuY291bnQgPyBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6
OkRpZEJlY29tZUFjdGl2ZTo6WWVzIDogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpEaWRCZWNv
bWVBY3RpdmU6Ok5vKTsKIAogICAgIGNvbXBsZXRpb24oZHJhZ0l0ZW1zVG9BZGQpOwogCkBAIC01
MzY5LDEyICs1MzcwLDEyIEBAIHN0YXRpYyBCT09MIHNob3VsZEVuYWJsZURyYWdJbnRlcmFjdGlv
bkZvclBvbGljeShfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgcG9saWN5CiAgICAgICAgIHNhdmVk
Q29tcGxldGlvbkJsb2NrKCk7CiAKICAgICBpZiAoIV9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
ZHJhZ1Nlc3Npb24oKS5pdGVtcy5jb3VudCkgewotICAgICAgICBhdXRvIHBvc2l0aW9uRm9yRHJh
Z0VuZCA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
LmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpOworICAgICAgICBhdXRvIHBvc2l0aW9uRm9y
RHJhZ0VuZCA9IHJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVz
dGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpOwogICAgICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJj
ZVNlc3Npb25TdGF0ZV07CiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAgICAgICAgICAgICAvLyBB
IGNsaWVudCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1pZ2h0IGhhdmUgcHJldmVu
dGVkIHRoZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzLCBp
biB3aGljaCBjYXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJhbGFuY2UgdGhlIGBkcmFn
c3RhcnRgIGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAgICBfcGFnZS0+ZHJhZ0Vu
ZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9y
RHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBEcmFnT3BlcmF0aW9uTm9uZSk7CiAgICAgICAg
IH0KICAgICB9CiB9CkBAIC01MzkyLDI1ICs1MzkzLDI1IEBAIHN0YXRpYyBCT09MIHNob3VsZEVu
YWJsZURyYWdJbnRlcmFjdGlvbkZvclBvbGljeShfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgcG9s
aWN5CiAgICAgICAgICpvdXRHbG9iYWxQb2ludCA9IGxvY2F0aW9uSW5Db250ZW50VmlldzsKIH0K
IAotc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVy
YXRpb24oV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0aWMgVUlEcm9wT3Bl
cmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihEcmFnT3BlcmF0aW9u
IG9wZXJhdGlvbikKIHsKLSAgICBpZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgaWYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Nb3ZlKQogICAgICAgICBy
ZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKIAotICAgIGlmIChvcGVyYXRpb24gJiBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNv
cHkpCiAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Db3B5OwogCiAgICAgcmV0dXJuIFVJ
RHJvcE9wZXJhdGlvbkNhbmNlbDsKIH0KIAotLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFG
b3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOihXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25BY3Rpb24KKy0g
KERyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNz
aW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbjooV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uCiB7CiAgICAgQ0dQb2ludCBnbG9iYWw7CiAgICAgQ0dQb2ludCBjbGll
bnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9u
OnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsK
IAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24g
PyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2
ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7Ci0gICAgcmV0dXJuIHsgc2Vzc2lv
biwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9u
Tm9uZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihkcmFnRGVz
dGluYXRpb25BY3Rpb24pIH07CisgICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9
IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/
IERyYWdPcGVyYXRpb25FdmVyeSA6IChEcmFnT3BlcmF0aW9uRXZlcnkgJiB+RHJhZ09wZXJhdGlv
bk1vdmUpKTsKKyAgICByZXR1cm4geyBzZXNzaW9uLCByb3VuZGVkSW50UG9pbnQoY2xpZW50KSwg
cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25Ob25lLCBzdGF0aWNfY2FzdDxEcmFnRGVzdGluYXRpb25BY3Rpb24+KGRyYWdEZXN0aW5hdGlv
bkFjdGlvbikgfTsKIH0KIAogLSAodm9pZCljbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZQpA
QCAtNTQ1Myw3ICs1NDU0LDcgQEAgc3RhdGljIE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4
dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICByZXR1cm4g
ZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJhZ0l0ZW1zKHNlc3Npb24uaXRlbXMpOwogfQogCi0t
ICh2b2lkKV9kaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb246KHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGEKKy0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERh
dGFJbnRlcmFjdGlvbjooc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQogewog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ4MCw3ICs1NDgxLDcgQEAgc3Rh
dGljIE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURy
b3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICB9IGNvbXBsZXRpb246XihCT09MIGNvbXBsZXRlZCkg
ewogICAgICAgICBbdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QgcmVtb3ZlRnJvbVN1cGVydmll
d107CiAgICAgICAgIFtVSVZpZXcgYW5pbWF0ZVdpdGhEdXJhdGlvbjowLjI1IGFuaW1hdGlvbnM6
XigpIHsKLSAgICAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rp
b25Bc3Npc3RhbnRGb3JSZWFzb246V2ViS2l0OjpEcm9wQW5pbWF0aW9uSXNSdW5uaW5nXTsKKyAg
ICAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3Rh
bnRGb3JSZWFzb246RHJvcEFuaW1hdGlvbklzUnVubmluZ107CiAgICAgICAgICAgICBbdW5zZWxl
Y3RlZENvbnRlbnRTbmFwc2hvdCBzZXRBbHBoYTowXTsKICAgICAgICAgfSBjb21wbGV0aW9uOl4o
Qk9PTCBjb21wbGV0ZWQpIHsKICAgICAgICAgICAgIFt1bnNlbGVjdGVkQ29udGVudFNuYXBzaG90
IHJlbW92ZUZyb21TdXBlcnZpZXddOwpAQCAtNTQ5NywxMyArNTQ5OCwxMyBAQCBzdGF0aWMgTlNB
cnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Np
b24oaWQgPFVJRHJvcAogICAgICAgICBbc2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZSBfd2ViVmlldzpf
d2ViVmlldyBkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOmhhbmRsZWQgZm9yU2Vz
c2lvbjpkcm9wU2Vzc2lvbiBpdGVtUHJvdmlkZXJzOltXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IHNoYXJlZEluc3RhbmNlXS5pdGVtUHJvdmlkZXJzXTsKIAogICAgIGlmICghX2lzQW5pbWF0aW5n
Q29uY2x1ZGVFZGl0RHJhZykKLSAgICAgICAgW3NlbGYgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlv
bkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OkRyb3BBbmltYXRpb25Jc1J1bm5pbmddOworICAg
ICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOkRy
b3BBbmltYXRpb25Jc1J1bm5pbmddOwogCiAgICAgQ0dQb2ludCBnbG9iYWw7CiAgICAgQ0dQb2lu
dCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BT
ZXNzaW9uOmRyb3BTZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6
Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAg
IF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBfcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24o
KSk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgcm91bmRl
ZEludFBvaW50KGdsb2JhbCksIF9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpKTsKIH0KIAog
LSAodm9pZClfZGlkQ2hhbmdlRGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlv
dXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVjdApAQCAtNTUyOCw3ICs1NTI5LDcgQEAgc3Rh
dGljIE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURy
b3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICBbX2VkaXREcm9wQ2FyZXRWaWV3IHVwZGF0ZVRvUG9z
aXRpb246W1dLVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbldpdGhSZWN0OnJlY3RdXTsKIH0KIAot
LSAodm9pZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVudDooY29uc3QgV2ViQ29yZTo6
UHJvbWlzZWRBdHRhY2htZW50SW5mbyYpaW5mbworLSAodm9pZClfcHJlcGFyZVRvRHJhZ1Byb21p
c2VkQXR0YWNobWVudDooY29uc3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYpaW5mbwogewogICAg
IGF1dG8gc2Vzc2lvbiA9IHJldGFpblB0cihfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmRyYWdT
ZXNzaW9uKCkpOwogICAgIGlmICghc2Vzc2lvbikgewpAQCAtNTU2Niw3ICs1NTY3LDcgQEAgc3Rh
dGljIE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURy
b3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiYmxvYnMiKTsKKyAgICAgICAgTlNTdHJp
bmcgKnRlbXBvcmFyeUJsb2JEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJibG9icyIpOwogICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkwgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOlt0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpbTlNVVUlEIFVVSURdLlVVSURTdHJpbmddIGlzRGlyZWN0b3J5Ok5P
XTsKIAogICAgICAgICBhdXRvIGF0dGFjaG1lbnQgPSBzdHJvbmdTZWxmLT5fcGFnZS0+YXR0YWNo
bWVudEZvcklkZW50aWZpZXIoaW5mby5hdHRhY2htZW50SWRlbnRpZmllcik7CkBAIC01NjIyLDcg
KzU2MjMsNyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Q
cm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgIF9zaG91bGRSZXN0b3JlQ2Fs
bG91dEJhckFmdGVyRHJvcCA9IE5POwogfQogCi0tIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilf
aXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaXN0OihX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCAqKXJlZ2lzdHJhdGlvbkxpc3Qgc3Rh
Z2VkRHJhZ1NvdXJjZTooY29uc3QgV2ViS2l0OjpEcmFnU291cmNlU3RhdGUmKXN0YWdlZERyYWdT
b3VyY2UKKy0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV9pdGVtc0ZvckJlZ2lubmluZ09yQWRk
aW5nVG9TZXNzaW9uV2l0aFJlZ2lzdHJhdGlvbkxpc3Q6KFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
dGlvbkluZm9MaXN0ICopcmVnaXN0cmF0aW9uTGlzdCBzdGFnZWREcmFnU291cmNlOihjb25zdCBE
cmFnU291cmNlU3RhdGUmKXN0YWdlZERyYWdTb3VyY2UKIHsKICAgICBOU0l0ZW1Qcm92aWRlciAq
ZGVmYXVsdEl0ZW1Qcm92aWRlciA9IHJlZ2lzdHJhdGlvbkxpc3QuaXRlbVByb3ZpZGVyOwogICAg
IGlmICghZGVmYXVsdEl0ZW1Qcm92aWRlcikKQEAgLTU2NTUsNyArNTY1Niw3IEBAIHN0YXRpYyBO
U0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vz
c2lvbihpZCA8VUlEcm9wCiAKIC0gKE5TRGljdGlvbmFyeSAqKV9hdXRvZmlsbENvbnRleHQKIHsK
LSAgICBCT09MIHByb3ZpZGVTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgPSBfZm9jdXNSZXF1aXJl
c1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSAmJiBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxl
bWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOworICAgIEJPT0wgcHJvdmlk
ZVN0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IF9mb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlICYmIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBJbnB1
dFR5cGU6OlBhc3N3b3JkOwogICAgIGlmICghaGFzQXNzaXN0ZWROb2RlKF9hc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbikgfHwgKCFfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uYWNjZXB0c0F1dG9maWxs
ZWRMb2dpbkNyZWRlbnRpYWxzICYmICFwcm92aWRlU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtNTcwMCw3ICs1NzAxLDcgQEAgc3RhdGljIE5TQXJy
YXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9u
KGlkIDxVSURyb3AKICAgICB9CiAKICAgICBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmRyYWdT
ZXNzaW9uV2lsbFJlcXVlc3RBZGRpdGlvbmFsSXRlbShjb21wbGV0aW9uKTsKLSAgICBfcGFnZS0+
cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChwb2ludCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb2ludCkpOworICAgIF9wYWdl
LT5yZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24ocm91bmRlZEludFBvaW50KHBv
aW50KSwgcm91bmRlZEludFBvaW50KHBvaW50KSk7CiB9CiAKIC0gKHZvaWQpX2RyYWdJbnRlcmFj
dGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmVwYXJlRm9yU2Vzc2lvbjoo
aWQgPFVJRHJhZ1Nlc3Npb24+KXNlc3Npb24gY29tcGxldGlvbjooZGlzcGF0Y2hfYmxvY2tfdClj
b21wbGV0aW9uCkBAIC01NzE5LDggKzU3MjAsOCBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92
aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAog
CiAgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5wcmVwYXJlRm9yRHJhZ1Nlc3Npb24oc2Vz
c2lvbiwgY29tcGxldGlvbik7CiAKLSAgICBhdXRvIGRyYWdPcmlnaW4gPSBXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQoW3Nlc3Npb24gbG9jYXRpb25JblZpZXc6c2VsZl0pOwotICAgIF9wYWdlLT5y
ZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb24oZHJhZ09yaWdpbiwgV2ViQ29yZTo6cm91bmRlZElu
dFBvaW50KFtzZWxmIGNvbnZlcnRQb2ludDpkcmFnT3JpZ2luIHRvVmlldzpzZWxmLndpbmRvd10p
KTsKKyAgICBhdXRvIGRyYWdPcmlnaW4gPSByb3VuZGVkSW50UG9pbnQoW3Nlc3Npb24gbG9jYXRp
b25JblZpZXc6c2VsZl0pOworICAgIF9wYWdlLT5yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb24o
ZHJhZ09yaWdpbiwgcm91bmRlZEludFBvaW50KFtzZWxmIGNvbnZlcnRQb2ludDpkcmFnT3JpZ2lu
IHRvVmlldzpzZWxmLndpbmRvd10pKTsKIAogICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAi
RHJhZyBzZXNzaW9uIHJlcXVlc3RlZDogJXAgYXQgb3JpZ2luOiB7JWQsICVkfSIsIHNlc3Npb24s
IGRyYWdPcmlnaW4ueCgpLCBkcmFnT3JpZ2luLnkoKSk7CiB9CkBAIC01NzQ2LDcgKzU3NDcsNyBA
QCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNG
cm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICBfcGFnZS0+ZHJhZ0NhbmNlbGxlZCgp
OwogCiAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb246ICVwIHN0YXJ0
aW5nIHdpdGggJXR1IGl0ZW1zIiwgc2Vzc2lvbiwgW2RyYWdJdGVtcyBjb3VudF0pOwotICAgIF9k
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUuY2xlYXJTdGFnZWREcmFnU291cmNlKFtkcmFnSXRlbXMg
Y291bnRdID8gV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OkRpZEJlY29tZUFjdGl2
ZTo6WWVzIDogV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OkRpZEJlY29tZUFjdGl2
ZTo6Tm8pOworICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuY2xlYXJTdGFnZWREcmFnU291
cmNlKFtkcmFnSXRlbXMgY291bnRdID8gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpEaWRCZWNv
bWVBY3RpdmU6OlllcyA6IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6RGlkQmVjb21lQWN0aXZl
OjpObyk7CiAKICAgICByZXR1cm4gZHJhZ0l0ZW1zOwogfQpAQCAtNTc2NCwxMyArNTc2NSwxMyBA
QCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNG
cm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogCiAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlE
cmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiB3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6
KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1hdG9yIHNlc3Npb246KGlkIDxVSURyYWdTZXNzaW9u
PilzZXNzaW9uCiB7Ci0gICAgaWYgKCFfc2hvdWxkUmVzdG9yZUNhbGxvdXRCYXJBZnRlckRyb3Ag
JiYgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hbnlBY3RpdmVEcmFnU291cmNlSXMoV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpIHsKKyAgICBpZiAoIV9zaG91bGRSZXN0b3Jl
Q2FsbG91dEJhckFmdGVyRHJvcCAmJiBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFueUFjdGl2
ZURyYWdTb3VyY2VJcyhEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSkgewogICAgICAgICAvLyBG
SVhNRTogVGhpcyBTUEkgc2hvdWxkIGJlIHJlbmFtZWQgaW4gVUlLaXQgdG8gcmVmbGVjdCBhIG1v
cmUgZ2VuZXJhbCBwdXJwb3NlIG9mIGhpZGluZyBpbnRlcmFjdGlvbiBhc3Npc3RhbnQgY29udHJv
bHMuCiAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCB3aWxsU3RhcnRTY3JvbGxpbmdP
dmVyZmxvd107CiAgICAgICAgIF9zaG91bGRSZXN0b3JlQ2FsbG91dEJhckFmdGVyRHJvcCA9IFlF
UzsKICAgICB9CiAKLSAgICBhdXRvIHBvc2l0aW9uRm9yRHJhZ0VuZCA9IFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JE
cmFnRW5kKCkpOworICAgIGF1dG8gcG9zaXRpb25Gb3JEcmFnRW5kID0gcm91bmRlZEludFBvaW50
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSk7
CiAgICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHByb3RlY3RlZFNlbGYoc2VsZik7CiAgICAg
W2FuaW1hdG9yIGFkZENvbXBsZXRpb246W3Nlc3Npb24sIHBvc2l0aW9uRm9yRHJhZ0VuZCwgcHJv
dGVjdGVkU2VsZiwgcGFnZSA9IF9wYWdlXSAoVUlWaWV3QW5pbWF0aW5nUG9zaXRpb24gZmluYWxQ
b3NpdGlvbikgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC01NzgwLDcgKzU3ODEsNyBA
QCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNG
cm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0Fu
ZERyb3AsICJEcmFnIHNlc3Npb24gZW5kZWQgYXQgc3RhcnQ6ICVwIiwgc2Vzc2lvbik7CiAgICAg
ICAgICAgICAvLyBUaGUgbGlmdCB3YXMgY2FuY2VsZWQsIHNvIC1kcm9wSW50ZXJhY3Rpb246c2Vz
c2lvbkRpZEVuZDogd2lsbCBuZXZlciBiZSBpbnZva2VkLiBUaGlzIGlzIHRoZSBsYXN0IGNoYW5j
ZSB0byBjbGVhbiB1cC4KICAgICAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGNsZWFuVXBEcmFnU291
cmNlU2Vzc2lvblN0YXRlXTsKLSAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZv
ckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUp
OworICAgICAgICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRp
b25Gb3JEcmFnRW5kLCBEcmFnT3BlcmF0aW9uTm9uZSk7CiAgICAgICAgIH0KICAgICB9XTsKIH0K
QEAgLTU4MTEsNyArNTgxMiw3IEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpl
eHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICBf
cGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpyb3VuZGVk
SW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJh
Z0VuZCgpKSwgb3BlcmF0aW9uKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKHJvdW5kZWRJbnRQb2lu
dChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkp
LCByb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0
aW9uRm9yRHJhZ0VuZCgpKSwgb3BlcmF0aW9uKTsKIH0KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2
aWV3ICopZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHBy
ZXZpZXdGb3JDYW5jZWxsaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJ
VGFyZ2V0ZWREcmFnUHJldmlldyAqKWRlZmF1bHRQcmV2aWV3CkBAIC01ODM2LDcgKzU4MzcsNyBA
QCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNG
cm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgIFthbmltYXRvciBhZGRDb21wbGV0aW9uOltw
cm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBwYWdlID0gX3BhZ2VdIChVSVZpZXdBbmlt
YXRpbmdQb3NpdGlvbiBmaW5hbFBvc2l0aW9uKSB7CiAgICAgICAgIHBhZ2UtPmRyYWdDYW5jZWxs
ZWQoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbiA9IHByb3RlY3RlZFNlbGYtPl9kcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUudGFrZURyYWdDYW5jZWxTZXREb3duQmxvY2soKSkgewotICAg
ICAgICAgICAgcGFnZS0+Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbY29tcGxldGlv
bl0gKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICAgICAgcGFnZS0+Y2Fs
bEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbY29tcGxldGlvbl0gKENhbGxiYWNrQmFzZTo6
RXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpAQCAtNTk0NywxMyArNTk0OCwxMyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Q
cm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJv
cAogICAgICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZChbZmlsZVVSTCBwYXRoXSk7CiAgICAgICAg
IGNhcHR1cmVkRHJhZ0RhdGEuc2V0RmlsZU5hbWVzKGZpbGVuYW1lcyk7CiAKLSAgICAgICAgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAg
ICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5z
aW9uRm9yVXBsb2FkOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2Fu
ZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGFnZS0+Y3Jl
YXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChmaWxlbmFtZXMsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogICAgICAgICByZXRhaW5lZFNlbGYt
Pl9wYWdlLT5wZXJmb3JtRHJhZ09wZXJhdGlvbihjYXB0dXJlZERyYWdEYXRhLCAiZGF0YSBpbnRl
cmFjdGlvbiBwYXN0ZWJvYXJkIiwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKSk7CiAKICAgICAgICAgcmV0YWluZWRTZWxm
LT5fdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QgPSBbcmV0YWluZWRTZWxmIHNuYXBzaG90Vmll
d0FmdGVyU2NyZWVuVXBkYXRlczpOT107Ci0gICAgICAgIFtyZXRhaW5lZFNlbGYgX2JlZ2luU3Vw
cHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2ViS2l0OjpEcm9wQW5pbWF0aW9u
SXNSdW5uaW5nXTsKKyAgICAgICAgW3JldGFpbmVkU2VsZiBfYmVnaW5TdXBwcmVzc2luZ1NlbGVj
dGlvbkFzc2lzdGFudEZvclJlYXNvbjpEcm9wQW5pbWF0aW9uSXNSdW5uaW5nXTsKICAgICAgICAg
W1VJVmlldyBwZXJmb3JtV2l0aG91dEFuaW1hdGlvbjpbcmV0YWluZWRTZWxmXSB7CiAgICAgICAg
ICAgICBbcmV0YWluZWRTZWxmLT5fdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3Qgc2V0RnJhbWU6
W3JldGFpbmVkU2VsZiBib3VuZHNdXTsKICAgICAgICAgICAgIFtyZXRhaW5lZFNlbGYgYWRkU3Vi
dmlldzpyZXRhaW5lZFNlbGYtPl92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdC5nZXQoKV07CkBA
IC01OTkzLDcgKzU5OTQsNyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0
cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgIENHUG9pbnQg
Y2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vz
c2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2Jh
bF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdl
LT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJv
dW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAg
X3BhZ2UtPmRyYWdFbmRlZChyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgcm91bmRlZEludFBvaW50
KGdsb2JhbCksIERyYWdPcGVyYXRpb25Ob25lKTsKIH0KIAogI2VuZGlmCkBAIC02MDU4LDEyICs2
MDU5LDEyIEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVBy
b3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAtIChCT09MKWFsbG93c0xhbmd1YWdl
U2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIKIHsKICAgICBzd2l0Y2ggKF9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRF
ZGl0YWJsZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0OgotICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OlRleHRBcmVhOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNl
YXJjaDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKLSAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpVUkw6CisgICAgY2FzZSBJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToK
KyAgICBjYXNlIElucHV0VHlwZTo6VGV4dDoKKyAgICBjYXNlIElucHV0VHlwZTo6VGV4dEFyZWE6
CisgICAgY2FzZSBJbnB1dFR5cGU6OlNlYXJjaDoKKyAgICBjYXNlIElucHV0VHlwZTo6RW1haWw6
CisgICAgY2FzZSBJbnB1dFR5cGU6OlVSTDoKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gTk87CkBAIC02MTAxLDE0ICs2MTAyLDE0IEBAIHN0YXRpYyBO
U0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vz
c2lvbihpZCA8VUlEcm9wCiAtIChCT09MKXNob3VsZERpc3BsYXlJbnB1dENvbnRleHRWaWV3Rm9y
TGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcgogewogICAgIHN3aXRjaCAoX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
KSB7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOgotICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHQ6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
UGFzc3dvcmQ6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dEFyZWE6Ci0gICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkVtYWlsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlVSTDoKLSAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpQaG9uZToKKyAgICBjYXNlIElucHV0VHlwZTo6Q29udGVudEVkaXRhYmxl
OgorICAgIGNhc2UgSW5wdXRUeXBlOjpUZXh0OgorICAgIGNhc2UgSW5wdXRUeXBlOjpQYXNzd29y
ZDoKKyAgICBjYXNlIElucHV0VHlwZTo6VGV4dEFyZWE6CisgICAgY2FzZSBJbnB1dFR5cGU6OlNl
YXJjaDoKKyAgICBjYXNlIElucHV0VHlwZTo6RW1haWw6CisgICAgY2FzZSBJbnB1dFR5cGU6OlVS
TDoKKyAgICBjYXNlIElucHV0VHlwZTo6UGhvbmU6CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIE5POwpAQCAtNjEyMCwxMSArNjEyMSwxMSBAQCBzdGF0
aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJv
cFNlc3Npb24oaWQgPFVJRHJvcAogLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVtZXJpY0lucHV0
TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyCiB7CiAgICAgc3dpdGNoIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxl
bWVudFR5cGUpIHsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQaG9uZToKKyAgICBjYXNl
IElucHV0VHlwZTo6UGhvbmU6CiAgICAgICAgIHJldHVybiBXS051bWJlclBhZElucHV0TW9kZVRl
bGVwaG9uZTsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJ
bnB1dFR5cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIFdLTnVtYmVyUGFkSW5wdXRNb2RlTnVt
YmVyc0FuZFN5bWJvbHM7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgor
ICAgIGNhc2UgSW5wdXRUeXBlOjpOdW1iZXJQYWQ6CiAgICAgICAgIHJldHVybiBXS051bWJlclBh
ZElucHV0TW9kZU51bWJlcnNPbmx5OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXS051
bWJlclBhZElucHV0TW9kZU5vbmU7CkBAIC02MTM0LDEzICs2MTM1LDEzIEBAIHN0YXRpYyBOU0Fy
cmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lv
bihpZCA8VUlEcm9wCiAtIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29u
dHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7CiAg
ICAgc3dpdGNoIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKLSAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKKyAgICBjYXNlIElucHV0VHlwZTo6UGFz
c3dvcmQ6CiAgICAgICAgIHJldHVybiBVSVRleHRDb250ZW50VHlwZVBhc3N3b3JkOwotICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlVSTDoKKyAgICBjYXNlIElucHV0VHlwZTo6VVJMOgogICAg
ICAgICByZXR1cm4gVUlUZXh0Q29udGVudFR5cGVVUkw7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RW1haWw6CisgICAgY2FzZSBJbnB1dFR5cGU6OkVtYWlsOgogICAgICAgICByZXR1cm4g
VUlUZXh0Q29udGVudFR5cGVFbWFpbEFkZHJlc3M7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6UGhvbmU6CisgICAgY2FzZSBJbnB1dFR5cGU6OlBob25lOgogICAgICAgICByZXR1cm4gVUlU
ZXh0Q29udGVudFR5cGVUZWxlcGhvbmVOdW1iZXI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8g
VGhlIGVsZW1lbnQgdHlwZSBhbG9uZSBpcyBpbnN1ZmZpY2llbnQgdG8gaW5mZXIgY29udGVudCB0
eXBlOyBmYWxsIGJhY2sgdG8gYXV0b2ZpbGwgZGF0YS4KQEAgLTYxNjcsNyArNjE2OCw3IEBAIHN0
YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21E
cm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAKIC0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyCiB7Ci0gICAgcmV0dXJuIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSAh
PSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ7CisgICAgcmV0dXJuIF9hc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5lbGVtZW50VHlwZSAhPSBJbnB1dFR5cGU6OlBhc3N3b3JkOwogfQogCiAjZW5k
aWYgLy8gUExBVEZPUk0oV0FUQ0hPUykKQEAgLTYyMjksMTAgKzYyMzAsMTAgQEAgc3RhdGljIE5T
QXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNz
aW9uKGlkIDxVSURyb3AKIC0gKHZvaWQpX3NpbXVsYXRlTG9uZ1ByZXNzQWN0aW9uQXRMb2NhdGlv
bjooQ0dQb2ludClsb2NhdGlvbgogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiBwcm90
ZWN0ZWRTZWxmID0gc2VsZjsKLSAgICBbc2VsZiBkb0FmdGVyUG9zaXRpb25JbmZvcm1hdGlvblVw
ZGF0ZTpbcHJvdGVjdGVkU2VsZl0gKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24pIHsKKyAgICBbc2VsZiBkb0FmdGVyUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpbcHJv
dGVjdGVkU2VsZl0gKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKSB7CiAgICAgICAg
IGlmIChTRUwgYWN0aW9uID0gW3Byb3RlY3RlZFNlbGYgX2FjdGlvbkZvckxvbmdQcmVzc10pCiAg
ICAgICAgICAgICBbcHJvdGVjdGVkU2VsZiBwZXJmb3JtU2VsZWN0b3I6YWN0aW9uXTsKLSAgICB9
IGZvclJlcXVlc3Q6V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdChXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pKV07CisgICAgfSBmb3JSZXF1ZXN0OkludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbikpXTsKIH0KIAog
LSAodm9pZClzZWxlY3RGb3JtQWNjZXNzb3J5UGlja2VyUm93OihOU0ludGVnZXIpcm93SW5kZXgK
QEAgLTYzMjYsNyArNjMyNyw3IEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpl
eHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAgICAgaWYgKCFf
aGlnaGxpZ2h0TG9uZ1ByZXNzQ2FuQ2xpY2spCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQocG9zaXRpb24pKTsKKyAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCByZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChwb3NpdGlvbikpOwogICAgIHJlcXVlc3QuaW5jbHVk
ZVNuYXBzaG90ID0gdHJ1ZTsKICAgICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gdHJ1
ZTsKICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJl
cXVlc3RdKQpAQCAtNjM0Niw3ICs2MzQ3LDcgQEAgc3RhdGljIE5TQXJyYXk8TlNJdGVtUHJvdmlk
ZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9uKGlkIDxVSURyb3AKICAg
ICAgICAgaWYgKGxpbmtVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICAgICAg
cmV0dXJuIFlFUzsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0gICAgICAgIGlmIChXZWJD
b3JlOjpEYXRhRGV0ZWN0aW9uOjpjYW5CZVByZXNlbnRlZEJ5RGF0YURldGVjdG9ycyhsaW5rVVJM
KSkKKyAgICAgICAgaWYgKERhdGFEZXRlY3Rpb246OmNhbkJlUHJlc2VudGVkQnlEYXRhRGV0ZWN0
b3JzKGxpbmtVUkwpKQogICAgICAgICAgICAgcmV0dXJuIFlFUzsKICNlbmRpZgogICAgICAgICBy
ZXR1cm4gTk87CkBAIC02NjE3LDggKzY2MTgsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKnByZXZpZXdJ
ZGVudGlmaWVyRm9yRWxlbWVudEFjdGlvbihfV0tFbGVtZW50QWN0aW9uICphY3Rpb24pCiAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5r
SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkgewotICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbiA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlcy5sb2NhdGlvbigpOwotICAgICAgICBmb3IgKFdlYkNvcmU6
OkZsb2F0UmVjdCYgcmVjdCA6IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IudGV4
dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykgeworICAgICAgICBGbG9hdFBvaW50IG9y
aWdpbiA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlcy5sb2NhdGlvbigpOworICAgICAgICBmb3IgKEZsb2F0UmVj
dCYgcmVjdCA6IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IudGV4dFJlY3RzSW5C
b3VuZGluZ1JlY3RDb29yZGluYXRlcykgewogICAgICAgICAgICAgQ0dSZWN0IGNnUmVjdCA9IHJl
Y3Q7CiAgICAgICAgICAgICBjZ1JlY3Qub3JpZ2luLnggKz0gb3JpZ2luLngoKTsKICAgICAgICAg
ICAgIGNnUmVjdC5vcmlnaW4ueSArPSBvcmlnaW4ueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlci5tbQppbmRleCBjNTA1YjI2ZTMxYTNiNDlmMGFlZmFiZGJhYTdjNTljNTEx
ZjNlMTAzLi41MGMxZjUxY2UwNjhlNWMwMjA0MjRkNzMzYTE4YWIwMWNjNDFlMjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNj
cmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtNDAsNiArNDAsOSBAQAogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
IHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBzaG93SGlkZUFuaW1hdGlvbkR1cmF0aW9uID0g
MC4xOwogc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIHBpcEhpZGVBbmltYXRpb25EdXJhdGlv
biA9IDAuMjsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBhdXRvSGlkZURlbGF5ID0gNC4w
OwpAQCAtNTMsNyArNTYsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHJlcXVpcmVkU2NvcmUgPSAw
LjE7CiAtICh2b2lkKWZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlOwogQGVuZAogCi1jbGFz
cyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50IDog
V2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQgeworY2xhc3MgV0tGdWxsU2NyZWVu
Vmlld0NvbnRyb2xsZXJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCA6IFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTcxLDcg
Kzc0LDcgQEAgcHVibGljOgogICAgICAgICBtX3BhcmVudC5waWN0dXJlSW5QaWN0dXJlQWN0aXZl
ID0gYWN0aXZlOwogICAgIH0KIAotICAgIHZvaWQgc2V0SW50ZXJmYWNlKFdlYkNvcmU6OlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KiBpbnRlcmZhY2UpCisgICAgdm9pZCBzZXRJbnRlcmZh
Y2UoUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQqIGludGVyZmFjZSkKICAgICB7CiAgICAg
ICAgIGlmIChtX2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC04NSwxNCArODgsMTQgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdLRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyICptX3BhcmVudCB7IG51bGxwdHIgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IG1faW50ZXJmYWNlOworICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7CiB9OwogCi1jbGFzcyBX
S0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2Vi
Q29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworY2xhc3MgV0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5WaWV3
Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKLSAgICB2b2lkIHNl
dEludGVyZmFjZShXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCogaW50ZXJm
YWNlKQorICAgIHZvaWQgc2V0SW50ZXJmYWNlKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
KiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNl
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5hZGRDbGllbnQoKnRo
aXMpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
KiBpbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2ludGVyZmFjZS5nZXQoKTsgfQorICAgIFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBpbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBt
X2ludGVyZmFjZS5nZXQoKTsgfQogCiAgICAgdm9pZCB3aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KCkgZmluYWwKICAgICB7CkBAIC0xMjMsNyArMTI2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyICptX3BhcmVudCB7IG51bGxwdHIgfTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IG1faW50ZXJm
YWNlOworICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZh
Y2U7CiB9OwogCiAjcHJhZ21hIG1hcmsgLSBfV0tFeHRyaW5zaWNCdXR0b24KQEAgLTE0OSw3ICsx
NTIsNyBAQCBwcml2YXRlOgogCiBAaW50ZXJmYWNlIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVy
ICgpIDxVSUdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJVG9vbGJhckRlbGVnYXRlPgogQHBy
b3BlcnR5ICh3ZWFrLCBub25hdG9taWMpIFdLV2ViVmlldyAqX3dlYlZpZXc7IC8vIENhbm5vdCBi
ZSByZXRhaW5lZCwgc2VlIDxyZGFyOi8vcHJvYmxlbS8xNDg4NDY2Nj4uCi1AcHJvcGVydHkgKHJl
YWRvbmx5LCBub25hdG9taWMpIFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogX21h
bmFnZXI7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkqIF9tYW5hZ2VyOwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBXZWJD
b3JlOjpGbG9hdEJveEV4dGVudCBfZWZmZWN0aXZlRnVsbHNjcmVlbkluc2V0czsKIEBlbmQKIApA
QCAtMjU3LDcgKzI2MCw3IEBAIHByaXZhdGU6CiAKIC0gKHZvaWQpdmlkZW9Db250cm9sc01hbmFn
ZXJEaWRDaGFuZ2UKIHsKLSAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSA9IFtzZWxmLl93
ZWJWaWV3IF9wYWdlXTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBbc2VsZi5fd2ViVmlldyBf
cGFnZV07CiAgICAgYXV0byogdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IHBhZ2UgPyBwYWdlLT52
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkgOiBudWxscHRyOwogICAgIGF1dG8qIHZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZSA9IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPyB2aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLT5jb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKSA6IG51bGxwdHI7CiAgICAgYXV0byog
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0gdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID8gJnZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKCkgOiBudWxs
cHRyOwpAQCAtMjY1LDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgX3BsYXliYWNrQ2xpZW50LnNl
dEludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpOwogICAgIF92aWRlb0Z1bGxzY3Jl
ZW5DbGllbnQuc2V0SW50ZXJmYWNlKHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk7CiAKLSAgICBX
ZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbCogcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UgPyBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXliYWNr
U2Vzc2lvbk1vZGVsKCkgOiBudWxscHRyOworICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBwbGF5
YmFja1Nlc3Npb25Nb2RlbCA9IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA/IHBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSA6IG51bGxwdHI7CiAgICAgc2Vs
Zi5wbGF5aW5nID0gcGxheWJhY2tTZXNzaW9uTW9kZWwgPyBwbGF5YmFja1Nlc3Npb25Nb2RlbC0+
aXNQbGF5aW5nKCkgOiBOTzsKICAgICBbX3BpcEJ1dHRvbiBzZXRIaWRkZW46IXBsYXliYWNrU2Vz
c2lvbk1vZGVsXTsKIH0KQEAgLTQ3OCw3ICs0ODEsNyBAQCBwcml2YXRlOgogI3ByYWdtYSBtYXJr
IC0gSW50ZXJuYWwgSW50ZXJmYWNlCiAKIEBkeW5hbWljIF9tYW5hZ2VyOwotLSAoV2ViS2l0OjpX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KilfbWFuYWdlcgorLSAoV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eSopX21hbmFnZXIKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IFtzZWxmLl93ZWJWaWV3
IF9wYWdlXSkKICAgICAgICAgcmV0dXJuIHBhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCk7CkBAIC01
MDQsMTEgKzUwNywxMSBAQCBwcml2YXRlOgogCiAtICh2b2lkKV90b2dnbGVQaVBBY3Rpb246KGlk
KXNlbmRlcgogewotICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlID0gW3NlbGYuX3dlYlZp
ZXcgX3BhZ2VdOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdl
XTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5KiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyID0gcGFnZS0+cGxh
eWJhY2tTZXNzaW9uTWFuYWdlcigpOworICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSog
cGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IHBhZ2UtPnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKTsK
ICAgICBpZiAoIXBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAt
NTE2LDcgKzUxOSw3IEBAIHByaXZhdGU6CiAgICAgaWYgKCFwbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVs
KiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKTsKKyAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbCogcGxheWJhY2tTZXNz
aW9uTW9kZWwgPSBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVs
KCk7CiAgICAgaWYgKCFwbGF5YmFja1Nlc3Npb25Nb2RlbCkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA5Mzli
NWQzNTYwZmRmY2Q0NWMzN2UwNDE2ODY3ZWM3YTk3ZDBmNDNmLi4yYmQxYThlMmQxYThhZThkZWIx
M2UwZTQ3NDYyZDFjNGNjNzkyNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJJT1MubW0KQEAgLTUzLDE0ICs1MywxNCBAQAogI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lm
ICFIQVZFKFVSTF9GT1JNQVRUSU5HKQogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElP
TkFMKExpbmtQcmVzZW50YXRpb24pCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBD
R1NpemUgc2l6ZUV4cGFuZGVkVG9TaXplKENHU2l6ZSBpbml0aWFsLCBDR1NpemUgb3RoZXIpCiB7
CkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRp
b25EdXJhdGlvbiA9IDAuMjsKICAgICBDR1JlY3QgZnVsbHNjcmVlbkZyYW1lID0gX2FuaW1hdGlu
Z0luID8gX2ZpbmFsRnJhbWUgOiBfaW5pdGlhbEZyYW1lOwogICAgIF9hbmltYXRpbmdWaWV3ID0g
X2FuaW1hdGluZ0luID8gdG9WaWV3IDogZnJvbVZpZXc7CiAKLSAgICBDR1JlY3QgYm91bmRzUmVj
dCA9IFdlYkNvcmU6Omxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChXZWJDb3Jl
OjpGbG9hdFJlY3QoaW5saW5lRnJhbWUpLnNpemUoKS5hc3BlY3RSYXRpbygpLCBmdWxsc2NyZWVu
RnJhbWUpOworICAgIENHUmVjdCBib3VuZHNSZWN0ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0
aW9JbnNpZGVSZWN0KEZsb2F0UmVjdChpbmxpbmVGcmFtZSkuc2l6ZSgpLmFzcGVjdFJhdGlvKCks
IGZ1bGxzY3JlZW5GcmFtZSk7CiAgICAgYm91bmRzUmVjdC5vcmlnaW4gPSBDR1BvaW50WmVybzsK
IAogICAgIF9pbml0aWFsTWFza1ZpZXdCb3VuZHMgPSBfYW5pbWF0aW5nSW4gPyBib3VuZHNSZWN0
IDogW19hbmltYXRpbmdWaWV3IGJvdW5kc107CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGNv
bnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsKICAgICBfZmluYWxN
YXNrVmlld0JvdW5kcyA9IF9hbmltYXRpbmdJbiA/IFtfYW5pbWF0aW5nVmlldyBib3VuZHNdIDog
Ym91bmRzUmVjdDsKICAgICBfZmluYWxNYXNrVmlld0NlbnRlciA9IENHUG9pbnRNYWtlKENHUmVj
dEdldE1pZFgoW19hbmltYXRpbmdWaWV3IGJvdW5kc10pLCBDR1JlY3RHZXRNaWRZKFtfYW5pbWF0
aW5nVmlldyBib3VuZHNdKSk7CiAKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NhbGVSZWN0ID0g
V2ViQ29yZTo6c21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdChXZWJDb3JlOjpG
bG9hdFJlY3QoZnVsbHNjcmVlbkZyYW1lKS5zaXplKCkuYXNwZWN0UmF0aW8oKSwgaW5saW5lRnJh
bWUpOworICAgIEZsb2F0UmVjdCBzY2FsZVJlY3QgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0
aW9Bcm91bmRSZWN0KEZsb2F0UmVjdChmdWxsc2NyZWVuRnJhbWUpLnNpemUoKS5hc3BlY3RSYXRp
bygpLCBpbmxpbmVGcmFtZSk7CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gc2NhbGVUcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2FsZVJlY3Qud2lkdGgoKSAvIGZ1bGxzY3Jl
ZW5GcmFtZS5zaXplLndpZHRoLCBzY2FsZVJlY3QuaGVpZ2h0KCkgLyBmdWxsc2NyZWVuRnJhbWUu
c2l6ZS5oZWlnaHQpOwogICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zbGF0ZVRyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtTWFrZVRyYW5zbGF0aW9uKENHUmVjdEdldE1pZFgoaW5saW5lRnJh
bWUpIC0gQ0dSZWN0R2V0TWlkWChmdWxsc2NyZWVuRnJhbWUpLCBDR1JlY3RHZXRNaWRZKGlubGlu
ZUZyYW1lKSAtIENHUmVjdEdldE1pZFkoZnVsbHNjcmVlbkZyYW1lKSk7CiAKQEAgLTQyNSw4ICs0
MjUsOCBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga0FuaW1hdGlvbkR1cmF0aW9uID0g
MC4yOwogQGltcGxlbWVudGF0aW9uIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgewogICAg
IFJldGFpblB0cjxXS0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc+IF93ZWJWaWV3UGxhY2Vob2xk
ZXI7CiAKLSAgICBXZWJLaXQ6OkZ1bGxTY3JlZW5TdGF0ZSBfZnVsbFNjcmVlblN0YXRlOwotICAg
IFdlYktpdDo6V0tXZWJWaWV3U3RhdGUgX3ZpZXdTdGF0ZTsKKyAgICBGdWxsU2NyZWVuU3RhdGUg
X2Z1bGxTY3JlZW5TdGF0ZTsKKyAgICBXS1dlYlZpZXdTdGF0ZSBfdmlld1N0YXRlOwogCiAgICAg
UmV0YWluUHRyPFVJV2luZG93PiBfd2luZG93OwogICAgIFJldGFpblB0cjxVSVZpZXdDb250cm9s
bGVyPiBfcm9vdFZpZXdDb250cm9sbGVyOwpAQCAtNDc0LDkgKzQ3NCw5IEBAIHN0YXRpYyBjb25z
dCBOU1RpbWVJbnRlcnZhbCBrQW5pbWF0aW9uRHVyYXRpb24gPSAwLjI7CiAKIC0gKEJPT0wpaXNG
dWxsU2NyZWVuCiB7Ci0gICAgcmV0dXJuIF9mdWxsU2NyZWVuU3RhdGUgPT0gV2ViS2l0OjpXYWl0
aW5nVG9FbnRlckZ1bGxTY3JlZW4KLSAgICAgICAgfHwgX2Z1bGxTY3JlZW5TdGF0ZSA9PSBXZWJL
aXQ6OkVudGVyaW5nRnVsbFNjcmVlbgotICAgICAgICB8fCBfZnVsbFNjcmVlblN0YXRlID09IFdl
YktpdDo6SW5GdWxsU2NyZWVuOworICAgIHJldHVybiBfZnVsbFNjcmVlblN0YXRlID09IFdhaXRp
bmdUb0VudGVyRnVsbFNjcmVlbgorICAgICAgICB8fCBfZnVsbFNjcmVlblN0YXRlID09IEVudGVy
aW5nRnVsbFNjcmVlbgorICAgICAgICB8fCBfZnVsbFNjcmVlblN0YXRlID09IEluRnVsbFNjcmVl
bjsKIH0KIAogLSAoVUlWaWV3ICopd2ViVmlld1BsYWNlaG9sZGVyCkBAIC01MDAsNyArNTAwLDcg
QEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsK
IAogICAgIFtzZWxmIF9pbnZhbGlkYXRlRVZPcmdhbml6YXRpb25OYW1lXTsKIAotICAgIF9mdWxs
U2NyZWVuU3RhdGUgPSBXZWJLaXQ6OldhaXRpbmdUb0VudGVyRnVsbFNjcmVlbjsKKyAgICBfZnVs
bFNjcmVlblN0YXRlID0gV2FpdGluZ1RvRW50ZXJGdWxsU2NyZWVuOwogCiAgICAgX3dpbmRvdyA9
IGFkb3B0TlMoW1tVSVdpbmRvdyBhbGxvY10gaW5pdF0pOwogICAgIFtfd2luZG93IHNldEJhY2tn
cm91bmRDb2xvcjpbVUlDb2xvciBjbGVhckNvbG9yXV07CkBAIC01NjMsOSArNTYzLDkgQEAgc3Rh
dGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsKICAgICAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICAgICAgCiAgICAg
ICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlciBsYXllcl0gc2V0Q29udGVudHM6KGlkKVtzbmFwc2hv
dEltYWdlIENHSW1hZ2VdXTsKLSAgICAgICAgV2ViS2l0OjpyZXBsYWNlVmlld1dpdGhWaWV3KHdl
YlZpZXcuZ2V0KCksIF93ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkpOworICAgICAgICByZXBsYWNl
Vmlld1dpdGhWaWV3KHdlYlZpZXcuZ2V0KCksIF93ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkpOwog
Ci0gICAgICAgIFdlYktpdDo6V0tXZWJWaWV3U3RhdGUoKS5hcHBseVRvKHdlYlZpZXcuZ2V0KCkp
OworICAgICAgICBXS1dlYlZpZXdTdGF0ZSgpLmFwcGx5VG8od2ViVmlldy5nZXQoKSk7CiAgICAg
ICAgIAogICAgICAgICBbd2ViVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihVSVZpZXdBdXRvcmVz
aXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVIZWlnaHQpXTsK
ICAgICAgICAgW3dlYlZpZXcgc2V0RnJhbWU6W193aW5kb3cgYm91bmRzXV07CkBAIC01NzcsMTQg
KzU3NywxNCBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga0FuaW1hdGlvbkR1cmF0aW9u
ID0gMC4yOwogICAgICAgICBpZiAoYXV0byogbWFuYWdlciA9IHNlbGYuX21hbmFnZXIpCiAgICAg
ICAgICAgICBtYW5hZ2VyLT5zZXRBbmltYXRpbmdGdWxsU2NyZWVuKHRydWUpOwogCi0gICAgICAg
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFyZ3VtZW50cyB7IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzOjpDU1NEZXZpY2VBZGFwdGF0aW9uIH07CisgICAgICAgIFZpZXdwb3J0QXJndW1l
bnRzIGFyZ3VtZW50cyB7IFZpZXdwb3J0QXJndW1lbnRzOjpDU1NEZXZpY2VBZGFwdGF0aW9uIH07
CiAgICAgICAgIGFyZ3VtZW50cy56b29tID0gMTsKICAgICAgICAgYXJndW1lbnRzLm1pblpvb20g
PSAxOwogICAgICAgICBhcmd1bWVudHMubWF4Wm9vbSA9IDE7CiAgICAgICAgIGFyZ3VtZW50cy51
c2VyWm9vbSA9IDE7CiAgICAgICAgIHBhZ2UtPnNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMo
YXJndW1lbnRzKTsKIAotICAgICAgICBfcmVwYWludENhbGxiYWNrID0gV2ViS2l0OjpWb2lkQ2Fs
bGJhY2s6OmNyZWF0ZShbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZl0oV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBW
b2lkQ2FsbGJhY2s6OmNyZWF0ZShbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2Vs
Zl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgICAgICBfcmVwYWludENh
bGxiYWNrID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gW3Byb3Rl
Y3RlZFNlbGYgX21hbmFnZXJdKSB7CiAgICAgICAgICAgICAgICAgbWFuYWdlci0+d2lsbEVudGVy
RnVsbFNjcmVlbigpOwpAQCAtNjAyLDE2ICs2MDIsMTYgQEAgc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsKIAogLSAodm9pZCliZWdhbkVudGVyRnVs
bFNjcmVlbldpdGhJbml0aWFsRnJhbWU6KENHUmVjdClpbml0aWFsRnJhbWUgZmluYWxGcmFtZToo
Q0dSZWN0KWZpbmFsRnJhbWUKIHsKLSAgICBpZiAoX2Z1bGxTY3JlZW5TdGF0ZSAhPSBXZWJLaXQ6
OldhaXRpbmdUb0VudGVyRnVsbFNjcmVlbikKKyAgICBpZiAoX2Z1bGxTY3JlZW5TdGF0ZSAhPSBX
YWl0aW5nVG9FbnRlckZ1bGxTY3JlZW4pCiAgICAgICAgIHJldHVybjsKLSAgICBfZnVsbFNjcmVl
blN0YXRlID0gV2ViS2l0OjpFbnRlcmluZ0Z1bGxTY3JlZW47CisgICAgX2Z1bGxTY3JlZW5TdGF0
ZSA9IEVudGVyaW5nRnVsbFNjcmVlbjsKIAogICAgIF9pbml0aWFsRnJhbWUgPSBpbml0aWFsRnJh
bWU7CiAgICAgX2ZpbmFsRnJhbWUgPSBmaW5hbEZyYW1lOwogICAgIAotICAgIF9pbml0aWFsRnJh
bWUuc2l6ZSA9IFdlYktpdDo6c2l6ZUV4cGFuZGVkVG9TaXplKF9pbml0aWFsRnJhbWUuc2l6ZSwg
Q0dTaXplTWFrZSgxLCAxKSk7Ci0gICAgX2ZpbmFsRnJhbWUuc2l6ZSA9IFdlYktpdDo6c2l6ZUV4
cGFuZGVkVG9TaXplKF9maW5hbEZyYW1lLnNpemUsIENHU2l6ZU1ha2UoMSwgMSkpOwotICAgIF9p
bml0aWFsRnJhbWUgPSBXZWJLaXQ6OnNhZmVJbmxpbmVSZWN0KF9pbml0aWFsRnJhbWUsIFtfcm9v
dFZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lLnNpemUpOworICAgIF9pbml0aWFsRnJhbWUuc2l6
ZSA9IHNpemVFeHBhbmRlZFRvU2l6ZShfaW5pdGlhbEZyYW1lLnNpemUsIENHU2l6ZU1ha2UoMSwg
MSkpOworICAgIF9maW5hbEZyYW1lLnNpemUgPSBzaXplRXhwYW5kZWRUb1NpemUoX2ZpbmFsRnJh
bWUuc2l6ZSwgQ0dTaXplTWFrZSgxLCAxKSk7CisgICAgX2luaXRpYWxGcmFtZSA9IHNhZmVJbmxp
bmVSZWN0KF9pbml0aWFsRnJhbWUsIFtfcm9vdFZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lLnNp
emUpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNl
dERpc2FibGVBY3Rpb25zOllFU107CkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGljIGNvbnN0IE5T
VGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsKICAgICBbQ0FUcmFuc2FjdGlv
biBjb21taXRdOwogCiAgICAgW19yb290Vmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9s
bGVyOl9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRp
b246XnsKLSAgICAgICAgX2Z1bGxTY3JlZW5TdGF0ZSA9IFdlYktpdDo6SW5GdWxsU2NyZWVuOwor
ICAgICAgICBfZnVsbFNjcmVlblN0YXRlID0gSW5GdWxsU2NyZWVuOwogCiAgICAgICAgIGF1dG8q
IHBhZ2UgPSBbc2VsZi5fd2ViVmlldyBfcGFnZV07CiAgICAgICAgIGF1dG8qIG1hbmFnZXIgPSBz
ZWxmLl9tYW5hZ2VyOwpAQCAtNjU5LDcgKzY1OSw3IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRl
cnZhbCBrQW5pbWF0aW9uRHVyYXRpb24gPSAwLjI7CiB7CiAgICAgaWYgKCFzZWxmLmlzRnVsbFNj
cmVlbikKICAgICAgICAgcmV0dXJuOwotICAgIF9mdWxsU2NyZWVuU3RhdGUgPSBXZWJLaXQ6Oldh
aXRpbmdUb0V4aXRGdWxsU2NyZWVuOworICAgIF9mdWxsU2NyZWVuU3RhdGUgPSBXYWl0aW5nVG9F
eGl0RnVsbFNjcmVlbjsKIAogICAgIGlmIChhdXRvKiBtYW5hZ2VyID0gc2VsZi5fbWFuYWdlcikg
ewogICAgICAgICBtYW5hZ2VyLT5zZXRBbmltYXRpbmdGdWxsU2NyZWVuKHRydWUpOwpAQCAtNjcz
LDE2ICs2NzMsMTYgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJh
dGlvbiA9IDAuMjsKIAogLSAodm9pZCliZWdhbkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFt
ZTooQ0dSZWN0KWluaXRpYWxGcmFtZSBmaW5hbEZyYW1lOihDR1JlY3QpZmluYWxGcmFtZQogewot
ICAgIGlmIChfZnVsbFNjcmVlblN0YXRlICE9IFdlYktpdDo6V2FpdGluZ1RvRXhpdEZ1bGxTY3Jl
ZW4pCisgICAgaWYgKF9mdWxsU2NyZWVuU3RhdGUgIT0gV2FpdGluZ1RvRXhpdEZ1bGxTY3JlZW4p
CiAgICAgICAgIHJldHVybjsKLSAgICBfZnVsbFNjcmVlblN0YXRlID0gV2ViS2l0OjpFeGl0aW5n
RnVsbFNjcmVlbjsKKyAgICBfZnVsbFNjcmVlblN0YXRlID0gRXhpdGluZ0Z1bGxTY3JlZW47CiAK
ICAgICBfaW5pdGlhbEZyYW1lID0gaW5pdGlhbEZyYW1lOwogICAgIF9maW5hbEZyYW1lID0gZmlu
YWxGcmFtZTsKICAgICAKLSAgICBfaW5pdGlhbEZyYW1lLnNpemUgPSBXZWJLaXQ6OnNpemVFeHBh
bmRlZFRvU2l6ZShfaW5pdGlhbEZyYW1lLnNpemUsIENHU2l6ZU1ha2UoMSwgMSkpOwotICAgIF9m
aW5hbEZyYW1lLnNpemUgPSBXZWJLaXQ6OnNpemVFeHBhbmRlZFRvU2l6ZShfZmluYWxGcmFtZS5z
aXplLCBDR1NpemVNYWtlKDEsIDEpKTsKLSAgICBfZmluYWxGcmFtZSA9IFdlYktpdDo6c2FmZUlu
bGluZVJlY3QoX2ZpbmFsRnJhbWUsIFtfcm9vdFZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lLnNp
emUpOworICAgIF9pbml0aWFsRnJhbWUuc2l6ZSA9IHNpemVFeHBhbmRlZFRvU2l6ZShfaW5pdGlh
bEZyYW1lLnNpemUsIENHU2l6ZU1ha2UoMSwgMSkpOworICAgIF9maW5hbEZyYW1lLnNpemUgPSBz
aXplRXhwYW5kZWRUb1NpemUoX2ZpbmFsRnJhbWUuc2l6ZSwgQ0dTaXplTWFrZSgxLCAxKSk7Cisg
ICAgX2ZpbmFsRnJhbWUgPSBzYWZlSW5saW5lUmVjdChfZmluYWxGcmFtZSwgW19yb290Vmlld0Nv
bnRyb2xsZXIgdmlld10uZnJhbWUuc2l6ZSk7CiAKICAgICBpZiAoYXV0byogcGFnZSA9IFtzZWxm
Ll93ZWJWaWV3IF9wYWdlXSkKICAgICAgICAgcGFnZS0+c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBk
YXRlcyh0cnVlKTsKQEAgLTcwMCw5ICs3MDAsOSBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2
YWwga0FuaW1hdGlvbkR1cmF0aW9uID0gMC4yOwogCiAtICh2b2lkKV9jb21wbGV0ZWRFeGl0RnVs
bFNjcmVlbgogewotICAgIGlmIChfZnVsbFNjcmVlblN0YXRlICE9IFdlYktpdDo6RXhpdGluZ0Z1
bGxTY3JlZW4pCisgICAgaWYgKF9mdWxsU2NyZWVuU3RhdGUgIT0gRXhpdGluZ0Z1bGxTY3JlZW4p
CiAgICAgICAgIHJldHVybjsKLSAgICBfZnVsbFNjcmVlblN0YXRlID0gV2ViS2l0OjpOb3RJbkZ1
bGxTY3JlZW47CisgICAgX2Z1bGxTY3JlZW5TdGF0ZSA9IE5vdEluRnVsbFNjcmVlbjsKIAogICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOwpAQCAtNzM3LDcgKzczNyw3IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZh
bCBrQW5pbWF0aW9uRHVyYXRpb24gPSAwLjI7CiAgICAgICAgIEFTU0VSVCghX3JlcGFpbnRDYWxs
YmFjayk7CiAgICAgfQogCi0gICAgX3JlcGFpbnRDYWxsYmFjayA9IFdlYktpdDo6Vm9pZENhbGxi
YWNrOjpjcmVhdGUoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGZdKFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBWb2lkQ2Fs
bGJhY2s6OmNyZWF0ZShbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZl0oV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBu
dWxscHRyOwogICAgICAgICBfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpLnBhcmVudCA9IG5pbDsK
ICAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIgcmVtb3ZlRnJvbVN1cGVydmlld107CkBAIC03
NjMsNyArNzYzLDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJh
dGlvbiA9IDAuMjsKIAogLSAodm9pZCl3ZWJWaWV3RGlkUmVtb3ZlRnJvbVN1cGVydmlld1doaWxl
SW5GdWxsc2NyZWVuCiB7Ci0gICAgaWYgKF9mdWxsU2NyZWVuU3RhdGUgPT0gV2ViS2l0OjpJbkZ1
bGxTY3JlZW4gJiYgc2VsZi5fd2ViVmlldy53aW5kb3cgIT0gX3dpbmRvdy5nZXQoKSkKKyAgICBp
ZiAoX2Z1bGxTY3JlZW5TdGF0ZSA9PSBJbkZ1bGxTY3JlZW4gJiYgc2VsZi5fd2ViVmlldy53aW5k
b3cgIT0gX3dpbmRvdy5nZXQoKSkKICAgICAgICAgW3NlbGYgX2V4aXRGdWxsc2NyZWVuSW1tZWRp
YXRlbHldOwogfQogCkBAIC04NTUsMTEgKzg1NSwxMSBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50
ZXJ2YWwga0FuaW1hdGlvbkR1cmF0aW9uID0gMC4yOwogICAgIGlmIChtYW5hZ2VyKQogICAgICAg
ICBtYW5hZ2VyLT5yZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKTsKICAgICBbc2VsZiBleGl0RnVsbFNj
cmVlbl07Ci0gICAgX2Z1bGxTY3JlZW5TdGF0ZSA9IFdlYktpdDo6RXhpdGluZ0Z1bGxTY3JlZW47
CisgICAgX2Z1bGxTY3JlZW5TdGF0ZSA9IEV4aXRpbmdGdWxsU2NyZWVuOwogICAgIFtzZWxmIF9j
b21wbGV0ZWRFeGl0RnVsbFNjcmVlbl07CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dyA9IHNlbGYuX3dlYlZpZXc7CiAgICAgX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKS5wYXJlbnQg
PSBuaWw7Ci0gICAgV2ViS2l0OjpyZXBsYWNlVmlld1dpdGhWaWV3KF93ZWJWaWV3UGxhY2Vob2xk
ZXIuZ2V0KCksIHdlYlZpZXcuZ2V0KCkpOworICAgIHJlcGxhY2VWaWV3V2l0aFZpZXcoX3dlYlZp
ZXdQbGFjZWhvbGRlci5nZXQoKSwgd2ViVmlldy5nZXQoKSk7CiAgICAgaWYgKGF1dG8qIHBhZ2Ug
PSBbd2ViVmlldyBfcGFnZV0pCiAgICAgICAgIHBhZ2UtPnNldFN1cHByZXNzVmlzaWJpbGl0eVVw
ZGF0ZXMoZmFsc2UpOwogICAgIGlmIChtYW5hZ2VyKSB7CkBAIC05NjEsNyArOTYxLDcgQEAgc3Rh
dGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsKICAgICBb
X2Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlciBzZXRMb2NhdGlvbjp0ZXh0XTsKIH0KIAotLSAoV2Vi
S2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KilfbWFuYWdlcgorLSAoV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eSopX21hbmFnZXIKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IFtzZWxmLl93
ZWJWaWV3IF9wYWdlXSkKICAgICAgICAgcmV0dXJuIHBhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCk7
CkBAIC0xMDQ5LDUgKzEwNDksNCBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga0FuaW1h
dGlvbkR1cmF0aW9uID0gMC4yOwogCiBAZW5kCiAKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGIwNDlhMDViZDM4ZWJmNTkwNjI5ZTdl
YjhkOWIxYmQ1ZDQyMzNhZTguLmUyYWIyOWMyYjVjNjcxNzU4NDYzN2IzYjdhZWNjMjA4Yjc2MzY4
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtNjcsNiArNjcsOCBAQAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVT
U0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5lY3Rpb24oKSkKICNkZWZp
bmUgTUVTU0FHRV9DSEVDS19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9jZXNzLT5j
aGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCkpCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBAaW50ZXJmYWNlIE5TQXBwbGljYXRp
b24gKCkKIC0gKEJPT0wpaXNTcGVha2luZzsKIC0gKHZvaWQpc3BlYWtTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nOwpAQCAtMTA1LDggKzEwNyw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktp
dCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLSAgICAKKwogc3RhdGljIGlubGluZSBib29s
IGV4cGVjdHNMZWdhY3lJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKCkKIHsKICAgICBpZiAoTWFj
QXBwbGljYXRpb246OmlzU2FmYXJpKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA1
NTg2NWU0NTAzMmE4YTM2MTM5OGEyMjMxMWFjMmMwNWJhNTA5ZmNmLi43ZmU5MzM0YmE0ZjM1OWM3
MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0z
NSw5ICszNSwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTsKLXVzaW5nIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2U7Cit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OjpDYWNoZVN0b3JhZ2U7CisKK25hbWVzcGFjZSBXZWJLaXQgewogCiBX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFdlYkNh
Y2hlU3RvcmFnZVByb3ZpZGVyJiBwcm92aWRlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KaW5kZXggZDRiM2QxN2M4ZTFiMzdkZDAxMWFkODgw
OWY0MWJiMzFlMTI1ZTg5NS4uYTU0ZTJlOGVmZGYxZjliZTExNTM3ZGFjY2EzZTBmNmNjOTE3ZTY3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGUubW0KQEAgLTQwLDkgKzQwLDEyIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXVEY7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogc3RhdGljIE1vbm90b25pY1RpbWUgbWVkaWFUaW1lVG9D
dXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQogewotICAgIHJldHVybiBXVEY6Ok1vbm90b25p
Y1RpbWU6Om5vdygpICsgU2Vjb25kcyh0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCkpOworICAgIHJl
dHVybiBNb25vdG9uaWNUaW1lOjpub3coKSArIFNlY29uZHModCAtIENBQ3VycmVudE1lZGlhVGlt
ZSgpKTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV0tFeHBsaWNpdEJlZ2luVGltZUZs
YWcgPSBAIldLUGxhdGZvcm1DQUFuaW1hdGlvbkV4cGxpY2l0QmVnaW5UaW1lRmxhZyI7CkBAIC01
Miw3ICs1NSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdLRXhwbGljaXRCZWdpblRpbWVG
bGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRpb25FeHBsaWNpCiAKIEBpbXBsZW1lbnRhdGlvbiBX
S0FuaW1hdGlvbkRlbGVnYXRlCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aExheWVySUQ6KFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRClsYXllcklEIGxheWVyVHJlZUhv
c3Q6KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdCopbGF5ZXJUcmVlSG9zdAorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoTGF5ZXJJRDooR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKWxh
eWVySUQgbGF5ZXJUcmVlSG9zdDooV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0KilsYXllclRy
ZWVIb3N0CiB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewogICAgICAgICBfbGF5
ZXJJRCA9IGxheWVySUQ7CkBAIC05NSw3ICs5OCw2IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IFdLRXhwbGljaXRCZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRpb25FeHBsaWNp
CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RNYWMubW0KaW5kZXggNWM0MWEzOTcxMTg5YTFlMzkwMjg3NjdiYjU5OWYzY2Vl
MWRhOWRjOS4uZjA3ZDJlMTE1NTMzOGEwNmM5MzFjN2U3YWM0ZDk4ZWFlZjY3Y2FmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0KQEAgLTQ4LDYgKzQ4LDgg
QEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8
d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogQGltcGxlbWVudGF0aW9uIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QKIApAQCAtMjE2LDcgKzIxOCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgCiAgICAgLy8gU29tZSBwbHVnaW5zIG1heSBiZSBhYmxlIHRvIGZp
Z3VyZSBvdXQgdGhlIHNjcm9sbCBwb3NpdGlvbiBhbmQgaW5zZXQgb24gdGhlaXIgb3duLgogICAg
IGJvb2wgYXBwbHlDb250ZW50T2Zmc2V0ID0gdHJ1ZTsKLSAgICBpZiAoYXV0byBwbHVnaW5WaWV3
ID0gV2ViS2l0OjpXZWJQYWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUobV9wYWdlLT5tYWluRnJhbWUo
KSkpCisgICAgaWYgKGF1dG8gcGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFt
ZShtX3BhZ2UtPm1haW5GcmFtZSgpKSkKICAgICAgICAgYXBwbHlDb250ZW50T2Zmc2V0ID0gIXBs
dWdpblZpZXctPnBsdWdpbigpLT5wbHVnaW5IYW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2li
aWxpdHlIaXRUZXN0KCk7CiAKICAgICBpZiAoYXBwbHlDb250ZW50T2Zmc2V0KSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>