<?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>275193</bug_id>
          
          <creation_ts>2024-06-05 21:49:41 -0700</creation_ts>
          <short_desc>REGRESSION(279650@main): SP3 regression</short_desc>
          <delta_ts>2024-06-05 21:53:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>275036</blocked>
    
    <blocked>275173</blocked>
    
    <blocked>275085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2040013</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-06-05 21:49:41 -0700</bug_when>
    <thetext>https://commits.webkit.org/279650@main introduced a regression:
SP3 regression

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>2040017</commentid>
    <comment_count>1</comment_count>
      <attachid>471600</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-06-05 21:49:54 -0700</bug_when>
    <thetext>Created attachment 471600
REVERT of 279650@main

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>2040018</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-06-05 21:52:06 -0700</bug_when>
    <thetext>Committed 279766@main (f5df91c9a0a6): &lt;https://commits.webkit.org/279766@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 471600.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2040019</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-06-05 21:53:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/129318933&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>471600</attachid>
            <date>2024-06-05 21:49:54 -0700</date>
            <delta_ts>2024-06-05 21:52:07 -0700</delta_ts>
            <desc>REVERT of 279650@main</desc>
            <filename>bug-275193-20240606044953.patch</filename>
            <type>text/plain</type>
            <size>62905</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA5NzFmOTRkZjZjYmFjNjEyOGU0ZTBmYjljOGY1MmRkY2MxNmQwMGFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUaHUsIDYgSnVuIDIwMjQgMDQ6NDk6NTEgKzAwMDAKU3ViamVjdDogW1BBVENIXSBV
bnJldmlld2VkLCByZXZlcnRpbmcgMjc5NjUwQG1haW4sIDI3OTczOEBtYWluIGFuZAogMjc5NzQ5
QG1haW4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzUxOTMKClNQ
MyByZWdyZXNzaW9uCgpSZXZlcnRlZCBjaGFuZ2VzZXRzOgoKIlByZXBhcmUgU3RyaW5nSW1wbCBm
b3IgY29uY3VycmVudCBzd2VlcGluZyIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTAzNgpodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yNzk2NTBAbWFpbgoKIltK
U0NdIEFkZCBDb25jdXJyZW50IFN3ZWVwaW5nIExvY2tpbmciCmh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzUwODUKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjc5
NzM4QG1haW4KCiJIZWFwSXRlcmF0aW9uU2NvcGUgc2hvdWxkIHJlcXVpcmUgdGhlIEpTIEFQSSBs
b2NrIgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1MTczCmh0dHBz
Oi8vY29tbWl0cy53ZWJraXQub3JnLzI3OTc0OUBtYWluCi0tLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwIHwgMTk5ICsrKystLS0tLS0tLS0tLS0tLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaCAgIHwgIDQ1ICsrLS0KIC4u
Li9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oICB8ICAgMyArLQogLi4u
L2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggICAgICAgICAgICAgIHwgIDEwICstCiAuLi4v
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSXRlcmF0aW9uU2NvcGUuaCAgfCAgIDMgKy0KIC4uLi9o
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgICAgICAgICAgICAgICB8ICAxNSArLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAgICAgIHwgICAzICstCiAuLi4vSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oICAgfCAgIDMgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcCB8ICAxMCArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwICAgIHwgIDYzICsrLS0tLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCAgICAgIHwgICAyICsKIC4uLi9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oICB8ICAzNyArKy0tCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgICAgfCAgIDEgLQogLi4uL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCAgICAgICAgIHwgIDEzICstCiAuLi4vbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAgICAgICAgICAgfCAgIDEgLQogU291cmNlL1dURi93
dGYvQXRvbWljcy5oICAgICAgICAgICAgICAgICAgICAgIHwgIDU2ICstLS0tCiBTb3VyY2UvV1RG
L3d0Zi90ZXh0L0V4dGVybmFsU3RyaW5nSW1wbC5jcHAgICAgfCAgIDUgKy0KIFNvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmggICAgICAgICAgICAgIHwgMTIzICsrKy0tLS0tLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAgICAgfCAgIDEgLQogMjAgZmls
ZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDQ0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKaW5kZXggZWVhODMzZmVj
NGM1Li43MzAyZWI0NjNhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9j
a0RpcmVjdG9yeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJCbG9ja0RpcmVj
dG9yeUlubGluZXMuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiTWFya2VkU3BhY2VJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJT
YW1wbGVyLmgiCiAKQEAgLTM4LDEzICszNyw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1uYW1l
c3BhY2UgQmxvY2tEaXJlY3RvcnlJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOwotfQotCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KEJsb2NrRGlyZWN0b3J5KTsKIAotCiBCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3Rvcnkoc2l6
ZV90IGNlbGxTaXplKQogICAgIDogbV9jZWxsU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2Vs
bFNpemUpKQogewpAQCAtOTgsMzQgKzkyLDMwIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnVwZGF0
ZVBlcmNlbnRhZ2VPZlBhZ2VkT3V0UGFnZXMoU2ltcGxlU3RhdHMmIHN0YXRzKQogCiBNYXJrZWRC
bG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIHsK
LSAgICBMb2NrZXIgbG9ja2VyKGJpdHZlY3RvckxvY2soKSk7Ci0gICAgbV9lbXB0eUN1cnNvciA9
IChlbXB0eUJpdHMoKSAmIH5pblVzZUJpdHMoKSkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVl
KTsKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJpdChtX2VtcHR5Q3Vy
c29yLCB0cnVlKTsKICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGRhdGFMb2dMbklmKEJsb2NrRGlyZWN0b3J5SW50
ZXJuYWw6OnZlcmJvc2UsICJTZXR0aW5nIGJsb2NrICIsIG1fZW1wdHlDdXJzb3IsICIgaW4gdXNl
IChmaW5kRW1wdHlCbG9ja1RvU3RlYWwpIGZvciAiLCAqdGhpcyk7Ci0gICAgc2V0SXNJblVzZSht
X2VtcHR5Q3Vyc29yLCB0cnVlKTsKICAgICByZXR1cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNvcl07
CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JB
bGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiB7Ci0gICAgTG9ja2VyIGxvY2tl
cihiaXR2ZWN0b3JMb2NrKCkpOwogICAgIGZvciAoOzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1f
YWxsb2NhdGlvbkN1cnNvciA9ICgoY2FuQWxsb2NhdGVCdXROb3RFbXB0eUJpdHMoKSB8IGVtcHR5
Qml0cygpKSAmIH5pblVzZUJpdHMoKSkuZmluZEJpdChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vy
c29yLCB0cnVlKTsKKyAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2Jp
dHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0eSgpIHwgbV9iaXRzLmVtcHR5KCkpLmZpbmRCaXQoYWxs
b2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CiAgICAgICAgIGlmIChhbGxvY2F0b3Iu
bV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgYmxvY2tJbmRleCA9IGFsbG9j
YXRvci5tX2FsbG9jYXRpb25DdXJzb3IrKzsKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
cmVzdWx0ID0gbV9ibG9ja3NbYmxvY2tJbmRleF07Ci0gICAgICAgIHNldElzQ2FuQWxsb2NhdGVC
dXROb3RFbXB0eShibG9ja0luZGV4LCBmYWxzZSk7Ci0gICAgICAgIGRhdGFMb2dMbklmKEJsb2Nr
RGlyZWN0b3J5SW50ZXJuYWw6OnZlcmJvc2UsICJTZXR0aW5nIGJsb2NrICIsIGJsb2NrSW5kZXgs
ICIgaW4gdXNlIChmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKSBmb3IgIiwgKnRoaXMpOwotICAgICAg
ICBzZXRJc0luVXNlKGJsb2NrSW5kZXgsIHRydWUpOworICAgICAgICBzZXRJc0NhbkFsbG9jYXRl
QnV0Tm90RW1wdHkoTm9Mb2NraW5nTmVjZXNzYXJ5LCBibG9ja0luZGV4LCBmYWxzZSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9j
a0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayhKU0M6OkhlYXAmIGhlYXApCiB7CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoaGVhcCwgc3Vi
c3BhY2UoKS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzcsNyArMTI3LDYgQEAgTWFya2VkQmxvY2s6Okhh
bmRsZSogQmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2soSlNDOjpIZWFwJiBoZWFwKQog
CiB2b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9iaXR2ZWN0b3JMb2NrIH07CiAgICAgdW5zaWdu
ZWQgaW5kZXg7CiAgICAgaWYgKG1fZnJlZUJsb2NrSW5kaWNlcy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7CkBAIC0xNDgsNiArMTM3LDcgQEAgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgICAg
ICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAg
ICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYml0dmVjdG9yTG9jayB9OwogICAgICAg
ICAgICAgc3Vic3BhY2UoKS0+ZGlkUmVzaXplQml0cyhtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKICAg
ICAgICAgICAgIG1fYml0cy5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0K
QEAgLTE1OCw2ICsxNDgsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykKICAgICB9CiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigK
KyAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAogICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYp
IHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yUmVmLCAhdmVjdG9yUmVmW2luZGV4
XSk7CiAgICAgICAgIH0pOwpAQCAtMTY1LDI3ICsxNTYsMjIgQEAgdm9pZCBCbG9ja0RpcmVjdG9y
eTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgLy8gVGhpcyBpcyB0
aGUgcG9pbnQgYXQgd2hpY2ggdGhlIGJsb2NrIGxlYXJucyBvZiBpdHMgY2VsbFNpemUoKSBhbmQg
YXR0cmlidXRlcygpLgogICAgIGJsb2NrLT5kaWRBZGRUb0RpcmVjdG9yeSh0aGlzLCBpbmRleCk7
CiAgICAgCi0gICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKLSAgICBzZXRJc0VtcHR5KGluZGV4
LCB0cnVlKTsKLSAgICBkYXRhTG9nTG5JZihCbG9ja0RpcmVjdG9yeUludGVybmFsOjp2ZXJib3Nl
LCAiU2V0dGluZyBibG9jayAiLCBpbmRleCwgIiBpbiB1c2UgKGFkZEJsb2NrKSBmb3IgIiwgKnRo
aXMpOwotICAgIHNldElzSW5Vc2UoaW5kZXgsIHRydWUpOworICAgIHNldElzTGl2ZShOb0xvY2tp
bmdOZWNlc3NhcnksIGluZGV4LCB0cnVlKTsKKyAgICBzZXRJc0VtcHR5KE5vTG9ja2luZ05lY2Vz
c2FyeSwgaW5kZXgsIHRydWUpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9j
ayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgV2lsbERlbGV0ZUJsb2NrIHdpbGxEZWxldGUp
CiB7Ci0gICAgYXNzZXJ0SXNNdXRhdG9yT3JNdXRhdG9ySXNTdG9wcGVkKCk7CiAgICAgQVNTRVJU
KGJsb2NrLT5kaXJlY3RvcnkoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9ibG9ja3NbYmxvY2st
PmluZGV4KCldID09IGJsb2NrKTsKLSAgICBBU1NFUlQoaXNJblVzZShibG9jaykpOwogICAgIAog
ICAgIHN1YnNwYWNlKCktPmRpZFJlbW92ZUJsb2NrKGJsb2NrLT5pbmRleCgpKTsKICAgICAKICAg
ICBtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRyOwogICAgIG1fZnJlZUJsb2NrSW5k
aWNlcy5hcHBlbmQoYmxvY2stPmluZGV4KCkpOwogICAgIAotICAgIHJlbGVhc2VBc3NlcnRBY3F1
aXJlZEJpdFZlY3RvckxvY2soKTsKLSAgICBMb2NrZXIgbG9ja2VyKGJpdHZlY3RvckxvY2soKSk7
CiAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgTG9ja2VyIHsgbV9iaXR2ZWN0b3JMb2Nr
IH0sCiAgICAgICAgIFsmXShhdXRvIHZlY3RvclJlZikgewogICAgICAgICAgICAgdmVjdG9yUmVm
W2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOwogICAgICAgICB9KTsKQEAgLTE5NiwyMSArMTgyLDEy
IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrLCBXaWxsRGVsZXRlQmxvY2sgd2lsCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN0b3BB
bGxvY2F0aW5nKCkKIHsKLSAgICBkYXRhTG9nTG5JZihCbG9ja0RpcmVjdG9yeUludGVybmFsOjp2
ZXJib3NlLCBSYXdQb2ludGVyKHRoaXMpLCAiOiBCbG9ja0RpcmVjdG9yeTo6c3RvcEFsbG9jYXRp
bmchIik7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyks
ICI6IEJsb2NrRGlyZWN0b3J5OjpzdG9wQWxsb2NhdGluZyFcbiIpOwogICAgIG1fbG9jYWxBbGxv
Y2F0b3JzLmZvckVhY2goCiAgICAgICAgIFsmXSAoTG9jYWxBbGxvY2F0b3IqIGFsbG9jYXRvcikg
ewogICAgICAgICAgICAgYWxsb2NhdG9yLT5zdG9wQWxsb2NhdGluZygpOwogICAgICAgICB9KTsK
LQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYXNzZXJ0SXNNdXRhdG9yT3JNdXRhdG9ySXNTdG9w
cGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKCFpblVzZUJpdHNWaWV3KCkuaXNFbXB0eSgpKSkgewot
ICAgICAgICBkYXRhTG9nTG4oIk5vdCBhbGwgaW5Vc2UgYml0cyBhcmUgY2xlYXIgYXQgc3RvcEFs
bG9jYXRpbmciKTsKLSAgICAgICAgZGF0YUxvZ0xuKCp0aGlzKTsKLSAgICAgICAgZHVtcEJpdHMo
KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0jZW5kaWYK
IH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQpAQCAtMjIz
LDggKzIwMCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkK
ICAgICBtX3Vuc3dlcHRDdXJzb3IgPSAwOwogICAgIG1fZW1wdHlDdXJzb3IgPSAwOwogICAgIAot
ICAgIGFzc2VydFN3ZWVwZXJJc1N1c3BlbmRlZCgpOwotICAgIGVkZW5CaXRzKCkuY2xlYXJBbGwo
KTsKKyAgICBtX2JpdHMuZWRlbigpLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgd29yayBhZ2Fpbi4KQEAgLTIzNSw3ICsyMTEsOCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpw
cmVwYXJlRm9yQWxsb2NhdGlvbigpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN0b3BBbGxvY2F0
aW5nRm9yR29vZCgpCiB7Ci0gICAgZGF0YUxvZ0xuSWYoQmxvY2tEaXJlY3RvcnlJbnRlcm5hbDo6
dmVyYm9zZSwgUmF3UG9pbnRlcih0aGlzKSwgIjogQmxvY2tEaXJlY3Rvcnk6OnN0b3BBbGxvY2F0
aW5nRm9yR29vZCEiKTsKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRl
cih0aGlzKSwgIjogQmxvY2tEaXJlY3Rvcnk6OnN0b3BBbGxvY2F0aW5nRm9yR29vZCFcbiIpOwog
ICAgIAogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmZvckVhY2goCiAgICAgICAgIFsmXSAoTG9jYWxB
bGxvY2F0b3IqIGFsbG9jYXRvcikgewpAQCAtMjU3LDcgKzIzNCw2IEBAIHZvaWQgQmxvY2tEaXJl
Y3Rvcnk6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6cmVz
dW1lQWxsb2NhdGluZygpCiB7Ci0gICAgZGF0YUxvZ0xuSWYoQmxvY2tEaXJlY3RvcnlJbnRlcm5h
bDo6dmVyYm9zZSwgUmF3UG9pbnRlcih0aGlzKSwgIjogQmxvY2tEaXJlY3Rvcnk6OnJlc3VtZUFs
bG9jYXRpbmchIik7CiAgICAgbV9sb2NhbEFsbG9jYXRvcnMuZm9yRWFjaCgKICAgICAgICAgWyZd
IChMb2NhbEFsbG9jYXRvciogYWxsb2NhdG9yKSB7CiAgICAgICAgICAgICBhbGxvY2F0b3ItPnJl
c3VtZUFsbG9jYXRpbmcoKTsKQEAgLTI2NiwzNyArMjQyLDIzIEBAIHZvaWQgQmxvY2tEaXJlY3Rv
cnk6OnJlc3VtZUFsbG9jYXRpbmcoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtp
bmdGb3JGdWxsQ29sbGVjdGlvbigpCiB7Ci0gICAgYXNzZXJ0U3dlZXBlcklzU3VzcGVuZGVkKCk7
Ci0KICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2Yg
bWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCiAgICAgLy8gY29sbGVj
dGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1
cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRl
bi4KLSAgICBtYXJraW5nTm90RW1wdHlCaXRzKCkuY2xlYXJBbGwoKTsKLSAgICBtYXJraW5nUmV0
aXJlZEJpdHMoKS5jbGVhckFsbCgpOworICAgIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5jbGVh
ckFsbCgpOworICAgIG1fYml0cy5tYXJraW5nUmV0aXJlZCgpLmNsZWFyQWxsKCk7CiB9CiAKIHZv
aWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogewotICAgIGFzc2VydFN3ZWVwZXJJc1N1
c3BlbmRlZCgpOwotCi0gICAgYWxsb2NhdGVkQml0cygpLmNsZWFyQWxsKCk7CisgICAgbV9iaXRz
LmFsbG9jYXRlZCgpLmNsZWFyQWxsKCk7CiAgICAgCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBp
ZiAoVU5MSUtFTFkoIWluVXNlQml0c1ZpZXcoKS5pc0VtcHR5KCkpKSB7Ci0gICAgICAgIGRhdGFM
b2dMbigiQmxvY2sgaXMgaW5Vc2UgYXQgZW5kIG1hcmtpbmcuIik7Ci0gICAgICAgIGRhdGFMb2dM
bigqdGhpcyk7Ci0gICAgICAgIGR1bXBCaXRzKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotI2VuZGlmCi0KICAgICAvLyBJdCdzIHN1cnByaXNpbmcgYW5k
IGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQsIGJ1dCB0aGUgZW5kLW9mLW1hcmtpbmcgZmxpcCBk
b2VzIG5vdCBuZWVkIHRvCiAgICAgLy8ga25vdyB3aGF0IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBp
cy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFkeSBlbmNvZGVkIGluIHRoZSBtX21hcmtpbmdYWVoK
ICAgICAvLyB2ZWN0b3JzLgogICAgIAotICAgIC8vIFN3ZWVwZXIgaXMgc3VzcGVuZGVkIHNvIHdl
IGRvbid0IG5lZWQgdGhlIGxvY2sgaGVyZS4KLSAgICBlbXB0eUJpdHMoKSA9IGxpdmVCaXRzKCkg
JiB+bWFya2luZ05vdEVtcHR5Qml0cygpOwotICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHlCaXRz
KCkgPSBsaXZlQml0cygpICYgbWFya2luZ05vdEVtcHR5Qml0cygpICYgfm1hcmtpbmdSZXRpcmVk
Qml0cygpOworICAgIG1fYml0cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2JpdHMubWFy
a2luZ05vdEVtcHR5KCk7CisgICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSA9IG1f
Yml0cy5saXZlKCkgJiBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1hcmtpbmdS
ZXRpcmVkKCk7CiAKICAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAgIC8vIFRo
ZXJlIGFyZSBzb21lIGJsb2NrcyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2YgaW4gdGhl
IGxhc3QgY3ljbGUsIGJ1dCB3ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0zMDQsOTggKzI2Niw1NiBA
QCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKICAgICAgICAgLy8gZGVzdHJ1Y3Rv
cnMgYWdhaW4uIFRoYXQncyBmaW5lIGJlY2F1c2Ugb2YgemFwcGluZy4gVGhlIG9ubHkgdGltZSB3
aGVuIHdlIGNhbm5vdCBmb3JnZXQgaXMgd2hlbgogICAgICAgICAvLyB3ZSBqdXN0IGFsbG9jYXRl
IGEgYmxvY2sgb3Igd2hlbiB3ZSBtb3ZlIGEgYmxvY2sgZnJvbSBvbmUgc2l6ZSBjbGFzcyB0byBh
bm90aGVyLiBUaGF0IGRvZXNuJ3QKICAgICAgICAgLy8gaGFwcGVuIGhlcmUuCi0gICAgICAgIGRl
c3RydWN0aWJsZUJpdHMoKSA9IGxpdmVCaXRzKCk7CisgICAgICAgIG1fYml0cy5kZXN0cnVjdGli
bGUoKSA9IG1fYml0cy5saXZlKCk7CiAgICAgfQogICAgIAotICAgIGlmIChCbG9ja0RpcmVjdG9y
eUludGVybmFsOjp2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2dMbigiQml0cyBmb3IgIiwgbV9j
ZWxsU2l6ZSwgIiwgIiwgbV9hdHRyaWJ1dGVzLCAiIGFmdGVyIGVuZE1hcmtpbmc6Iik7CisgICAg
aWYgKGZhbHNlKSB7CisgICAgICAgIGRhdGFMb2coIkJpdHMgZm9yICIsIG1fY2VsbFNpemUsICIs
ICIsIG1fYXR0cmlidXRlcywgIiBhZnRlciBlbmRNYXJraW5nOlxuIik7CiAgICAgICAgIGR1bXBC
aXRzKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgfQogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpz
bmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCiB7Ci0gICAgYXNzZXJ0U3dlZXBlcklz
U3VzcGVuZGVkKCk7Ci0gICAgdW5zd2VwdEJpdHMoKSB8PSBlZGVuQml0cygpOworICAgIG1fYml0
cy51bnN3ZXB0KCkgfD0gbV9iaXRzLmVkZW4oKTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6
c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKQogewotICAgIGFzc2VydFN3ZWVwZXJJ
c1N1c3BlbmRlZCgpOwotICAgIHVuc3dlcHRCaXRzKCkgPSBsaXZlQml0cygpOworICAgIG1fYml0
cy51bnN3ZXB0KCkgPSBtX2JpdHMubGl2ZSgpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBC
bG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrVG9Td2VlcCh1bnNpZ25lZCYgdW5zd2VwdEN1cnNvcikK
K01hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKCkK
IHsKLSAgICBMb2NrZXIgbG9ja2VyKGJpdHZlY3RvckxvY2soKSk7Ci0gICAgdW5zd2VwdEN1cnNv
ciA9ICh1bnN3ZXB0Qml0cygpICYgfmluVXNlQml0cygpKS5maW5kQml0KHVuc3dlcHRDdXJzb3Is
IHRydWUpOwotICAgIGlmICh1bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICBt
X3Vuc3dlcHRDdXJzb3IgPSBtX2JpdHMudW5zd2VwdCgpLmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29y
LCB0cnVlKTsKKyAgICBpZiAobV91bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgZGF0YUxvZ0xuSWYoQmxvY2tEaXJlY3RvcnlJbnRl
cm5hbDo6dmVyYm9zZSwgIlNldHRpbmcgYmxvY2sgIiwgdW5zd2VwdEN1cnNvciwgIiBpbiB1c2Ug
KGZpbmRCbG9ja1RvU3dlZXApIGZvciAiLCAqdGhpcyk7Ci0gICAgc2V0SXNJblVzZSh1bnN3ZXB0
Q3Vyc29yLCB0cnVlKTsKLSAgICByZXR1cm4gbV9ibG9ja3NbdW5zd2VwdEN1cnNvcl07CisgICAg
cmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1cnNvcl07CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rv
cnk6OnN3ZWVwKCkKIHsKLSAgICAvLyBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgb2YgYSB3ZWlyZCBy
YWNlIHdoZXJlIHdoaWxlIHdlIGFyZSBzd2VlcGluZyBhIGJsb2NrCi0gICAgLy8gdGhlIGNvbmN1
cnJlbnQgc3dlZXBlciBjb21lcyBhbG9uZyBhbmQgdGFrZXMgdGhlIGluVXNlIGJpdCBmb3IgYSBi
bG9jawotICAgIC8vIGluIHRoZSBzYW1lIGJpdCB2ZWN0b3Igd29yZCBhcyB3ZSdyZSBjdXJyZW50
bHkgc2Nhbm5pbmcuIElmIHdlIGRpZCd0Ci0gICAgLy8gcmVmcmVzaCBvdXIgdmlldyBpbnRvIHRo
ZSB3b3JkIHdlIGNvdWxkIHNlZSBzdGFsZSBkYXRhIGFuZCB0cnkgdG8gc2NhbgotICAgIC8vIGEg
YmxvY2sgYWxyZWFkeSBpbiB1c2UuCi0KLSAgICBMb2NrZXIgbG9ja2VyKGJpdHZlY3RvckxvY2so
KSk7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNpemUoKTsg
KytpbmRleCkgewotICAgICAgICBpbmRleCA9ICh1bnN3ZXB0Qml0cygpICYgfmluVXNlQml0cygp
KS5maW5kQml0KGluZGV4LCB0cnVlKTsKLSAgICAgICAgaWYgKGluZGV4ID49IG1fYmxvY2tzLnNp
emUoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOwotICAgICAgICBBU1NFUlQoIWlzSW5Vc2UoaW5kZXgp
KTsKLSAgICAgICAgZGF0YUxvZ0xuSWYoQmxvY2tEaXJlY3RvcnlJbnRlcm5hbDo6dmVyYm9zZSwg
IlNldHRpbmcgYmxvY2sgIiwgaW5kZXgsICIgaW4gdXNlIChzd2VlcCkgZm9yICIsICp0aGlzKTsK
LSAgICAgICAgc2V0SXNJblVzZShpbmRleCwgdHJ1ZSk7Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IERyb3BMb2NrRm9yU2NvcGUgc2NvcGUobG9ja2VyKTsKKyAgICBtX2JpdHMudW5zd2VwdCgpLmZv
ckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgICAg
IGJsb2NrLT5zd2VlcChudWxscHRyKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoIWlzVW5z
d2VwdChpbmRleCkpOwotICAgICAgICBzZXRJc0luVXNlKGluZGV4LCBmYWxzZSk7Ci0gICAgfQor
ICAgICAgICB9KTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKCkKIHsKLSAgICAv
LyBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgb2YgYSB3ZWlyZCByYWNlIHdoZXJlIHdoaWxlIHdlIGFy
ZSBzd2VlcGluZyBhIGJsb2NrCi0gICAgLy8gdGhlIGNvbmN1cnJlbnQgc3dlZXBlciBjb21lcyBh
bG9uZyBhbmQgdGFrZXMgdGhlIGluVXNlIGJpdCBmb3IgYSBibG9jawotICAgIC8vIGluIHRoZSBz
YW1lIGJpdCB2ZWN0b3Igd29yZCBhcyB3ZSdyZSBjdXJyZW50bHkgc2Nhbm5pbmcuIElmIHdlIGRp
ZCd0Ci0gICAgLy8gcmVmcmVzaCBvdXIgdmlldyBpbnRvIHRoZSB3b3JkIHdlIGNvdWxkIHNlZSBz
dGFsZSBkYXRhIGFuZCB0cnkgdG8gc2NhbgotICAgIC8vIGEgYmxvY2sgYWxyZWFkeSBpbiB1c2Uu
Ci0KLSAgICBMb2NrZXIgbG9ja2VyKGJpdHZlY3RvckxvY2soKSk7Ci0gICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBp
bmRleCA9IChlbXB0eUJpdHMoKSAmIH5kZXN0cnVjdGlibGVCaXRzKCkgJiB+aW5Vc2VCaXRzKCkp
LmZpbmRCaXQoaW5kZXgsIHRydWUpOwotICAgICAgICBpZiAoaW5kZXggPj0gbV9ibG9ja3Muc2l6
ZSgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgQVNTRVJUKCFpc0luVXNlKGluZGV4
KSk7Ci0gICAgICAgIGRhdGFMb2dMbklmKEJsb2NrRGlyZWN0b3J5SW50ZXJuYWw6OnZlcmJvc2Us
ICJTZXR0aW5nIGJsb2NrICIsIGluZGV4LCAiIGluIHVzZSAoc2hyaW5rKSBmb3IgIiwgKnRoaXMp
OwotICAgICAgICBzZXRJc0luVXNlKGluZGV4LCB0cnVlKTsKLSAgICAgICAgewotICAgICAgICAg
ICAgRHJvcExvY2tGb3JTY29wZSBzY29wZShsb2NrZXIpOworICAgIChtX2JpdHMuZW1wdHkoKSAm
IH5tX2JpdHMuZGVzdHJ1Y3RpYmxlKCkpLmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6
ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBtYXJrZWRTcGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nr
c1tpbmRleF0pOwotICAgICAgICB9Ci0gICAgICAgIHNldElzSW5Vc2UoaW5kZXgsIGZhbHNlKTsK
LSAgICB9CisgICAgICAgIH0pOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vu
c3dlcHQoKQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIGFzc2VydElzTXV0YXRvck9yTXV0YXRvcklzU3RvcHBlZCgpOwotCi0gICAgaWYgKHVuc3dl
cHRCaXRzVmlldygpLmlzRW1wdHkoKSkKKyAgICAKKyAgICBpZiAobV9iaXRzLnVuc3dlcHQoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJBc3NlcnRpb24g
ZmFpbGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpAQCAtNDAzLDI0
ICszMjMsNiBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQoKQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEJsb2NrRGlyZWN0b3J5OjpkaWRGaW5pc2hV
c2luZ0Jsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkKLXsKLSAgICBMb2NrZXIgbG9j
a2VyKGJpdHZlY3RvckxvY2soKSk7Ci0gICAgZGlkRmluaXNoVXNpbmdCbG9jayhsb2NrZXIsIGhh
bmRsZSk7Ci19Ci0KLXZvaWQgQmxvY2tEaXJlY3Rvcnk6OmRpZEZpbmlzaFVzaW5nQmxvY2soQWJz
dHJhY3RMb2NrZXImLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgaWYgKFVO
TElLRUxZKCFpc0luVXNlKGhhbmRsZSkpKSB7Ci0gICAgICAgIGRhdGFMb2dMbigiRmluaXNoIHVz
aW5nIG9uIGEgYmxvY2sgdGhhdCdzIG5vdCBpbiB1c2U6ICIsIGhhbmRsZS0+aW5kZXgoKSk7Ci0g
ICAgICAgIGR1bXBCaXRzKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotCi0gICAgZGF0YUxvZ0xuSWYoQmxvY2tEaXJlY3RvcnlJbnRlcm5hbDo6dmVyYm9z
ZSwgIlNldHRpbmcgYmxvY2sgIiwgaGFuZGxlLT5pbmRleCgpLCAiIG5vdCBpbiB1c2UgKGRpZEZp
bmlzaFVzaW5nQmxvY2spIGZvciAiLCAqdGhpcyk7Ci0gICAgc2V0SXNJblVzZShoYW5kbGUsIGZh
bHNlKTsKLX0KLQogUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IEJs
b2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UoKQogewogICAgIGNsYXNz
IFRhc2sgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7
CkBAIC00MzQsOCArMzM2LDggQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IEJsb2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RpcmVjdG9yeS5iaXR2ZWN0b3JMb2NrKCkg
fTsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tYXJraW5nTm90RW1wdHlCaXRz
KCkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2lu
Z05vdEVtcHR5KCkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChtX2lu
ZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIG1f
ZG9uZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NDQsOCAr
MzQ2LDkgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IEJsb2Nr
RGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAgfQogICAgICAgICAKICAg
ICBwcml2YXRlOgotICAgICAgICBCbG9ja0RpcmVjdG9yeSYgbV9kaXJlY3Rvcnk7Ci0gICAgICAg
IHNpemVfdCBtX2luZGV4IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kaXJlY3RvcnkubV9iaXR2ZWN0
b3JMb2NrKSB7IDAgfTsKKyAgICAgICAgQmxvY2tEaXJlY3RvcnkmIG1fZGlyZWN0b3J5IFdURl9H
VUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spIHsgMCB9OworICAgICAgICBMb2NrIG1fbG9jazsKICAgICAgICAg
Ym9vbCBtX2RvbmUgeyBmYWxzZSB9OwogICAgIH07CiAgICAgCkBAIC00NjEsNiArMzY0LDcgQEAg
dm9pZCBCbG9ja0RpcmVjdG9yeTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKIHsKICAgICB1
bnNpZ25lZCBtYXhOYW1lTGVuZ3RoID0gMDsKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUo
CisgICAgICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKICAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVm
LCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0odmVjdG9yUmVm
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKQEAgLTQ2OCw2
ICszNzIsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0
KQogICAgICAgICB9KTsKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAg
ICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKICAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25z
dCBjaGFyKiBuYW1lKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAi
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4o
bmFtZSk7IGktLTspCkBAIC00OTEsMTcgKzM5Niw1IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6Omlz
RnJlZUxpc3RlZENlbGwoY29uc3Qgdm9pZCogdGFyZ2V0KQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotdm9pZCBCbG9ja0RpcmVjdG9yeTo6YXNzZXJ0SXNNdXRh
dG9yT3JNdXRhdG9ySXNTdG9wcGVkKCkgY29uc3QKLXsKLSAgICBhdXRvJiBoZWFwID0gbWFya2Vk
U3BhY2UoKS5oZWFwKCk7Ci0gICAgQVNTRVJUKGhlYXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpIHx8IGhlYXAud29ybGRJc1N0b3BwZWQoKSk7Ci19Ci0KLXZvaWQgQmxvY2tE
aXJlY3Rvcnk6OmFzc2VydFN3ZWVwZXJJc1N1c3BlbmRlZCgpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0
SXNNdXRhdG9yT3JNdXRhdG9ySXNTdG9wcGVkKCk7Ci19Ci0jZW5kaWYKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRl
eCA5NDRlNTRiMWNhOWEuLmI5OTg4ZjMyZmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODEsOCArODEsOCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzRnJlZUxpc3RlZENlbGwoY29uc3Qgdm9pZCogdGFyZ2V0KTsKIAotICAgIGlubGluZSB2
b2lkIGZvckVhY2hCbG9jayhjb25zdCBzdGQ6Omludm9jYWJsZTxNYXJrZWRCbG9jazo6SGFuZGxl
Kj4gYXV0byYpOwotICAgIGlubGluZSB2b2lkIGZvckVhY2hOb3RFbXB0eUJsb2NrKGNvbnN0IHN0
ZDo6aW52b2NhYmxlPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBhdXRvJik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE5vdEVtcHR5QmxvY2soY29u
c3QgRnVuY3RvciYpOwogICAgIAogICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpI
YW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UoKTsKICAgICAKQEAgLTkzLDMz
ICs5MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVBlcmNlbnRhZ2VPZlBhZ2VkT3V0
UGFnZXMoV1RGOjpTaW1wbGVTdGF0cyYpOwogICAgIAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
dm9pZCBhc3NlcnRJc011dGF0b3JPck11dGF0b3JJc1N0b3BwZWQoKSBjb25zdCBXVEZfQVNTRVJU
U19BQ1FVSVJFRF9TSEFSRURfTE9DSyhtX2JpdHZlY3RvckxvY2spOwotICAgIHZvaWQgYXNzZXJ0
U3dlZXBlcklzU3VzcGVuZGVkKCkgY29uc3QgV1RGX0FTU0VSVFNfQUNRVUlSRURfTE9DSyhtX2Jp
dHZlY3RvckxvY2spOwotI2Vsc2UKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNNdXRh
dG9yT3JNdXRhdG9ySXNTdG9wcGVkKCkgY29uc3QgV1RGX0FTU0VSVFNfQUNRVUlSRURfU0hBUkVE
X0xPQ0sobV9iaXR2ZWN0b3JMb2NrKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0
U3dlZXBlcklzU3VzcGVuZGVkKCkgY29uc3QgV1RGX0FTU0VSVFNfQUNRVUlSRURfTE9DSyhtX2Jp
dHZlY3RvckxvY2spIHsgfQotI2VuZGlmCi0gICAgLy8gVGhpcyBmZWVscyBsaWtlIGl0IHNob3Vs
ZG4ndCBiZSBuZWVkZWQgdG8gZ28gZnJvbSBhc3NlcnRJc011dGF0b3JPck11dGF0b3JJc1N0b3Bw
ZWQgLT4gTG9ja2VyIGJ1dCBDbGFuZydzIHNlZW1zIHRvIHRoaW5rIGl0IGlzIG5lY2Vzc2FyeQot
ICAgIC8vIHRvIHJlbGVhc2UgdGhlIGNhcGFiaWxpdHkuCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHJlbGVhc2VBc3NlcnRBY3F1aXJlZEJpdFZlY3RvckxvY2soKSBjb25zdCBXVEZfUkVMRUFTRVNf
U0hBUkVEX0NBUEFCSUxJVFkobV9iaXR2ZWN0b3JMb2NrKSBXVEZfSUdOT1JFU19USFJFQURfU0FG
RVRZX0FOQUxZU0lTIHsgfQotCiAgICAgTG9jayYgYml0dmVjdG9yTG9jaygpIFdURl9SRVRVUk5T
X0xPQ0sobV9iaXR2ZWN0b3JMb2NrKSB7IHJldHVybiBtX2JpdHZlY3RvckxvY2s7IH0KIAogI2Rl
ZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxC
aXROYW1lKSAgICAgXAotICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4
KSBjb25zdCBXVEZfUkVRVUlSRVNfU0hBUkVEX0xPQ0sobV9iaXR2ZWN0b3JMb2NrKSB7IHJldHVy
biBtX2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKLSAgICBib29sIGlzICMj
IGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCBXVEZfUkVR
VUlSRVNfU0hBUkVEX0xPQ0sobV9iaXR2ZWN0b3JMb2NrKSB7IHJldHVybiBpcyAjIyBjYXBpdGFs
Qml0TmFtZShibG9jay0+aW5kZXgoKSk7IH0gXAotICAgIEJsb2NrRGlyZWN0b3J5Qml0czo6Qmxv
Y2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEJsb2NrRGlyZWN0b3J5Qml0czo6S2luZDo6Y2FwaXRh
bEJpdE5hbWU+IGxvd2VyQml0TmFtZSAjIyBCaXRzVmlldygpIGNvbnN0IFdURl9SRVFVSVJFU19T
SEFSRURfTE9DSyhtX2JpdHZlY3RvckxvY2spIHsgcmV0dXJuIG1fYml0cy5sb3dlckJpdE5hbWUo
KTsgfSBcCi0gICAgXAotICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2JpdHZlY3RvckxvY2spIHsgbV9i
aXRzLnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7IH0gXAotICAgIHZvaWQg
c2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wg
dmFsdWUpIFdURl9SRVFVSVJFU19MT0NLKG1fYml0dmVjdG9yTG9jaykgeyBzZXRJcyAjIyBjYXBp
dGFsQml0TmFtZShibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9IFwKLSAgICBCbG9ja0RpcmVjdG9y
eUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEJsb2NrRGlyZWN0b3J5Qml0czo6S2lu
ZDo6Y2FwaXRhbEJpdE5hbWU+IGxvd2VyQml0TmFtZSAjIyBCaXRzKCkgV1RGX1JFUVVJUkVTX0xP
Q0sobV9iaXR2ZWN0b3JMb2NrKSB7IHJldHVybiBtX2JpdHMubG93ZXJCaXROYW1lKCk7IH0KLQor
ICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5pcyAjIyBjYXBpdGFsQml0TmFtZShpbmRl
eCk7IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlz
ICMjIGNhcGl0YWxCaXROYW1lKGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IFwKKyAgICB2b2lk
IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSB7IG1fYml0cy5zZXRJcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCwg
dmFsdWUpOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVl
KSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVl
KTsgfQogICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJ
VF9BQ0NFU1NPUlMpCiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0
IEZ1bmMmIGZ1bmMpIFdURl9SRVFVSVJFU19MT0NLKG1fYml0dmVjdG9yTG9jaykKKyAgICB2b2lk
IGZvckVhY2hCaXRWZWN0b3IoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jJiBmdW5j
KQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5h
bWUsIGNhcGl0YWxCaXROYW1lKSBcCiAgICAgICAgIGZ1bmMobV9iaXRzLmxvd2VyQml0TmFtZSgp
KTsKQEAgLTEyOCw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29uc3Qg
RnVuYyYgZnVuYykgY29uc3QgV1RGX1JFUVVJUkVTX1NIQVJFRF9MT0NLKG1fYml0dmVjdG9yTG9j
aykKKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBBYnN0cmFjdExvY2tl
ciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklU
X0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKICAgICAgICAgZnVuYyht
X2JpdHMubG93ZXJCaXROYW1lKCksICNjYXBpdGFsQml0TmFtZSk7CkBAIC0xNDYsMTggKzEzMSwx
NCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5Qmxv
Y2tUb1N0ZWFsKCk7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrVG9T
d2VlcCgpIHsgcmV0dXJuIGZpbmRCbG9ja1RvU3dlZXAobV91bnN3ZXB0Q3Vyc29yKTsgfQotICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1RvU3dlZXAodW5zaWduZWQmIHVuc3dlcHRD
dXJzb3IpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1RvU3dlZXAoKTsKICAg
ICAKLSAgICB2b2lkIGRpZEZpbmlzaFVzaW5nQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwot
ICAgIHZvaWQgZGlkRmluaXNoVXNpbmdCbG9jayhBYnN0cmFjdExvY2tlciYsIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2JpdHZlY3RvckxvY2spOwotCiAgICAgU3Vi
c3BhY2UqIHN1YnNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzcGFjZTsgfQogICAgIE1hcmtl
ZFNwYWNlJiBtYXJrZWRTcGFjZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwotICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRh
RmlsZSgpKSBXVEZfUkVRVUlSRVNfU0hBUkVEX0xPQ0sobV9iaXR2ZWN0b3JMb2NrKTsKLQorICAg
IHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElzb0NlbGxTZXQ7CiAgICAgZnJpZW5kIGNsYXNzIExv
Y2FsQWxsb2NhdG9yOwpAQCAtMTczLDcgKzE1NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNdXRh
dG9yIHVzZXMgdGhpcyB0byBndWFyZCByZXNpemluZyB0aGUgYml0dmVjdG9ycy4gVGhvc2UgdGhp
bmdzIGluIHRoZSBHQyB0aGF0IG1heSBydW4KICAgICAvLyBjb25jdXJyZW50bHkgdG8gdGhlIG11
dGF0b3IgbXVzdCBsb2NrIHRoaXMgd2hlbiBhY2Nlc3NpbmcgdGhlIGJpdHZlY3RvcnMuCi0gICAg
QmxvY2tEaXJlY3RvcnlCaXRzIG1fYml0cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYml0dmVjdG9y
TG9jayk7IC8vIERvbid0IGFjY2VzcyB0aGlzIGRpcmVjdGx5IHVzZSBvbmUgb2YgdGhlIGFjY2Vz
c29ycyBhYm92ZS4KKyAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOwogICAgIExvY2sgbV9i
aXR2ZWN0b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2NrOwogICAgIENlbGxB
dHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmgKaW5kZXggY2FiOGI2OTc4NTMxLi40YzdiZDBhZWJmOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCkBA
IC0zNCwxMyArMzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgRk9SX0VBQ0hfQkxP
Q0tfRElSRUNUT1JZX0JJVChtYWNybykgXAogICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBz
ZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAgbWFj
cm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxp
dmUgb2JqZWN0cyBhbmQgYXJlIG5vdCBmcmVlIGxpc3RlZC4gKi8gXAorICAgIG1hY3JvKGVtcHR5
LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVj
dHMuICovIFwKICAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKICAgICBtYWNybyhj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1v
cmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCiAgICAgbWFjcm8o
ZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCiAgICAgbWFjcm8oZWRlbiwgRWRlbikg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUg
bGFzdCBHQy4gKi9cCiAgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIu
ICovXAotICAgIG1hY3JvKGluVXNlLCBJblVzZSkgLyogVGhpcyB0ZWxscyB1cyBpZiBhIGJsb2Nr
IGlzIGN1cnJlbnRseSBiZWluZyBhbGxvY2F0ZWQgZnJvbSBvciBzd2VwdC4gVGhpcyBhY3RzIGxp
a2UgYSBsb2NrIGJpdC4gKi9cCiAgICAgXAogICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJp
bmcgbWFya2luZy4gKi9cCiAgICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1w
dHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgK
aW5kZXggMGUyNTNjZmU3NmVkLi42ODRiMWE4ZDg2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCkBAIC0zMSwxOSArMzEsMTcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JF
YWNoQmxvY2soY29uc3Qgc3RkOjppbnZvY2FibGU8TWFya2VkQmxvY2s6OkhhbmRsZSo+IGF1dG8m
IGZ1bmN0b3IpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tE
aXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGFz
c2VydElzTXV0YXRvck9yTXV0YXRvcklzU3RvcHBlZCgpOwotICAgIGxpdmVCaXRzVmlldygpLmZv
ckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLmxpdmUoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBb
Jl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0p
OwogICAgICAgICB9KTsKIH0KIAotaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hO
b3RFbXB0eUJsb2NrKGNvbnN0IHN0ZDo6aW52b2NhYmxlPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBh
dXRvJiBmdW5jdG9yKQordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJs
b2NrRGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewotICAgIGFzc2VydElzTXV0YXRvck9yTXV0YXRvcklzU3RvcHBlZCgpOwotICAgIG1hcmtp
bmdOb3RFbXB0eUJpdHNWaWV3KCkuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMubWFya2luZ05v
dEVtcHR5KCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAg
ICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSXRlcmF0aW9uU2NvcGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJdGVyYXRpb25TY29wZS5oCmluZGV4IGE2NGEz
YWRkODU1Ny4uNzAwYzk2NjBjMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSXRlcmF0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwSXRlcmF0aW9uU2NvcGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw2IEBAIHByaXZhdGU6CiBpbmxpbmUgSGVh
cEl0ZXJhdGlvblNjb3BlOjpIZWFwSXRlcmF0aW9uU2NvcGUoSlNDOjpIZWFwJiBoZWFwKQogICAg
IDogbV9oZWFwKGhlYXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShoZWFwLnZtKCkuY3Vy
cmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSwgIlRyeWluZyB0byBpdGVyYXRlIHRoZSBKUyBo
ZWFwIHdpdGhvdXQgdGhlIEFQSSBsb2NrIik7CiAgICAgbV9oZWFwLndpbGxTdGFydEl0ZXJhdGlu
ZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmNwcAppbmRleCBjZmFlMDIzMjc2ODYuLjNmYTZiOTM1M2Q5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCkBAIC0xMjQs
MTkgKzEyNCw4IEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jayhWTSYg
dm0sIFN3ZWVwVHJpZ2dlciB0cmlnZ2VyKQogICAgIGlmIChibG9jaykgewogICAgICAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyR0Modm0pOwogICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0cik7
Ci0KLSAgICAgICAgYm9vbCBibG9ja0lzRnJlZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHRyaWdn
ZXIgPT0gU3dlZXBUcmlnZ2VyOjpUaW1lcikgewotICAgICAgICAgICAgaWYgKCFibG9jay0+aXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIGJsb2NrLT5zaHJpbmsoKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHZtLmhlYXAub2JqZWN0U3BhY2UoKS5mcmVlQmxvY2soYmxv
Y2spOwotICAgICAgICAgICAgICAgIGJsb2NrSXNGcmVlZCA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWJsb2NrSXNGcmVlZCkKLSAgICAgICAgICAgIG1f
Y3VycmVudERpcmVjdG9yeS0+ZGlkRmluaXNoVXNpbmdCbG9jayhibG9jayk7CisgICAgICAgIGlm
ICh0cmlnZ2VyID09IFN3ZWVwVHJpZ2dlcjo6VGltZXIpCisgICAgICAgICAgICB2bS5oZWFwLm9i
amVjdFNwYWNlKCkuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5k
ZXggM2YyOGYwODFlZTY4Li41MjU1ZTJlZjIxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC01OSw5ICs1OSw4IEBAIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBtX2RpcmVjdG9yeS5hc3NlcnRJc011dGF0b3JP
ck11dGF0b3JJc1N0b3BwZWQoKTsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKLSAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1hcmtpbmdOb3RFbXB0eUJp
dHNWaWV3KCkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRzOworICAgICAgICAgICAgYXV0byBiaXRz
ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9ibG9ja3NX
aXRoQml0czsKICAgICAgICAgICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRleCwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXpl
KCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggZWM4N2RkNTlmMTU5Li45MTUy
NzQwYjY5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElu
bGluZXMuaApAQCAtNzgsOCArNzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJ
c29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIEJs
b2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkgPSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5OwotICAgIGRp
cmVjdG9yeS5hc3NlcnRJc011dGF0b3JPck11dGF0b3JJc1N0b3BwZWQoKTsKLSAgICAoZGlyZWN0
b3J5Lm1hcmtpbmdOb3RFbXB0eUJpdHNWaWV3KCkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNo
U2V0Qml0KAorICAgIChkaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9j
a3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdICh1bnNpZ25lZCBibG9ja0lu
ZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9y
eS5tX2Jsb2Nrc1tibG9ja0luZGV4XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWxBbGxvY2F0b3IuY3BwCmluZGV4IDBiY2VmNjhmNjkwMi4uN2NiNjEzZjZlZGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCkBAIC0yMjQs
OCArMjI0LDYgQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2ssIHNpemVfdCBjZWxsU2l6ZSkKIHsKICAgICBBU1NFUlQoYmxvY2sp
OwogICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKLSAgICBtX2RpcmVjdG9yeS0+
YXNzZXJ0SXNNdXRhdG9yT3JNdXRhdG9ySXNTdG9wcGVkKCk7Ci0gICAgQVNTRVJUKG1fZGlyZWN0
b3J5LT5pc0luVXNlKGJsb2NrKSk7CiAgICAgCiAgICAgYmxvY2stPnN3ZWVwKCZtX2ZyZWVMaXN0
KTsKICAgICAKQEAgLTIzNSw4ICsyMzMsOCBAQCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6dHJ5QWxs
b2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgc2l6ZV90IGNlbGxTaXplKQogICAg
ICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKICAgICAgICAgYmxvY2stPnVuc3dl
ZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwogICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVM
aXN0ZWQoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9kaXJlY3RvcnktPmlzRW1wdHkoYmxvY2spKTsK
LSAgICAgICAgQVNTRVJUKCFtX2RpcmVjdG9yeS0+aXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KGJs
b2NrKSk7CisgICAgICAgIEFTU0VSVCghbV9kaXJlY3RvcnktPmlzRW1wdHkoTm9Mb2NraW5nTmVj
ZXNzYXJ5LCBibG9jaykpOworICAgICAgICBBU1NFUlQoIW1fZGlyZWN0b3J5LT5pc0NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkoTm9Mb2NraW5nTmVjZXNzYXJ5LCBibG9jaykpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC0yNDcsOSArMjQ1LDcgQEAgdm9pZCogTG9jYWxB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIHNpemVf
dCBjZWxsU2l6ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwgY2VsbFNpemUpOwotCi0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBtYWtlIHRoaXMgd29yayB3aXRoIHRocmVhZCBzYWZldHkgYW5h
bHlzaXMuCi0gICAgbV9kaXJlY3RvcnktPm1fYml0cy5zZXRJc0VkZW4obV9jdXJyZW50QmxvY2st
PmluZGV4KCksIHRydWUpOworICAgIG1fZGlyZWN0b3J5LT5zZXRJc0VkZW4oTm9Mb2NraW5nTmVj
ZXNzYXJ5LCBtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9kaXJlY3RvcnktPm1hcmtlZFNw
YWNlKCkuZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4
IDYxOGUxMTMxMTViOC4uNmUyMzJlMzhkMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5LDcgKzEwOSw2IEBAIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChtX2lzRnJlZUxpc3RlZCk7CiAgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKLSAgICBt
X2RpcmVjdG9yeS0+ZGlkRmluaXNoVXNpbmdCbG9jayh0aGlzKTsKIH0KIAogdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYgZnJlZUxpc3QpCkBA
IC0xMTgsOCArMTE3LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGlu
Zyhjb25zdCBGcmVlTGlzdCYgZnJlZUxpc3QpCiAgICAgCiAgICAgaWYgKE1hcmtlZEJsb2NrSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmchXG4iKTsKLSAgICBtX2RpcmVjdG9yeS0+
YXNzZXJ0SXNNdXRhdG9yT3JNdXRhdG9ySXNTdG9wcGVkKCk7Ci0gICAgQVNTRVJUKCFtX2RpcmVj
dG9yeS0+aXNBbGxvY2F0ZWQodGhpcykpOworICAgIEFTU0VSVCghZGlyZWN0b3J5KCktPmlzQWxs
b2NhdGVkKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhpcykpOwogCiAgICAgaWYgKCFpc0ZyZWVMaXN0
ZWQoKSkgewogICAgICAgICBpZiAoTWFya2VkQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTE1
NiwzNyArMTU0LDI5IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmco
Y29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogICAgICAgICB9KTsKICAgICAKICAgICBtX2lzRnJl
ZUxpc3RlZCA9IGZhbHNlOwotICAgIGRpcmVjdG9yeSgpLT5kaWRGaW5pc2hVc2luZ0Jsb2NrKHRo
aXMpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXpl
KCkKIHsKLSAgICAvLyBDb25jdXJyZW50IHN3ZWVwZXIgaXMgc2h1dCBkb3duIGF0IHRoaXMgcG9p
bnQuCi0gICAgbV9kaXJlY3RvcnktPmFzc2VydFN3ZWVwZXJJc1N1c3BlbmRlZCgpOwotICAgIG1f
ZGlyZWN0b3J5LT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7Ci0gICAgbV9kaXJlY3Rvcnkt
PnNldElzRGVzdHJ1Y3RpYmxlKHRoaXMsIHRydWUpOworICAgIGRpcmVjdG9yeSgpLT5zZXRJc0Fs
bG9jYXRlZChOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIGZhbHNlKTsKKyAgICBkaXJlY3Rvcnko
KS0+c2V0SXNEZXN0cnVjdGlibGUoTm9Mb2NraW5nTmVjZXNzYXJ5LCB0aGlzLCB0cnVlKTsKICAg
ICBibG9ja0hlYWRlcigpLm1fbWFya3MuY2xlYXJBbGwoKTsKICAgICBibG9jaygpLmNsZWFySGFz
QW55TWFya2VkKCk7CiAgICAgYmxvY2tIZWFkZXIoKS5tX21hcmtpbmdWZXJzaW9uID0gaGVhcCgp
LT5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCk7CiAgICAgbV93ZWFrU2V0Lmxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCk7CiAgICAgYmxvY2tIZWFkZXIoKS5tX25ld2x5QWxsb2NhdGVkLmNsZWFy
QWxsKCk7CiAgICAgYmxvY2tIZWFkZXIoKS5tX25ld2x5QWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAo
KS0+b2JqZWN0U3BhY2UoKS5uZXdseUFsbG9jYXRlZFZlcnNpb24oKTsKLSAgICBtX2RpcmVjdG9y
eS0+c2V0SXNJblVzZSh0aGlzLCB0cnVlKTsKICAgICBzd2VlcChudWxscHRyKTsKIH0KIAogdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKEZyZWVMaXN0JiBmcmVlTGlz
dCkKIHsKLSAgICBCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdGhpcy0+ZGlyZWN0b3J5KCk7
Ci0gICAgZGlyZWN0b3J5LT5hc3NlcnRTd2VlcGVySXNTdXNwZW5kZWQoKTsKICAgICB7CiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBibG9ja0hlYWRlcigpLm1fbG9jayB9OwogICAgICAgICAKICAg
ICAgICAgaWYgKE1hcmtlZEJsb2NrSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9j
YXRpbmchXG4iKTsKLQotCi0gICAgICAgIEFTU0VSVCghZGlyZWN0b3J5LT5pc0FsbG9jYXRlZCh0
aGlzKSk7CisgICAgICAgIEFTU0VSVCghZGlyZWN0b3J5KCktPmlzQWxsb2NhdGVkKE5vTG9ja2lu
Z05lY2Vzc2FyeSwgdGhpcykpOwogICAgICAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmICghYmxvY2soKS5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKSB7CkBA
IC0xOTgsOCArMTg4LDYgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0
aW5nKEZyZWVMaXN0JiBmcmVlTGlzdCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGRpcmVjdG9y
eS0+c2V0SXNJblVzZSh0aGlzLCB0cnVlKTsKLQogICAgIC8vIFJlLWNyZWF0ZSBvdXIgZnJlZSBs
aXN0IGZyb20gYmVmb3JlIHN0b3BwaW5nIGFsbG9jYXRpb24uIE5vdGUgdGhhdCB0aGlzIG1heSBy
ZXR1cm4gYW4gZW1wdHkKICAgICAvLyBmcmVlbGlzdCwgaW4gd2hpY2ggY2FzZSB0aGUgYmxvY2sg
d2lsbCBzdGlsbCBiZSBNYXJrZWQhCiAgICAgc3dlZXAoJmZyZWVMaXN0KTsKQEAgLTIxNCwxMyAr
MjAyLDkgQEAgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQmxvY2tEaXJlY3Rvcnkq
IGRpcmVjdG9yeSA9IGhhbmRsZSgpLmRpcmVjdG9yeSgpOwotICAgIGJvb2wgaXNBbGxvY2F0ZWQ7
Ci0gICAgewotICAgICAgICBMb2NrZXIgYml0TG9ja2VyIHsgZGlyZWN0b3J5LT5iaXR2ZWN0b3JM
b2NrKCkgfTsKLSAgICAgICAgaXNBbGxvY2F0ZWQgPSBkaXJlY3RvcnktPmlzQWxsb2NhdGVkKCZo
YW5kbGUoKSk7Ci0gICAgfQogCi0gICAgaWYgKGlzQWxsb2NhdGVkIHx8ICFtYXJrc0NvbnZleUxp
dmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikpIHsKKyAgICBpZiAoaGFuZGxlKCku
ZGlyZWN0b3J5KCktPmlzQWxsb2NhdGVkKExvY2tlciB7IGRpcmVjdG9yeS0+Yml0dmVjdG9yTG9j
aygpIH0sICZoYW5kbGUoKSkKKyAgICAgICAgfHwgIW1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdN
YXJraW5nKG1hcmtpbmdWZXJzaW9uKSkgewogICAgICAgICBpZiAoTWFya2VkQmxvY2tJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogQ2xl
YXJpbmcgbWFya3Mgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLlxuIik7CiAgICAgICAgIC8v
IFdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBibG9jayBpcyBmdWxsIGFuZCBpcyBhbHJlYWR5IHJl
Y29nbml6ZWQgYXMgc3VjaCwgb3IgdGhhdCB0aGUKQEAgLTI1OSw4ICsyNDMsNyBAQCB2b2lkIE1h
cmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0aHJlYWQtc2FmZXR5LWFuYWx5c2lz
IgogI2VuZGlmCiAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJr
IGFueSBvYmplY3QgaW4gdGhpcyBibG9jay4KLSAgICBMb2NrZXIgYml0TG9ja2VyIHsgZGlyZWN0
b3J5LT5iaXR2ZWN0b3JMb2NrKCkgfTsKLSAgICBkaXJlY3RvcnktPnNldElzTWFya2luZ05vdEVt
cHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgZGlyZWN0b3J5LT5zZXRJc01hcmtpbmdOb3RFbXB0
eShMb2NrZXIgeyBkaXJlY3RvcnktPmJpdHZlY3RvckxvY2soKSB9LCAmaGFuZGxlKCksIHRydWUp
OwogI2lmIGRlZmluZWQoX19jbGFuZ19fKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAog
I2VuZGlmCkBAIC0zMTQsOSArMjk3LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRD
b25zdW1lRnJlZUxpc3QoKQogICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpOwogICAgIEFTU0VSVChp
c0ZyZWVMaXN0ZWQoKSk7CiAgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKLSAgICBMb2NrZXIg
Yml0TG9ja2VyKG1fZGlyZWN0b3J5LT5iaXR2ZWN0b3JMb2NrKCkpOwotICAgIG1fZGlyZWN0b3J5
LT5zZXRJc0FsbG9jYXRlZCh0aGlzLCB0cnVlKTsKLSAgICBtX2RpcmVjdG9yeS0+ZGlkRmluaXNo
VXNpbmdCbG9jayhiaXRMb2NrZXIsIHRoaXMpOworICAgIGRpcmVjdG9yeSgpLT5zZXRJc0FsbG9j
YXRlZChOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIHRydWUpOwogfQogCiBzaXplX3QgTWFya2Vk
QmxvY2s6Om1hcmtDb3VudCgpCkBAIC0zMzIsOCArMzEzLDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6
Y2xlYXJIYXNBbnlNYXJrZWQoKQogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQog
ewogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSBoYW5kbGUoKS5kaXJlY3RvcnkoKTsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgZGlyZWN0b3J5LT5iaXR2ZWN0b3JMb2NrKCkgfTsKLSAgICBk
aXJlY3RvcnktPnNldElzTWFya2luZ1JldGlyZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICBkaXJl
Y3RvcnktPnNldElzTWFya2luZ1JldGlyZWQoTG9ja2VyIHsgZGlyZWN0b3J5LT5iaXR2ZWN0b3JM
b2NrKCkgfSwgJmhhbmRsZSgpLCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpyZW1vdmVGcm9tRGlyZWN0b3J5KCkKQEAgLTQwMiw4ICszODIsOCBAQCB2b2lkIE1hcmtlZEJs
b2NrOjphc3NlcnRWYWxpZENlbGwoVk0mIHZtLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAg
Q29tbWFQcmludGVyIGNvbW1hOwotICAgIExvY2tlciBsb2NrZXIgeyBkaXJlY3RvcnkoKS0+Yml0
dmVjdG9yTG9jaygpIH07CiAgICAgZGlyZWN0b3J5KCktPmZvckVhY2hCaXRWZWN0b3JXaXRoTmFt
ZSgKKyAgICAgICAgTG9ja2VyIHsgZGlyZWN0b3J5KCktPmJpdHZlY3RvckxvY2soKSB9LAogICAg
ICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgbmFtZSwgIjoiX3MsIHZlY3RvclJlZltpbmRleCgpXSA/ICJZRVMi
X3MgOiAibm8iX3MpOwogICAgICAgICB9KTsKQEAgLTQxNywyMyArMzk3LDE4IEBAIFN1YnNwYWNl
KiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdWJzcGFjZSgpIGNvbnN0CiB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnN3ZWVwKEZyZWVMaXN0KiBmcmVlTGlzdCkKIHsKICAgICBTd2VlcGluZ1Njb3Bl
IHN3ZWVwaW5nU2NvcGUoKmhlYXAoKSk7Ci0gICAgbV9kaXJlY3RvcnktPmFzc2VydElzTXV0YXRv
ck9yTXV0YXRvcklzU3RvcHBlZCgpOwotICAgIEFTU0VSVChtX2RpcmVjdG9yeS0+aXNJblVzZSh0
aGlzKSk7Ci0KKyAgICAKICAgICBTd2VlcE1vZGUgc3dlZXBNb2RlID0gZnJlZUxpc3QgPyBTd2Vl
cFRvRnJlZUxpc3QgOiBTd2VlcE9ubHk7Ci0gICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gbV9h
dHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24KLSAgICAgICAgJiYgbV9k
aXJlY3RvcnktPmlzRGVzdHJ1Y3RpYmxlKHRoaXMpOwotCisgICAgCisgICAgbV9kaXJlY3Rvcnkt
PnNldElzVW5zd2VwdChOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIGZhbHNlKTsKKyAgICAKICAg
ICBtX3dlYWtTZXQuc3dlZXAoKTsKKyAgICAKKyAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBt
X2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbgorICAgICAgICAmJiBt
X2RpcmVjdG9yeS0+aXNEZXN0cnVjdGlibGUoTm9Mb2NraW5nTmVjZXNzYXJ5LCB0aGlzKTsKIAot
ICAgIC8vIElmIHdlIGRvbid0ICJyZWxlYXNlIiBvdXIgcmVhZCBhY2Nlc3Mgd2l0aG91dCBsb2Nr
aW5nIHRoZW4gdGhlIFRocmVhZFNhZmV0eUFuYWx5c2lzIGNvZGUgZ2V0cyB1cHNldCB3aXRoIHRo
ZSBsb2NrZXIgYmVsb3cuCi0gICAgbV9kaXJlY3RvcnktPnJlbGVhc2VBc3NlcnRBY3F1aXJlZEJp
dFZlY3RvckxvY2soKTsKLQotICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFuZWVk
c0Rlc3RydWN0aW9uKSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIobV9kaXJlY3RvcnktPmJpdHZl
Y3RvckxvY2soKSk7Ci0gICAgICAgIG1fZGlyZWN0b3J5LT5zZXRJc1Vuc3dlcHQodGhpcywgZmFs
c2UpOworICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFuZWVkc0Rlc3RydWN0aW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKG1faXNGcmVlTGlzdGVkKSB7CiAg
ICAgICAgIGRhdGFMb2coIkZBVEFMOiAiLCBSYXdQb2ludGVyKHRoaXMpLCAiLT5zd2VlcDogYmxv
Y2sgaXMgZnJlZS1saXN0ZWQuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oCmluZGV4IGRkMjUwODkzZDhjNC4uNjg3YTYwZmYwN2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTIzMSw2ICsyMzEsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHRlbXBsYXRlPGJvb2wsIEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBTd2VlcERlc3RydWN0
aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtzTW9kZSwgdHlw
ZW5hbWUgRGVzdHJveUZ1bmM+CiAgICAgICAgIHZvaWQgc3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlz
dCosIEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBTd2VlcERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVN
b2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtzTW9kZSwgY29uc3QgRGVzdHJveUZ1bmMmKTsK
ICAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAogICAg
ICAgICB1bnNpZ25lZCBtX2F0b21zUGVyQ2VsbCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSB9OwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0QXRvbSB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OyAvLyBFeGFjdCBsb2NhdGlvbiBvZiB0aGUgZmly
c3QgYWxsb2NhdGFibGUgYXRvbS4KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAppbmRleCBmOTYyNGVjMGYzMTEuLjliNzVk
ZTQ4MmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJ
bmxpbmVzLmgKQEAgLTkzLDE0ICs5MywxMiBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bWFy
a3NDb252ZXlMaXZlbmVzc0R1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24gbXlNYXJraW5nVgogCiBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpCiB7Ci0gICAgbV9k
aXJlY3RvcnktPmFzc2VydElzTXV0YXRvck9yTXV0YXRvcklzU3RvcHBlZCgpOwotICAgIHJldHVy
biBtX2RpcmVjdG9yeS0+aXNBbGxvY2F0ZWQodGhpcyk7CisgICAgcmV0dXJuIG1fZGlyZWN0b3J5
LT5pc0FsbG9jYXRlZChOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMpOwogfQogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uLCBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24sIGJvb2wgaXNNYXJraW5n
LCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBtX2RpcmVjdG9yeS0+YXNzZXJ0SXNNdXRh
dG9yT3JNdXRhdG9ySXNTdG9wcGVkKCk7Ci0gICAgaWYgKG1fZGlyZWN0b3J5LT5pc0FsbG9jYXRl
ZCh0aGlzKSkKKyAgICBpZiAoZGlyZWN0b3J5KCktPmlzQWxsb2NhdGVkKE5vTG9ja2luZ05lY2Vz
c2FyeSwgdGhpcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gV2UgbmVlZCB0byBk
byB0aGlzIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2sgYmVjYXVzZSBtYXJrcyBtaWdodCBiZSBzdGFs
ZS4gSW4gdGhhdCBjYXNlLCBuZXdseQpAQCAtMjg2LDE3ICsyODQsNyBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoRnJlZUxpc3QqIGZyZWVMaXN0LCBNYXJrZWRC
bG9jazo6SGFuZAogICAgICAgICB9CiAgICAgfTsKIAotICAgIGF1dG8gc2V0Qml0cyA9IFsmXSAo
Ym9vbCBpc0VtcHR5KSBBTFdBWVNfSU5MSU5FX0xBTUJEQSB7Ci0gICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RpcmVjdG9yeS0+Yml0dmVjdG9yTG9jaygpIH07Ci0gICAgICAgIG1fZGlyZWN0b3J5
LT5zZXRJc1Vuc3dlcHQodGhpcywgZmFsc2UpOwotICAgICAgICBtX2RpcmVjdG9yeS0+c2V0SXNE
ZXN0cnVjdGlibGUodGhpcywgZmFsc2UpOwotICAgICAgICBtX2RpcmVjdG9yeS0+c2V0SXNFbXB0
eSh0aGlzLCBmYWxzZSk7Ci0gICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0
KQotICAgICAgICAgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChp
c0VtcHR5KQotICAgICAgICAgICAgbV9kaXJlY3RvcnktPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7
Ci0gICAgfTsKLSAgICBVTlVTRURfUEFSQU0oc2V0Qml0cyk7CisgICAgbV9kaXJlY3RvcnktPnNl
dElzRGVzdHJ1Y3RpYmxlKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhpcywgZmFsc2UpOwogCiAgICAg
aWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQogICAgICAgICAmJiBlbXB0eU1vZGUgPT0g
SXNFbXB0eQpAQCAtMzE4LDcgKzMwNiw4IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAg
ICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRvbXMo
KSArIG1fc3RhcnRBdG9tKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKSA8PSBwYXlsb2FkU2l6ZSwgcGF5bG9hZEJl
Z2luLCBwYXlsb2FkRW5kLCAmYmxvY2ssIGNlbGxTaXplLCBtX3N0YXJ0QXRvbSk7CiAKLSAgICAg
ICAgc2V0Qml0cyh0cnVlKTsKKyAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QpCisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKICAgICAgICAgaWYgKHNwYWNlKCkt
PmlzTWFya2luZygpKQogICAgICAgICAgICAgaGVhZGVyLm1fbG9jay51bmxvY2soKTsKICAgICAg
ICAgaWYgKGRlc3RydWN0aW9uTW9kZSAhPSBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMpIHsKQEAgLTQy
OCwxMCArNDE3LDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2Vl
cChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgICAgIGNoZWNrRm9y
RmluYWxJbnRlcnZhbCgpOwogICAgIH0KIAotICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0Zy
ZWVMaXN0KQorICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CiAgICAgICAg
IGZyZWVMaXN0LT5pbml0aWFsaXplKGhlYWQsIHNlY3JldCwgZnJlZWRCeXRlcyk7Ci0gICAgc2V0
Qml0cyhpc0VtcHR5KTsKLQorICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICB9IGVsc2Ug
aWYgKGlzRW1wdHkpCisgICAgICAgIG1fZGlyZWN0b3J5LT5zZXRJc0VtcHR5KE5vTG9ja2luZ05l
Y2Vzc2FyeSwgdGhpcywgdHJ1ZSk7CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJT
bG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXpl
ICIsIGNlbGxTaXplLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcG9p
bnRlckR1bXAoZnJlZUxpc3QpLCAiXG4iKTsKIH0KQEAgLTUyNCw4ICs1MTQsNyBAQCBpbmxpbmUg
TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBEZXN0cgogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0Vt
cHR5KCkKIHsKLSAgICBtX2RpcmVjdG9yeS0+YXNzZXJ0SXNNdXRhdG9yT3JNdXRhdG9ySXNTdG9w
cGVkKCk7Ci0gICAgcmV0dXJuIG1fZGlyZWN0b3J5LT5pc0VtcHR5KHRoaXMpOworICAgIHJldHVy
biBtX2RpcmVjdG9yeS0+aXNFbXB0eShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMpOwogfQogCiBp
bmxpbmUgTWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmVtcHR5TW9kZSgpCkBAIC01NTcsNiArNTQ2LDEyIEBAIGlubGluZSBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpNYXJrc01vZGUgTWFya2VkQmxvY2s6OkhhbmRsZTo6bWFya3NNb2RlKCkKICAgICByZXR1
cm4gbWFya3NBcmVVc2VmdWwgPyBNYXJrc05vdFN0YWxlIDogTWFya3NTdGFsZTsKIH0KIAoraW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKCkKK3sKKyAgICBt
X2RpcmVjdG9yeS0+c2V0SXNFbXB0eShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIGZhbHNlKTsK
KyAgICBtX2lzRnJlZUxpc3RlZCA9IHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNo
TGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmNwcAppbmRleCBkNDZkNGFkMmY1NmMuLjBiYWMxNGYxMDdlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcApAQCAtNTU5LDcg
KzU1OSw2IEBAIHZvaWQgTWFya2VkU3BhY2U6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCiB7
CiAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgWyZdIChCbG9ja0RpcmVjdG9yeSYgZGly
ZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgZGlyZWN0b3J5LmFzc2Vy
dElzTXV0YXRvck9yTXV0YXRvcklzU3RvcHBlZCgpOwogICAgICAgICAgICAgb3V0LnByaW50KCJC
aXRzIGZvciAiLCBkaXJlY3RvcnksICI6XG4iKTsKICAgICAgICAgICAgIGRpcmVjdG9yeS5kdW1w
Qml0cyhvdXQpOwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGYwNzk2OTZlNmJhYS4uZTQ2
Zjc4ODI3NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzk2LDEx
ICs3OTYsMTQgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YWRkU3ltYm9saWNCcmVha3BvaW50KGNvbnMKIAogICAgIGF1dG8mIHN5bWJvbGlj
QnJlYWtwb2ludCA9IG1fc3ltYm9saWNCcmVha3BvaW50cy5sYXN0KCk7CiAKLSAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIobV9kZWJ1Z2dlci52bSgpKTsKLSAgICBtX2RlYnVnZ2VyLmZvckVh
Y2hSZWdpc3RlcmVkQ29kZUJsb2NrKFsmXSAoSlNDOjpDb2RlQmxvY2sqIGNvZGVCbG9jaykgewot
ICAgICAgICBpZiAoc3ltYm9saWNCcmVha3BvaW50Lm1hdGNoZXMoZnVuY3Rpb25OYW1lKCpjb2Rl
QmxvY2spKSkKLSAgICAgICAgICAgIGNvZGVCbG9jay0+YWRkQnJlYWtwb2ludCgxKTsKLSAgICB9
KTsKKyAgICB7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX2RlYnVnZ2VyLnZt
KCkpOworCisgICAgICAgIG1fZGVidWdnZXIuZm9yRWFjaFJlZ2lzdGVyZWRDb2RlQmxvY2soWyZd
IChKU0M6OkNvZGVCbG9jayogY29kZUJsb2NrKSB7CisgICAgICAgICAgICBpZiAoc3ltYm9saWNC
cmVha3BvaW50Lm1hdGNoZXMoZnVuY3Rpb25OYW1lKCpjb2RlQmxvY2spKSkKKyAgICAgICAgICAg
ICAgICBjb2RlQmxvY2stPmFkZEJyZWFrcG9pbnQoMSk7CisgICAgICAgIH0pOworICAgIH0KIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBjMDdmNWRiNjFmZDMuLjk0YWMz
MjAzNTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkFyaXRo
UHJvZmlsZS5oIgogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgotI2luY2x1ZGUgIkJsb2NrRGly
ZWN0b3J5LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVJbmRpY2VzLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9BdG9taWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKaW5kZXggYjkxZGU1
ZDVjY2E0Li44N2RhOGMyMDhlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29kIChqaGF5Z29vZEByZWFrdGl4
LmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM1LDE5ICszNSwxMyBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgaGFzRmVuY2Uoc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIpCiB7CiAgICAgcmV0dXJuIG9y
ZGVyICE9IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQ7CiB9Ci0KLS8vIFRoaXMgaW5kaWNpY2F0
ZXMgQ1BVcyB3aGVyZSB0aGUgZXhjaGFuZ2U8T3A+KHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
IGluc3RydWN0aW9ucyBkbyBub3QgY29zdAotLy8gbW9yZSB0aGFuIHRoZSBub24tYXRvbWljIGVx
dWl2YWxlbnQuIFRoaXMgZG9lc24ndCBsaXZlIGluIFBsYXRmb3JtQ1BVLmggYmVjYXVzZSB3ZSBo
YXZlbid0IHNldCB1cAotLy8gb3VyIE9TL1BMQVRGT1JNIG1hY3JvcyBhdCB0aGF0IHBvaW50Lgot
I2lmIChDUFUoQVJNNjRFKSAmJiBPUyhEQVJXSU4pKSB8fCAoQ1BVKEFSTTY0KSAmJiBQTEFURk9S
TShNQUMpKQotI2RlZmluZSBXVEZfQ1BVX1JFTEFYRURfRVhDSEFOR0VfT1BTX0FSRV9GUkVFIDEK
LSNlbHNlCi0jZGVmaW5lIFdURl9DUFVfUkVMQVhFRF9FWENIQU5HRV9PUFNfQVJFX0ZSRUUgMAot
I2VuZGlmCi0KKyAgICAKIC8vIEF0b21pYyB3cmFwcyBhcm91bmQgc3RkOjphdG9taWMgd2l0aCB0
aGUgc29sZSBwdXJwb3NlIG9mIG1ha2luZyB0aGUgY29tcGFyZV9leGNoYW5nZQogLy8gb3BlcmF0
aW9ucyBub3QgYWx0ZXIgdGhlIGV4cGVjdGVkIHZhbHVlLiBUaGlzIGlzIG1vcmUgaW4gbGluZSB3
aXRoIGhvdyB3ZSB0eXBpY2FsbHkKIC8vIHVzZSBDQVMgaW4gb3VyIGNvZGUuCisvLworLy8gQXRv
bWljIGlzIGEgc3RydWN0IHdpdGhvdXQgZXhwbGljaXRseSBkZWZpbmVkIGNvbnN0cnVjdG9ycyBz
byB0aGF0IGl0IGNhbiBiZQorLy8gaW5pdGlhbGl6ZWQgYXQgY29tcGlsZSB0aW1lLgogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEF0b21pYyB7CkBAIC00OTYsNDYgKzQ5MCw2IEBAIEFM
V0FZU19JTkxJTkUgVCYgZW5zdXJlUG9pbnRlcihBdG9taWM8VCo+JiBwb2ludGVyLCBjb25zdCBG
dW5jJiBmdW5jKQogICAgIH0KIH0KIAotLy8gSnVzdCBhIHN0dWIgd3JhcHBlciB0aGF0IGxvb2tz
IGxpa2UgQXRvbWljIHdpdGhvdXQgZG9pbmcgYW55IGZlbmNpbmcuIFRoaXMgaXMgbW9zdGx5IGZv
cgotLy8gdGVtcGxhdGVzIHdoZXJlIHRoZSBkYXRhIGlzIHNvbWV0aW1lcyBBdG9taWMgYW5kIHNv
bWV0aW1lcyBub3QuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IE5vbkF0b21pYyB7Ci0g
ICAgY29uc3RleHByIE5vbkF0b21pYyhUIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfQotCi0g
ICAgQUxXQVlTX0lOTElORSBUIGxvYWQoc3RkOjptZW1vcnlfb3JkZXIgPSBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgQUxXQVlTX0lOTElO
RSBUIGxvYWRSZWxheGVkKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHN0b3JlKFQgdmFsdWUsIHN0ZDo6bWVtb3J5X29yZGVyID0gc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc3RvcmVSZWxheGVkKFQgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlOyB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIFQgZXhjaGFuZ2VBZGQoVCB2YWx1ZSwgc3RkOjptZW1vcnlfb3JkZXIgPSBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKQotICAgIHsKLSAgICAgICAgVCBvbGQgPSBtX3ZhbHVl
OwotICAgICAgICBtX3ZhbHVlICs9IHZhbHVlOwotICAgICAgICByZXR1cm4gb2xkOwotICAgIH0K
LSAgICBBTFdBWVNfSU5MSU5FIFQgZXhjaGFuZ2VTdWIoVCB2YWx1ZSwgc3RkOjptZW1vcnlfb3Jk
ZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKQotICAgIHsKLSAgICAgICAgVCBvbGQgPSBt
X3ZhbHVlOwotICAgICAgICBtX3ZhbHVlIC09IHZhbHVlOwotICAgICAgICByZXR1cm4gb2xkOwot
ICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIFQgZXhjaGFuZ2VPcihUIHZhbHVlLCBzdGQ6Om1lbW9y
eV9vcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpCi0gICAgewotICAgICAgICBUIG9s
ZCA9IG1fdmFsdWU7Ci0gICAgICAgIG1fdmFsdWUgfD0gdmFsdWU7Ci0gICAgICAgIHJldHVybiBv
bGQ7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgVCBleGNoYW5nZUFuZChUIHZhbHVlLCBzdGQ6
Om1lbW9yeV9vcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpCi0gICAgewotICAgICAg
ICBUIG9sZCA9IG1fdmFsdWU7Ci0gICAgICAgIG1fdmFsdWUgJj0gdmFsdWU7Ci0gICAgICAgIHJl
dHVybiBvbGQ7Ci0gICAgfQotCi0gICAgVCBtX3ZhbHVlOwotfTsKLQogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6QXRvbWljOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9FeHRlcm5hbFN0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9FeHRlcm5hbFN0
cmluZ0ltcGwuY3BwCmluZGV4IDEzZjJiOTQ3OWQzOC4uMTVhZWFlZmI5N2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0V4dGVybmFsU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9FeHRlcm5hbFN0cmluZ0ltcGwuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxOCBtY2Ugc3lzIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQzLDcgQEAgRXh0ZXJuYWxT
dHJpbmdJbXBsOjpFeHRlcm5hbFN0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFy
YWN0ZXJzLCBFeHRlcm4KICAgICAsIG1fZnJlZShXVEZNb3ZlKGZyZWUpKQogewogICAgIEFTU0VS
VChtX2ZyZWUpOwotICAgIG1faGFzaEFuZEZsYWdzLnN0b3JlUmVsYXhlZCgobV9oYXNoQW5kRmxh
Z3MubG9hZFJlbGF4ZWQoKSAmIH5zX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwKSB8IEJ1ZmZlckV4
dGVybmFsKTsKKyAgICBtX2hhc2hBbmRGbGFncyA9IChtX2hhc2hBbmRGbGFncyAmIH5zX2hhc2hN
YXNrQnVmZmVyT3duZXJzaGlwKSB8IEJ1ZmZlckV4dGVybmFsOwogfQogCiBFeHRlcm5hbFN0cmlu
Z0ltcGw6OkV4dGVybmFsU3RyaW5nSW1wbChzdGQ6OnNwYW48Y29uc3QgVUNoYXI+IGNoYXJhY3Rl
cnMsIEV4dGVybmFsU3RyaW5nSW1wbEZyZWVGdW5jdGlvbiYmIGZyZWUpCkBAIC01Miw3ICs1MSw3
IEBAIEV4dGVybmFsU3RyaW5nSW1wbDo6RXh0ZXJuYWxTdHJpbmdJbXBsKHN0ZDo6c3Bhbjxjb25z
dCBVQ2hhcj4gY2hhcmFjdGVycywgRXh0ZXJuCiAgICAgLCBtX2ZyZWUoV1RGTW92ZShmcmVlKSkK
IHsKICAgICBBU1NFUlQobV9mcmVlKTsKLSAgICBtX2hhc2hBbmRGbGFncy5zdG9yZVJlbGF4ZWQo
KG1faGFzaEFuZEZsYWdzLmxvYWRSZWxheGVkKCkgJiB+c19oYXNoTWFza0J1ZmZlck93bmVyc2hp
cCkgfCBCdWZmZXJFeHRlcm5hbCk7CisgICAgbV9oYXNoQW5kRmxhZ3MgPSAobV9oYXNoQW5kRmxh
Z3MgJiB+c19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCkgfCBCdWZmZXJFeHRlcm5hbDsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCAyYjc0
ZmM0YzdjMWMuLmViY2FiMzZiNDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBA
IC0yODAsNyArMjgwLDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRp
Y1N0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWMKICAgICAgICAgcmV0dXJu
ICplbXB0eSgpOwogICAgIFJlZjxTdHJpbmdJbXBsPiByZXN1bHQgPSBjcmVhdGVJbnRlcm5hbChj
aGFyYWN0ZXJzKTsKICAgICByZXN1bHQtPmhhc2goKTsKLSAgICByZXN1bHQtPm1fcmVmQ291bnQu
ZXhjaGFuZ2VPcihzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKKyAgICByZXN1bHQtPm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0
YXRpY1N0cmluZzsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yOTAsNyArMjkwLDcgQEAg
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RkOjpz
cGFuPGNvbnN0IFVDaGFyPiBjaGFyYWMKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwogICAgIFJl
ZjxTdHJpbmdJbXBsPiByZXN1bHQgPSBjcmVhdGU4Qml0SWZQb3NzaWJsZShjaGFyYWN0ZXJzKTsK
ICAgICByZXN1bHQtPmhhc2goKTsKLSAgICByZXN1bHQtPm1fcmVmQ291bnQuZXhjaGFuZ2VPcihz
X3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsK
KyAgICByZXN1bHQtPm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGZj
NmQ3Mjc2ZWNjMi4uZjk2MjhhZDg4ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAt
MjUsNyArMjUsNiBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXN0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGFjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z0hlYXAuaD4KQEAgLTE1NSwxMyArMTU0
LDcgQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBj
b25zdGV4cHIgU3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhh
c2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZyk7CiAgICAgdGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyQ291bnQ+IGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQg
cmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0
RXhwclRhZyk7CiAKLSNpZiBDUFUoUkVMQVhFRF9FWENIQU5HRV9PUFNfQVJFX0ZSRUUpCi0gICAg
dXNpbmcgUmVmQ291bnRUeXBlID0gQXRvbWljPHVuc2lnbmVkPjsKLSNlbHNlCi0gICAgdXNpbmcg
UmVmQ291bnRUeXBlID0gTm9uQXRvbWljPHVuc2lnbmVkPjsKLSNlbmRpZgotCi0gICAgUmVmQ291
bnRUeXBlIG1fcmVmQ291bnQ7CisgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKICAgICB1bnNpZ25l
ZCBtX2xlbmd0aDsKICAgICB1bmlvbiB7CiAgICAgICAgIGNvbnN0IExDaGFyKiBtX2RhdGE4OwpA
QCAtMTcxLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY29uc3QgY2hhciogbV9kYXRh
OENoYXI7CiAgICAgICAgIGNvbnN0IGNoYXIxNl90KiBtX2RhdGExNkNoYXI7CiAgICAgfTsKLSAg
ICBtdXRhYmxlIEF0b21pYzx1bnNpZ25lZD4gbV9oYXNoQW5kRmxhZ3M7CisgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2hhc2hBbmRGbGFnczsKIH07CiAKIC8vIEZJWE1FOiBVc2Ugb2YgU3RyaW5nSW1w
bCBhbmQgY29uc3QgaXMgcmF0aGVyIGNvbmZ1c2VkLgpAQCAtMjk3LDcgKzI5MCw2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZsYWdJczhCaXQoKSB7IHJldHVybiBz
X2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmxh
Z0lzQXRvbSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tOyB9CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmbGFnSXNTeW1ib2woKSB7IHJldHVybiBzX2hhc2hGbGFn
U3RyaW5nS2luZElzU3ltYm9sOyB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXNr
SXNVbmlxdWVkKCkgeyByZXR1cm4gZmxhZ0lzQXRvbSgpIHwgZmxhZ0lzU3ltYm9sKCk7IH0KICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1hc2tTdHJpbmdLaW5kKCkgeyByZXR1cm4gc19o
YXNoTWFza1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCkBAIC0zMTEs
NyArMzAzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IGxlbmd0
aE1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2xl
bmd0aCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9sZW5ndGg7IH0K
IAotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MubG9hZFJl
bGF4ZWQoKSAmIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25z
dCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CiAgICAg
QUxXQVlTX0lOTElORSBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHNwYW44KCkgY29uc3QgeyBBU1NF
UlQoaXM4Qml0KCkpOyByZXR1cm4geyBtX2RhdGE4LCBsZW5ndGgoKSB9OyB9CiAgICAgQUxXQVlT
X0lOTElORSBzdGQ6OnNwYW48Y29uc3QgVUNoYXI+IHNwYW4xNigpIGNvbnN0IHsgQVNTRVJUKCFp
czhCaXQoKSB8fCBpc0VtcHR5KCkpOyByZXR1cm4geyBtX2RhdGExNiwgbGVuZ3RoKCkgfTsgfQog
CkBAIC0zMjIsOSArMzE0LDggQEAgcHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaEFuZEZsYWdzLmxvYWRSZWxheGVkKCkgJiBmbGFnSXNTeW1ib2woKTsgfQot
ICAgIGJvb2wgaXNBdG9tKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MubG9hZFJlbGF4
ZWQoKSAmIGZsYWdJc0F0b20oKTsgfQotICAgIGJvb2wgaXNVbmlxdWVkKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNoQW5kRmxhZ3MubG9hZFJlbGF4ZWQoKSAmIG1hc2tJc1VuaXF1ZWQoKTsgfQorICAg
IGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZs
YWdTdHJpbmdLaW5kSXNTeW1ib2w7IH0KKyAgICBib29sIGlzQXRvbSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207IH0KICAgICB2b2lk
IHNldElzQXRvbShib29sKTsKICAgICAKICAgICBib29sIGlzRXh0ZXJuYWwoKSBjb25zdCB7IHJl
dHVybiBidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJFeHRlcm5hbDsgfQpAQCAtMzUxLDcgKzM0
Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gU28sIHdlIHNoaWZ0IGxlZnQgYW5kIHJpZ2h0IHdoZW4g
c2V0dGluZyBhbmQgZ2V0dGluZyBvdXIgaGFzaCBjb2RlLgogICAgIHZvaWQgc2V0SGFzaCh1bnNp
Z25lZCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCByYXdIYXNoKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNoQW5kRmxhZ3MubG9hZFJlbGF4ZWQoKSA+PiBzX2ZsYWdDb3VudDsgfQorICAgIHVuc2lnbmVk
IHJhd0hhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyA+PiBzX2ZsYWdDb3VudDsg
fQogCiBwdWJsaWM6CiAgICAgYm9vbCBoYXNIYXNoKCkgY29uc3QgeyByZXR1cm4gISFyYXdIYXNo
KCk7IH0KQEAgLTM2NCwyNiArMzU1LDIxIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzeW1ib2xB
d2FyZUhhc2goKSBjb25zdDsKICAgICB1bnNpZ25lZCBleGlzdGluZ1N5bWJvbEF3YXJlSGFzaCgp
IGNvbnN0OwogCi0gICAgU1VQUFJFU1NfVFNBTiBib29sIGlzU3RhdGljKCkgY29uc3QgeyByZXR1
cm4gbV9yZWZDb3VudC5sb2FkUmVsYXhlZCgpICYgc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmlu
ZzsgfQorICAgIFNVUFBSRVNTX1RTQU4gYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmQ291bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9CiAKLSAgICBzaXplX3Qg
cmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50LmxvYWRSZWxheGVkKCkgLyBzX3Jl
ZkNvdW50SW5jcmVtZW50OyB9Ci0gICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdCB7IHJldHVybiBt
X3JlZkNvdW50LmxvYWRSZWxheGVkKCkgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQotICAgIGJv
b2wgaGFzQXRMZWFzdE9uZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQubG9hZFJlbGF4
ZWQoKTsgfSAvLyBGb3IgYXNzZXJ0aW9ucy4KKyAgICBzaXplX3QgcmVmQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX3JlZkNvdW50IC8gc19yZWZDb3VudEluY3JlbWVudDsgfQorICAgIGJvb2wgaGFz
T25lUmVmKCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudCA9PSBzX3JlZkNvdW50SW5jcmVtZW50
OyB9CisgICAgYm9vbCBoYXNBdExlYXN0T25lUmVmKCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3Vu
dDsgfSAvLyBGb3IgYXNzZXJ0aW9ucy4KIAogICAgIHZvaWQgcmVmKCk7CiAgICAgdm9pZCBkZXJl
ZigpOwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgYXZvaWRlZCB1bmxlc3MgeW91
IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuCi0gICAgZW51bSBjbGFzcyBEZXJlZlJlc3VsdCB7IE5l
ZWRzTWFpblRocmVhZERlcmVmLCBEZXJlZmVkQnV0U3RpbGxBbGl2ZSwgRGVzdHJveWVkIH07Ci0g
ICAgRGVyZWZSZXN1bHQgdHJ5RGVyZWZDb25jdXJyZW50bHkoKSBXQVJOX1VOVVNFRF9SRVRVUk47
Ci0KICAgICBjbGFzcyBTdGF0aWNTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJpbmdJbXBsU2hhcGUg
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdGF0aWNTdHJpbmdJbXBsKTsKICAgICBw
dWJsaWM6CiAgICAgICAgIC8vIFVzZWQgdG8gY29uc3RydWN0IHN0YXRpYyBzdHJpbmdzLCB3aGlj
aCBoYXZlIGFuIHNwZWNpYWwgcmVmQ291bnQgdGhhdCBjYW4gbmV2ZXIgaGl0IHplcm8uCiAgICAg
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRl
c3Ryb3llZCwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UKLSAgICAgICAgLy8gc3RhdGljIHN0
cmluZ3Mgd2lsbCBiZSBzaGFyZWQgYWNyb3NzIHRocmVhZHMgYW5kIHBvdGVudGlhbGx5IHJlZi1j
b3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUKLSAgICAgICAgLy8gbWFubmVyLgorICAgICAgICAv
LyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3Vu
dGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFubmVyLgogICAgICAgICAvLwogICAgICAgICAvLyBJ
biBvcmRlciB0byBtYWtlIFN0YXRpY1N0cmluZ0ltcGwgdGhyZWFkIHNhZmUsIHdlIGFsc28gbmVl
ZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVzdCBvZgogICAgICAgICAvLyB0aGUgZmllbGRzIGFyZSBu
ZXZlciBtdXRhdGVkIGJ5IHRocmVhZHMuIFdlIGhhdmUgdGhpcyBndWFyYW50ZWUgYmVjYXVzZToK
QEAgLTM5NCwxNCArMzgwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgV2UgYWxzbyBrbm93
IHRoYXQgYSBTdHJpbmdJbXBsIG5ldmVyIGNoYW5nZXMgZnJvbSA4IGJpdCB0byAxNiBiaXQgYmVj
YXVzZSB0aGVyZQogICAgICAgICAvLyAgICBpcyBubyB3YXkgdG8gc2V0L2NsZWFyIHRoZSBzX2hh
c2hGbGFnOEJpdEJ1ZmZlciBmbGFnIG90aGVyIHRoYW4gYXQgY29uc3RydWN0aW9uLgogICAgICAg
ICAvLwotICAgICAgICAvLyAzLiBtX2hhc2hBbmRGbGFncyBjYW4gYmUgc2V0IGJ5IG11bHRpcGxl
IHRocmVhZHMgd2l0aCB0aGUgZm9sbG93aW5nIGNhdmVhdHM6CisgICAgICAgIC8vIDMuIG1faGFz
aEFuZEZsYWdzIHdpbGwgbm90IGJlIG11dGF0ZWQgYnkgZGlmZmVyZW50IHRocmVhZHMgYmVjYXVz
ZToKICAgICAgICAgLy8KICAgICAgICAgLy8gICAgYS4gU3RhdGljU3RyaW5nSW1wbCdzIGNvbnN0
cnVjdG9yIHNldHMgdGhlIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGZsYWcgdG8gZW5zdXJlCiAg
ICAgICAgIC8vICAgICAgIHRoYXQgU3RyaW5nSW1wbDo6Y29zdCgpIHJldHVybnMgZWFybHkuCi0g
ICAgICAgIC8vICAgICAgIFRoaXMgbWVhbnMgbW9zdCBTdGF0aWNTdHJpbmdJbXBsIGNvc3RzIGFy
ZSBub3QgY291bnRlZC4gQnV0IHNpbmNlIHRoZXJlIHNob3VsZCBvbmx5CisgICAgICAgIC8vICAg
ICAgIFRoaXMgbWVhbnMgU3RhdGljU3RyaW5nSW1wbCBjb3N0cyBhcmUgbm90IGNvdW50ZWQuIEJ1
dCBzaW5jZSB0aGVyZSBzaG91bGQgb25seQogICAgICAgICAvLyAgICAgICBiZSBhIGZpbml0ZSBz
ZXQgb2YgU3RhdGljU3RyaW5nSW1wbHMsIHRoZWlyIGNvc3QgY2FuIGJlIGFnZ3JlZ2F0ZWQgaW50
byBhIHNpbmdsZQogICAgICAgICAvLyAgICAgICBzeXN0ZW0gY29zdCBpZiBuZWVkZWQuCi0gICAg
ICAgIC8vICAgICAgIFRoYXQgc2FpZCwgc29tZSBydW50aW1lIGdlbmVyYXRlZCBTdGF0aWNTdHJp
bmdJbXBsJ3MgZG8gZ2VuZXJhdGUgYSBjb3N0LgogICAgICAgICAvLyAgICBiLiBzZXRJc0F0b20o
KSBpcyBuZXZlciBjYWxsZWQgb24gYSBTdGF0aWNTdHJpbmdJbXBsLgogICAgICAgICAvLyAgICAg
ICBzZXRJc0F0b20oKSBhc3NlcnRzICFpc1N0YXRpYygpLgogICAgICAgICAvLyAgICBjLiBzZXRI
YXNoKCkgaXMgbmV2ZXIgY2FsbGVkIG9uIGEgU3RhdGljU3RyaW5nSW1wbC4KQEAgLTUyNyw3ICs1
MTIsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nU3RhdHMmIHN0
cmluZ1N0YXRzKCkgeyByZXR1cm4gbV9zdHJpbmdTdGF0czsgfQogI2VuZGlmCiAKLSAgICBCdWZm
ZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRGbGFncy5sb2FkUmVsYXhlZCgpICYgc19oYXNoTWFz
a0J1ZmZlck93bmVyc2hpcCk7IH0KKyAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlw
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRG
bGFncyAmIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiB0YWlsT2Zmc2V0PFQ+
KCk7IH0KICAgICAKQEAgLTEwODUsMTMgKzEwNzAsMTQgQEAgaW5saW5lIHNpemVfdCBTdHJpbmdJ
bXBsOjpjb3N0KCkgY29uc3QKICAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vi
c3RyaW5nKQogICAgICAgICByZXR1cm4gc3Vic3RyaW5nQnVmZmVyKCktPmNvc3QoKTsKIAotICAg
IC8vIE5vdGU6IG1vc3QgU3RhdGljU3RyaW5nSW1wbHMgYWxyZWFkeSBoYXZlIHRoZWlyIHNfaGFz
aEZsYWdEaWRSZXBvcnRDb3N0IGZsYWcgc2V0Ci0gICAgLy8gb24gY29uc3RydWN0aW9uIHNpbmNl
IHRoZWlyIGRhdGEgaXMgaW4gdGhlIHRleHQgc2VjdGlvbiBhbmQgdGh1cyBkb2Vzbid0IGNvdW50
Ci0gICAgLy8gYWdhaW5zdCBkaXJ0eSBtZW1vcnkuCi0gICAgaWYgKG1faGFzaEFuZEZsYWdzLmxv
YWRSZWxheGVkKCkgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCkKKyAgICAvLyBOb3RlOiB3ZSBt
dXN0IG5vdCBhbHRlciB0aGUgbV9oYXNoQW5kRmxhZ3MgZmllbGQgaW4gaW5zdGFuY2VzIG9mIFN0
YXRpY1N0cmluZ0ltcGwuCisgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhl
IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCisgICAgLy8g
U3RhdGljU3RyaW5nSW1wbC4gQXMgYSByZXN1bHQsIFN0YXRpY1N0cmluZ0ltcGwgaW5zdGFuY2Vz
IHdpbGwgYWx3YXlzIHJldHVybiBhIGNvc3Qgb2YKKyAgICAvLyAwIGhlcmUgYW5kIGF2b2lkIG1v
ZGlmeWluZyBtX2hhc2hBbmRGbGFncy4KKyAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hG
bGFnRGlkUmVwb3J0Q29zdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBtX2hhc2hBbmRGbGFn
cy5leGNoYW5nZU9yKHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0LCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdDsK
ICAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7CiAgICAgaWYgKCFpczhCaXQoKSkKICAgICAg
ICAgcmVzdWx0IDw8PSAxOwpAQCAtMTExNiwyMCArMTEwMiwxMCBAQCBpbmxpbmUgdm9pZCBTdHJp
bmdJbXBsOjpzZXRJc0F0b20oYm9vbCBpc0F0b20pCiB7CiAgICAgQVNTRVJUKCFpc1N0YXRpYygp
KTsKICAgICBBU1NFUlQoIWlzU3ltYm9sKCkpOwotICAgIC8vIFdlIHVzZSBhIHJlbGVhc2UgbWVt
b3J5IG9yZGVyIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGEgc3Vic2VxdWVudCBkZXJlZiB0
byBiZSBob2lzdGVkIGFib3ZlIHRoZQotICAgIC8vIHNldHRpbmcvdW5zZXR0aW5nIG9mIHRoZSBp
c0F0b20gZmxhZy4gVGhpcyBwcmV2ZW50cyB0aGUgdGhlIGZvbGxvd2luZyByYWNlIG9uIHdlYWsg
b3JkZXJpbmcgQ1BVczoKLSAgICAvLyBUaHJlYWQgYSAgICAgICAocmVmQ291bnQvaXNBdG9tRmxh
ZykgICAgICAgICAgICBUaHJlYWQgYiAgICAgICAgICAgICAgKHJlZkNvdW50L2lzQXRvbUZsYWcp
Ci0gICAgLy8gICAgICAgICAgICAgICAgKDIvZmFsc2UpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgyL2ZhbHNlKQotICAgIC8vIHNldElzQXRvbSh0cnVlKSgy
L3RydWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMi9m
YWxzZSkKLSAgICAvLyBkZXJlZigpICAgICAgICAoMS90cnVlKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEvZmFsc2UpCi0gICAgLy8gICAgICAgICAgICAg
ICAgKDEvdHJ1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5RGVyZWZDb25jdXJyZW50bHko
KSgwL2ZhbHNlKQotICAgIC8vCi0gICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgZXZlbiB0aG91Z2gg
cmVmQ291bnQgaXNuJ3QgYWx3YXlzIGF0b21pYyBiZWNhdXNlIEpTQyB0cmllcyB0byBkZXN0cm95
Ci0gICAgLy8gU3RyaW5nSW1wbHMgdGhhdCBvbmx5IGhhdmUgb25lIHJlZiBmcm9tIHRoZSBzd2Vl
cGVyIHRocmVhZC4KICAgICBpZiAoaXNBdG9tKQotICAgICAgICBtX2hhc2hBbmRGbGFncy5leGNo
YW5nZU9yKHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxl
YXNlKTsKKyAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0
b207CiAgICAgZWxzZQotICAgICAgICBtX2hhc2hBbmRGbGFncy5leGNoYW5nZUFuZCh+c19oYXNo
RmxhZ1N0cmluZ0tpbmRJc0F0b20sIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgICAg
ICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207CiB9CiAKIGlu
bGluZSB2b2lkIFN0cmluZ0ltcGw6OnNldEhhc2godW5zaWduZWQgaGFzaCkgY29uc3QKQEAgLTEx
MzgsMTUgKzExMTQsMTcgQEAgaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SGFzaCh1bnNpZ25l
ZCBoYXNoKSBjb25zdAogICAgIC8vIGluIHRoZSBsb3cgYml0cyBiZWNhdXNlIGl0IG1ha2VzIHRo
ZW0gc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgdG8gYWNjZXNzLgogICAgIC8vIFNvLCB3ZSBzaGlm
dCBsZWZ0IGFuZCByaWdodCB3aGVuIHNldHRpbmcgYW5kIGdldHRpbmcgb3VyIGhhc2ggY29kZS4K
IAorICAgIEFTU0VSVCghaGFzSGFzaCgpKTsKICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwogICAg
IC8vIE11bHRpcGxlIGNsaWVudHMgYXNzdW1lIHRoYXQgU3RyaW5nSGFzaGVyIGlzIHRoZSBjYW5v
bmljYWwgc3RyaW5nIGhhc2ggZnVuY3Rpb24uCiAgICAgQVNTRVJUKGhhc2ggPT0gKGlzOEJpdCgp
ID8gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhzcGFuOCgpKSA6IFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoc3BhbjE2KCkpKSk7CiAgICAg
QVNTRVJUKCEoaGFzaCAmIChzX2ZsYWdNYXNrIDw8ICg4ICogc2l6ZW9mKGhhc2gpIC0gc19mbGFn
Q291bnQpKSkpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggaGlnaCBiaXRzIGFyZSBlbXB0eS4KIAog
ICAgIGhhc2ggPDw9IHNfZmxhZ0NvdW50OworICAgIEFTU0VSVCghKGhhc2ggJiBtX2hhc2hBbmRG
bGFncykpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggbG93IGJpdHMgYXJlIGVtcHR5IGFmdGVyIHNo
aWZ0LgogICAgIEFTU0VSVChoYXNoKTsgLy8gVmVyaWZ5IHRoYXQgMCBpcyBhIHZhbGlkIHNlbnRp
bmVsIGhhc2ggdmFsdWUuCiAKLSAgICBtX2hhc2hBbmRGbGFncy5leGNoYW5nZU9yKGhhc2gsIHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyAvLyBTdG9yZSBoYXNoIHdpdGggZmxhZ3MgaW4gbG93
IGJpdHMuCisgICAgbV9oYXNoQW5kRmxhZ3MgfD0gaGFzaDsgLy8gU3RvcmUgaGFzaCB3aXRoIGZs
YWdzIGluIGxvdyBiaXRzLgogfQogCiBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpyZWYoKQpAQCAt
MTE1OCw3ICsxMTM2LDcgQEAgaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6cmVmKCkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKLSAgICBtX3JlZkNvdW50LmV4Y2hhbmdlQWRkKHNfcmVmQ291bnRJ
bmNyZW1lbnQsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIG1fcmVmQ291bnQgKz0g
c19yZWZDb3VudEluY3JlbWVudDsKIH0KIAogaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6ZGVyZWYo
KQpAQCAtMTE3MCw1NSArMTE0OCwxMiBAQCBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpkZXJlZigp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgdW5zaWduZWQgbmV3UmVmQ291bnQgPSAo
bV9yZWZDb3VudC5leGNoYW5nZVN1YihzX3JlZkNvdW50SW5jcmVtZW50LCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKSAtIHNfcmVmQ291bnRJbmNyZW1lbnQpOwotICAgIGlmICghbmV3UmVmQ291
bnQpIHsKKyAgICB1bnNpZ25lZCB0ZW1wUmVmQ291bnQgPSBtX3JlZkNvdW50IC0gc19yZWZDb3Vu
dEluY3JlbWVudDsKKyAgICBpZiAoIXRlbXBSZWZDb3VudCkgewogICAgICAgICBTdHJpbmdJbXBs
OjpkZXN0cm95KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotfQotCi1pbmxpbmUgU3Ry
aW5nSW1wbDo6RGVyZWZSZXN1bHQgU3RyaW5nSW1wbDo6dHJ5RGVyZWZDb25jdXJyZW50bHkoKQot
ewotI2lmIENQVShSRUxBWEVEX0VYQ0hBTkdFX09QU19BUkVfRlJFRSkKLSAgICBTdHJpbmdJbXBs
OjpEZXJlZlJlc3VsdCByZXN1bHQ7Ci0gICAgbV9yZWZDb3VudC50cmFuc2FjdGlvbihbJl0gKHVu
c2lnbmVkJiBvbGRWYWx1ZSkgewotICAgICAgICB1bnNpZ25lZCBuZXdSZWZDb3VudCA9IG9sZFZh
bHVlIC09IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIERlcGVuZGVuY3kgcmVmQ291bnRE
ZXBlbmRlbmN5ID0gRGVwZW5kZW5jeTo6ZmVuY2UobmV3UmVmQ291bnQpOwotICAgICAgICBpZiAo
IW5ld1JlZkNvdW50KSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIGEgZGVwZW5kZW5jeSBvbiBu
ZXdSZWZDb3VudCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIGFuZC9vciB0aGUgQ1BVIGNvdWxkCi0g
ICAgICAgICAgICAvLyBob2lzdCB0aGUgZmxhZ3MgY2hlY2sgb3V0IG9mIHRoZSBDQVMgbG9vcC4K
LSAgICAgICAgICAgIGF1dG8qIGhhc2hBbmRGbGFnc0ZlbmNlZCA9IHJlZkNvdW50RGVwZW5kZW5j
eS5jb25zdW1lKCZtX2hhc2hBbmRGbGFncyk7Ci0gICAgICAgICAgICBpZiAoaGFzaEFuZEZsYWdz
RmVuY2VkLT5sb2FkUmVsYXhlZCgpICYgbWFza0lzVW5pcXVlZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ID0gRGVyZWZSZXN1bHQ6Ok5lZWRzTWFpblRocmVhZERlcmVmOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzdWx0
ID0gRGVyZWZSZXN1bHQ6OkRlc3Ryb3llZDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmVzdWx0ID0gRGVyZWZSZXN1bHQ6OkRlcmVmZWRCdXRTdGlsbEFs
aXZlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLQotICAgIGlmIChyZXN1bHQgPT0g
RGVyZWZSZXN1bHQ6OkRlc3Ryb3llZCkKLSAgICAgICAgU3RyaW5nSW1wbDo6ZGVzdHJveSh0aGlz
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBib29sIGhhc09uZVJlZiA9IHRoaXMt
Pmhhc09uZVJlZigpOwotICAgIERlcGVuZGVuY3kgcmVmQ291bnREZXBlbmRlbmN5ID0gRGVwZW5k
ZW5jeTo6ZmVuY2UoaGFzT25lUmVmKTsKLSAgICBpZiAoaGFzT25lUmVmICYmICFpc1N1YlN0cmlu
ZygpKSB7Ci0gICAgICAgIC8vIFRoaXMgZGVwZW5kZW5jeSBwcmV2ZW50cyB0aGUgY29tcGlsZXIg
ZnJvbSBsb2FkaW5nIG91ciBmbGFncyBiZWZvcmUgb3VyIHJlZkNvdW50IG9uCi0gICAgICAgIC8v
IFg4NiBhbmQgaW5zZXJ0cyBhIGRhdGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZW0gb24gQVJNIGdp
dmluZyB1cyBhIGNvbnN1bWUgb3JkZXJpbmcuCi0gICAgICAgIGF1dG8qIGhhc2hBbmRGbGFnc0Zl
bmNlZCA9IHJlZkNvdW50RGVwZW5kZW5jeS5jb25zdW1lKCZtX2hhc2hBbmRGbGFncyk7Ci0gICAg
ICAgIGlmICghKGhhc2hBbmRGbGFnc0ZlbmNlZC0+bG9hZFJlbGF4ZWQoKSAmIG1hc2tJc1VuaXF1
ZWQoKSkpIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmRlc3Ryb3kodGhpcyk7Ci0gICAgICAg
ICAgICByZXR1cm4gRGVyZWZSZXN1bHQ6OkRlc3Ryb3llZDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBEZXJlZlJlc3VsdDo6TmVlZHNNYWluVGhyZWFkRGVyZWY7Ci0jZW5kaWYKKyAg
ICBtX3JlZkNvdW50ID0gdGVtcFJlZkNvdW50OwogfQogCiBpbmxpbmUgVUNoYXIgU3RyaW5nSW1w
bDo6YXQodW5zaWduZWQgaSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VMb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VM
b2dnaW5nLmNwcAppbmRleCA3ZGM5MjlhZjAzNDguLjFmNTgzOTAyODMyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcApAQCAtODAsNyArODAsNiBAQCBWZWN0
b3I8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgc2l6ZV90Pj4gUGVyZm9ybWFuY2VMb2dnaW5nOjpt
ZW1vcnlVc2FnZVN0YXRpc3RpYwogCiBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4gUGVyZm9y
bWFuY2VMb2dnaW5nOjpqYXZhU2NyaXB0T2JqZWN0Q291bnRzKCkKIHsKLSAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIoY29tbW9uVk0oKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoKmNvbW1vblZN
KCkuaGVhcC5vYmplY3RUeXBlQ291bnRzKCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>