<?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>232850</bug_id>
          
          <creation_ts>2021-11-08 14:18:12 -0800</creation_ts>
          <short_desc>Enhance VM traps to implement a stop the world mechanism across all threads.</short_desc>
          <delta_ts>2021-11-08 14:27:40 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>232849</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812838</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-08 14:18:12 -0800</bug_when>
    <thetext>This is need to support the global GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812839</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-08 14:19:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/85172731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812841</commentid>
    <comment_count>2</comment_count>
      <attachid>443608</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-08 14:27:40 -0800</bug_when>
    <thetext>Created attachment 443608
work in progress.

Archiving what I have implemented so far until I can come aback to this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443608</attachid>
            <date>2021-11-08 14:27:40 -0800</date>
            <delta_ts>2021-11-08 14:27:40 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>wip-232850.patch</filename>
            <type>text/plain</type>
            <size>46133</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9F
eGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAkocmV2aXNpb24gMjg1MjUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4LDExICsxMTgsMTMgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQo
KQogewogICAgIHN0YXRpYyBjb25zdCBUaWVyT3B0aW9ucyB0aWVyT3B0aW9uc0xpc3RbXSA9IHsK
ICAgICAgICAgeyAiTExJTlQiLCAgICAwX21zLCAgICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2Ug
LS11c2VMTEludD10cnVlIC0tdXNlSklUPWZhbHNlIiB9LAorI2lmIEVOQUJMRShKSVQpCiAgICAg
ICAgIHsgIkJhc2VsaW5lIiwgMF9tcywgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNl
TExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAogICAgICAgICB7
ICJERkciLCAgICAgIDIwMF9tcywgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJ
bnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9ZmFsc2Ui
IH0sCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIHsgIkZUTCIsICAgICAgNTAwX21zLCAi
LS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0t
dXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1ZSIgfSwKICNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgfTsKICAgICAKICAgICBib29sIGZhaWxlZCA9IGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjA3LDExICszMjA3LDMwIEBAIHVuc2lnbmVkIENvZGVCbG9j
azo6ZnJhbWVSZWdpc3RlckNvdW50KCkKICAgICB9CiB9CiAKK3Vuc2lnbmVkIENvZGVCbG9jazo6
d29yc3RDYXNlRnJhbWVSZWdpc3RlckNvdW50KCkKK3sKKyAgICBzd2l0Y2ggKGppdFR5cGUoKSkg
eworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgorICAgIGNh
c2UgSklUVHlwZTo6RlRMSklUOgorICAgICAgICByZXR1cm4gaml0Q29kZSgpLT5kZmdDb21tb24o
KS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZnJhbWVSZWdpc3RlckNvdW50KCk7CisgICAgfQorfQorCiBpbnQgQ29kZUJsb2NrOjpzdGFja1Bv
aW50ZXJPZmZzZXQoKQogewogICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFt
ZVJlZ2lzdGVyQ291bnQoKSAtIDEpLm9mZnNldCgpOwogfQogCitpbnQgQ29kZUJsb2NrOjp3b3Jz
dENhc2VTdGFja1BvaW50ZXJPZmZzZXQoKQoreworICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbCh3b3JzdENhc2VGcmFtZVJlZ2lzdGVyQ291bnQoKSAtIDEpLm9mZnNldCgpOworfQor
CiBzaXplX3QgQ29kZUJsb2NrOjpwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUoKQogewogICAgIFZN
KiB2bSA9IG1fdm07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCShyZXZpc2lvbiAyODUyNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0OSw3ICs3NDksOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogCiAgICAgdW5zaWduZWQgZnJhbWVS
ZWdpc3RlckNvdW50KCk7CisgICAgdW5zaWduZWQgd29yc3RDYXNlRnJhbWVSZWdpc3RlckNvdW50
KCk7CiAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCgpOworICAgIGludCB3b3JzdENhc2VTdGFj
a1BvaW50ZXJPZmZzZXQoKTsKIAogICAgIGJvb2wgaGFzT3BEZWJ1Z0ZvckxpbmVBbmRDb2x1bW4o
dW5zaWduZWQgbGluZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY29sdW1uKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTUsNyArMzE1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgog
CiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAotICAgIGVtaXRDaGVja1RyYXBzKCk7Cisv
LyAgICBlbWl0Q2hlY2tUcmFwcygpOyAvLyBtbGFtCiAKICAgICBjb25zdCBGdW5jdGlvblN0YWNr
JiBmdW5jdGlvblN0YWNrID0gcHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKIApAQCAtNDQz
LDcgKzQ0Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAog
ICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICBlbWl0Q2hlY2tUcmFwcygpOworLy8g
ICAgZW1pdENoZWNrVHJhcHMoKTsgLy8gbWxhbQogCiAgICAgc3dpdGNoIChjb25zdHJ1Y3Rvcktp
bmQoKSkgewogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgpAQCAtODkxLDcgKzg5MSw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAgIGFsbG9j
YXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICBlbWl0Q2hlY2tUcmFwcygpOworLy8gICAgZW1pdENo
ZWNrVHJhcHMoKTsgLy8gbWxhbQogICAgIAogICAgIGZvciAoRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IGZ1bmN0aW9uIDogZXZhbE5vZGUtPmZ1bmN0aW9uU3RhY2soKSkgewogICAgICAgICBtX2NvZGVC
bG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOwpAQCAtOTg1LDcg
Kzk4NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAg
IGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICBlbWl0Q2hlY2tUcmFwcygpOworLy8gICAg
ZW1pdENoZWNrVHJhcHMoKTsgLy8gbWxhbQogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0
SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIApAQCAtMTMzOSw3ICsxMzM5LDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudGVyKCkKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRMb29wSGludCgpCiB7CiAgICAgT3BMb29wSGludDo6ZW1pdCh0aGlzKTsKLSAgICBlbWl0
Q2hlY2tUcmFwcygpOworICAgIGVtaXRDaGVja1RyYXBzKCk7IC8vIG1sYW0gRklYTUUgdGVtcG9y
YXJpbHkgY29tcGlsZSBvdXQgZm9yIHRlc3QuICBQbGVhc2UgdW5jb21tZW50LgogfQogCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcChMYWJlbCYgdGFyZ2V0KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjg1MjUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDkz
LDcgKzQ0OTMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY090aGVyKTsKICAgICAg
ICAgYnJlYWs7CiAKLSAgICBjYXNlIENoZWNrVHJhcHM6CisgICAgY2FzZSBDaGVja1RyYXBzOiAv
LyBtbGFtIERvZXMgQ2hlY2tUcmFwcyBuZWVkIHRvIGNsb2JiZXJXb3JsZCBzaW5jZSBpdCBjYW4g
Z2M/CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWU6CiAgICAgY2FzZSBMb2dTaGFk
b3dDaGlja2VuVGFpbDoKICAgICBjYXNlIFByb2ZpbGVUeXBlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI4NTI1
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MTE3LDcgKzgxMTcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3Bf
Y2hlY2tfdHJhcHM6IHsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoT3B0aW9uczo6dXNlUG9sbGlu
Z1RyYXBzKCkgPyBDaGVja1RyYXBzIDogSW52YWxpZGF0aW9uUG9pbnQpOworLy8gICAgICAgICAg
ICBhZGRUb0dyYXBoKE9wdGlvbnM6OnVzZVBvbGxpbmdUcmFwcygpID8gQ2hlY2tUcmFwcyA6IElu
dmFsaWRhdGlvblBvaW50KTsgLy8gbWxhbQorICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1Ry
YXBzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NoZWNrX3RyYXBzKTsKICAgICAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lv
biAyODUyNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzIzCi0gICAgICAgIEFT
U0VSVChPcHRpb25zOjp1c2VQb2xsaW5nVHJhcHMoKSk7CisvLyAgICAgICAgQVNTRVJUKE9wdGlv
bnM6OnVzZVBvbGxpbmdUcmFwcygpKTsgLy8gbWxhbQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGNhc2UgQ29tcGFyZUVxOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsMTUgKzMz
NSwxNSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAg
IG1faml0Q29kZS0+Y29tbW9uLm1fcGNUb0NvZGVPcmlnaW5NYXAgPSBtYWtlVW5pcXVlPFBDVG9D
b2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1
ZmZlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ29tcGls
ZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJmbG93KQorc3RhdGlj
IHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dPclZNVHJhcENoZWNrKEpJVENvbXBpbGVyJiBqaXQsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc3RhY2tPdmVyZmxvd09yVk1UcmFwVHJpZ2dlcmVkKQog
ewogICAgIGludCBmcmFtZVRvcE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGppdC5n
cmFwaCgpLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKSAtIDEpLm9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICB1bnNpZ25lZCBtYXhGcmFtZVNpemUgPSAt
ZnJhbWVUb3BPZmZzZXQ7CiAKICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoZnJhbWVUb3BPZmZzZXQpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6cmVnVDEpOwogICAgIGlmIChVTkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNl
cnZlZFpvbmVTaXplKCkpKQotICAgICAgICBzdGFja092ZXJmbG93LmFwcGVuZChqaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKSk7Ci0gICAgc3RhY2tPdmVyZmxvdy5hcHBlbmQoaml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWJvdmUsIE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3Moaml0
LnZtKCkuYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QxKSk7CisgICAg
ICAgIHN0YWNrT3ZlcmZsb3dPclZNVHJhcFRyaWdnZXJlZC5hcHBlbmQoaml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlcikpOworICAgIHN0YWNrT3ZlcmZsb3dPclZNVHJhcFRyaWdnZXJlZC5hcHBlbmQoaml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0
ZUFkZHJlc3Moaml0LnZtKCkuYWRkcmVzc09mU3RhY2tDaGVja0xpbWl0T3JWTVRyYXBUcmlnZ2Vy
KCkpLCBHUFJJbmZvOjpyZWdUMSkpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkK
QEAgLTM1NSw4ICszNTUsMTAgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9z
cGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKIAogICAgIC8v
IFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUg
SlNTdGFjay4KLSAgICBKdW1wTGlzdCBzdGFja092ZXJmbG93OwotICAgIGVtaXRTdGFja092ZXJm
bG93Q2hlY2soKnRoaXMsIHN0YWNrT3ZlcmZsb3cpOworICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZs
b3dPclZNVHJhcFRyaWdnZXJlZDsKKyAgICBlbWl0U3RhY2tPdmVyZmxvd09yVk1UcmFwQ2hlY2so
KnRoaXMsIHN0YWNrT3ZlcmZsb3dPclZNVHJhcFRyaWdnZXJlZCk7CisKKyAgICBMYWJlbCBzdGFj
a0NoZWNrRG9uZSh0aGlzKTsKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLShtX2dyYXBoLmZy
YW1lUmVnaXN0ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KCk7CkBAIC0zNjcsMTYgKzM2OSwxOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlKCkKIAogICAgIC8vID09PSBGb290ZXIgY29kZSBnZW5lcmF0aW9uID09PQogICAgIC8vCi0g
ICAgLy8gR2VuZXJhdGUgdGhlIHN0YWNrIG92ZXJmbG93IGhhbmRsaW5nOyBpZiB0aGUgc3RhY2sg
Y2hlY2sgaW4gdGhlIGVudHJ5IGhlYWQgZmFpbHMsCi0gICAgLy8gd2UgbmVlZCB0byBjYWxsIG91
dCB0byBhIGhlbHBlciBmdW5jdGlvbiB0byB0aHJvdyB0aGUgU3RhY2tPdmVyZmxvd0Vycm9yLgot
ICAgIHN0YWNrT3ZlcmZsb3cubGluayh0aGlzKTsKKyAgICAvLyBJZiB0aGUgc3RhY2sgY2hlY2sg
aW4gdGhlIGVudHJ5IGhlYWQgZmFpbHMsIHdlIGVpdGhlciBoYXZlIGEgc3RhY2sgb3ZlcmZsb3cK
KyAgICAvLyBvciB3ZSBoYXZlIFZNIHRyYXAgZXZlbnRzIHRvIHNlcnZpY2UuIENhbGwgb3V0IHRv
IGEgaGVscGVyIGZ1bmN0aW9uIHRvCisgICAgLy8gdGhyb3cgdGhlIFN0YWNrT3ZlcmZsb3dFcnJv
ciBvciBoYW5kbGUgdGhlIFZNIHRyYXBzIGFzIG5lZWRlZC4KKyAgICBzdGFja092ZXJmbG93T3JW
TVRyYXBUcmlnZ2VyZWQubGluayh0aGlzKTsKIAogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29k
ZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKIAotICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2Rl
QmxvY2spOworICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25IYW5kbGVUcmFwc09yVGhyb3dTdGFja092ZXJmbG93
RXJyb3IsIG1fY29kZUJsb2NrKTsKKyAgICBqdW1wKHN0YWNrQ2hlY2tEb25lKTsKIAogICAgIC8v
IEdlbmVyYXRlIHNsb3cgcGF0aCBjb2RlLgogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRo
R2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CkBAIC00MjEsOCArNDI1LDgg
QEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAvLyBzbyBlbnRlciBh
ZnRlciB0aGlzLgogICAgIExhYmVsIGZyb21Bcml0eUNoZWNrKHRoaXMpOwogICAgIC8vIFBsYW50
IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFj
ay4KLSAgICBKdW1wTGlzdCBzdGFja092ZXJmbG93OwotICAgIGVtaXRTdGFja092ZXJmbG93Q2hl
Y2soKnRoaXMsIHN0YWNrT3ZlcmZsb3cpOworICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZsb3dPclZN
VHJhcFRyaWdnZXJlZDsKKyAgICBlbWl0U3RhY2tPdmVyZmxvd09yVk1UcmFwQ2hlY2soKnRoaXMs
IHN0YWNrT3ZlcmZsb3dPclZNVHJhcFRyaWdnZXJlZCk7CiAKICAgICAvLyBNb3ZlIHRoZSBzdGFj
ayBwb2ludGVyIGRvd24gdG8gYWNjb21tb2RhdGUgbG9jYWxzCiAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMigtKG1fZ3JhcGguZnJhbWVSZWdpc3RlckNvdW50KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC00
MzgsMTkgKzQ0MiwyMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAg
ICAgLy8gPT09IEZ1bmN0aW9uIGZvb3RlciBjb2RlIGdlbmVyYXRpb24gPT09CiAgICAgLy8KLSAg
ICAvLyBHZW5lcmF0ZSBjb2RlIHRvIHBlcmZvcm0gdGhlIHN0YWNrIG92ZXJmbG93IGhhbmRsaW5n
IChpZiB0aGUgc3RhY2sgY2hlY2sgaW4KLSAgICAvLyB0aGUgZnVuY3Rpb24gaGVhZGVyIGZhaWxz
KSwgYW5kIGdlbmVyYXRlIHRoZSBlbnRyeSBwb2ludCB3aXRoIGFyaXR5IGNoZWNrLgorICAgIC8v
IEdlbmVyYXRlIGNvZGUgdG8gcGVyZm9ybSB0aGUgc3RhY2sgb3ZlcmZsb3cgb3Igdm0gdHJhcCBo
YW5kbGluZyAoaWYgdGhlCisgICAgLy8gc3RhY2sgY2hlY2sgaW4gdGhlIGZ1bmN0aW9uIGhlYWRl
ciBmYWlscyksIGFuZCBnZW5lcmF0ZSB0aGUgZW50cnkgcG9pbnQKKyAgICAvLyB3aXRoIGFyaXR5
IGNoZWNrLgogICAgIC8vCi0gICAgLy8gR2VuZXJhdGUgdGhlIHN0YWNrIG92ZXJmbG93IGhhbmRs
aW5nOyBpZiB0aGUgc3RhY2sgY2hlY2sgaW4gdGhlIGZ1bmN0aW9uIGhlYWQgZmFpbHMsCi0gICAg
Ly8gd2UgbmVlZCB0byBjYWxsIG91dCB0byBhIGhlbHBlciBmdW5jdGlvbiB0byB0aHJvdyB0aGUg
U3RhY2tPdmVyZmxvd0Vycm9yLgotICAgIHN0YWNrT3ZlcmZsb3cubGluayh0aGlzKTsKKyAgICAv
LyBJZiB0aGUgc3RhY2sgY2hlY2sgaW4gdGhlIGVudHJ5IGhlYWQgZmFpbHMsIHdlIGVpdGhlciBo
YXZlIGEgc3RhY2sgb3ZlcmZsb3cKKyAgICAvLyBvciB3ZSBoYXZlIFZNIHRyYXAgZXZlbnRzIHRv
IHNlcnZpY2UuIENhbGwgb3V0IHRvIGEgaGVscGVyIGZ1bmN0aW9uIHRvCisgICAgLy8gdGhyb3cg
dGhlIFN0YWNrT3ZlcmZsb3dFcnJvciBvciBoYW5kbGUgdGhlIFZNIHRyYXBzIGFzIG5lZWRlZC4K
KyAgICBzdGFja092ZXJmbG93T3JWTVRyYXBUcmlnZ2VyZWQubGluayh0aGlzKTsKIAogICAgIGVt
aXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBp
ZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVy
YXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNr
T3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVy
YXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25IYW5kbGVUcmFw
c09yVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKICAgICAKICAgICAvLyBU
aGUgZmFzdCBlbnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNv
cnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwogICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhl
IGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0
aWNhbGx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMjg1MjUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NjksMTUgKzI0Njks
MTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHJhcHMoTm9kZSogbm9kZSkKIHsKLSAgICBB
U1NFUlQoT3B0aW9uczo6dXNlUG9sbGluZ1RyYXBzKCkpOworLy8gICAgQVNTRVJUKE9wdGlvbnM6
OnVzZVBvbGxpbmdUcmFwcygpKTsKICAgICBHUFJUZW1wb3JhcnkgdW51c2VkKHRoaXMpOwogICAg
IEdQUlJlZyB1bnVzZWRHUFIgPSB1bnVzZWQuZ3ByKCk7CiAKLSAgICBKSVRDb21waWxlcjo6SnVt
cCBuZWVkVHJhcEhhbmRsaW5nID0gbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpOb25a
ZXJvLAotICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKG1faml0LnZtKCkudHJh
cHMoKS50cmFwQml0c0FkZHJlc3MoKSksCi0gICAgICAgIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpB
c3luY0V2ZW50cykpOworICAgIGlmIChPcHRpb25zOjp1c2VQb2xsaW5nVHJhcHMoKSkgeworICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVkVHJhcEhhbmRsaW5nID0gbV9qaXQuYnJhbmNoVGVz
dDMyKEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29s
dXRlQWRkcmVzcyhtX2ppdC52bSgpLnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLAorICAgICAg
ICAgICAgVHJ1c3RlZEltbTMyKFZNVHJhcHM6OkFzeW5jRXZlbnRzKSk7CiAKLSAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobmVlZFRyYXBIYW5kbGluZywgdGhpcywgb3BlcmF0
aW9uSGFuZGxlVHJhcHMsIHVudXNlZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxp
bmcsIHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpKSk7CisgICAgfQorLy8gICAgIGVsc2UKKy8vICAgICAgICBtX2ppdC5zdG9y
ZTgoVHJ1c3RlZEltbTMyKDApLCBWTVRyYXBzOjpzX3RyYXBzR3VhcmRQYWdlKTsKICAgICBub1Jl
c3VsdChub2RlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjg1MjUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsMTMgKzI3
NywxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCiAgICAg
ICAgIHVuc2lnbmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3Vu
dEZvckV4aXQoKSAqIHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzc09mU3RhY2tMaW1pdCh2bS0+YWRkcmVzc09mU29mdFN0YWNr
TGltaXQoKSk7Ci0gICAgICAgIFBhdGNocG9pbnRWYWx1ZSogc3RhY2tPdmVyZmxvd0hhbmRsZXIg
PSBtX291dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1
dGVBZGRyZXNzIGFkZHJlc3NPZlN0YWNrTGltaXQodm0tPmFkZHJlc3NPZlN0YWNrQ2hlY2tMaW1p
dE9yVk1UcmFwVHJpZ2dlcigpKTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBzdGFja092ZXJm
bG93T3JWTVRyYXBIYW5kbGVyID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4obV9m
dGxTdGF0ZSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7Ci0gICAgICAgIHN0YWNrT3Zl
cmZsb3dIYW5kbGVyLT5hcHBlbmRTb21lUmVnaXN0ZXIobV9jYWxsRnJhbWUpOwotICAgICAgICBz
dGFja092ZXJmbG93SGFuZGxlci0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwotICAgICAgICBzdGFja092ZXJmbG93SGFuZGxlci0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gMTsKLSAgICAgICAgc3RhY2tPdmVyZmxvd0hhbmRsZXItPnNldEdlbmVyYXRvcigK
KyAgICAgICAgc3RhY2tPdmVyZmxvd09yVk1UcmFwSGFuZGxlci0+YXBwZW5kU29tZVJlZ2lzdGVy
KG1fY2FsbEZyYW1lKTsKKyAgICAgICAgc3RhY2tPdmVyZmxvd09yVk1UcmFwSGFuZGxlci0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBzdGFj
a092ZXJmbG93T3JWTVRyYXBIYW5kbGVyLT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAg
ICAgICBzdGFja092ZXJmbG93T3JWTVRyYXBIYW5kbGVyLT5zZXRHZW5lcmF0b3IoCiAgICAgICAg
ICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgZnAgPSBwYXJh
bXNbMF0uZ3ByKCk7CkBAIC0yOTMsMzEgKzI5MywzNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbWF4RnJhbWVTaXplID0gc3RkOjptYXgoZXhpdEZyYW1lU2l6ZSwgZnRsRnJh
bWVTaXplKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OworICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93T3JWTVRyYXBUcmlnZ2VyZWQ7
CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1heEZyYW1lU2l6ZSA+IE9wdGlvbnM6OnJl
c2VydmVkWm9uZVNpemUoKSkpCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3cuYXBw
ZW5kKGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzY3JhdGNoLCBmcCkpOwot
ICAgICAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3cuYXBwZW5kKGppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCBhZGRyZXNzT2ZTdGFja0xpbWl0LCBzY3JhdGNoKSk7CisgICAgICAg
ICAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3dPclZNVHJhcFRyaWdnZXJlZC5hcHBlbmQoaml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNjcmF0Y2gsIGZwKSk7CisgICAgICAgICAg
ICAgICAgc3RhY2tPdmVyZmxvd09yVk1UcmFwVHJpZ2dlcmVkLmFwcGVuZChqaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgYWRkcmVzc09mU3RhY2tMaW1pdCwgc2NyYXRjaCkpOwor
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFja0NoZWNrRG9uZSA9IGpp
dC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgIHN0
YWNrT3ZlcmZsb3cubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIHN0YWNrT3ZlcmZsb3dPclZNVHJhcFRyaWdnZXJlZC5saW5rKCZqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2Rl
QmxvY2soKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICAgICAgICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbigqdm0pOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgaGFuZGxlVHJhcHNPclRocm93U3RhY2tPdmVyZmxvd0Vycm9yQ2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBub0V4Y2VwdGlvbiA9IGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soKnZtLCBBc3NlbWJs
eUhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworICAgICAgICAgICAgICAgICAgICBu
b0V4Y2VwdGlvbi5saW5rVG8oc3RhY2tDaGVja0RvbmUsICZqaXQpOworCiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBub3QgaGF2ZSB0byBkbyB0aGlzIGlmIHRoZSBzdGFj
ayBjaGVjayB3YXMgcGFydCBvZiB0aGUgQWlyCiAgICAgICAgICAgICAgICAgICAgIC8vIHByb2xv
Z3VlLiBUaGVuLCB3ZSB3b3VsZCBrbm93IHRoYXQgdGhlcmUgaXMgbm8gd2F5IGZvciB0aGUgY2Fs
bGVlLXNhdmVzIHRvCiAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBjbG9iYmVyZWQuCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI0NTYKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlKHBhcmFtcy5wcm9j
KCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwogICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdp
c3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKHZtLT50b3BFbnRyeUZyYW1lKTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCB0aHJvd0Nh
bGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotCiAgICAgICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih2bSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbigqdm0p
OwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgbG9va3VwRXhjZXB0aW9u
SGFuZGxlckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMzI1LDcgKzMzMCw3
IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAg
ICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsodGhyb3dDYWxsLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGhhbmRsZVRyYXBz
T3JUaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uSGFuZGxlVHJhcHNPclRocm93U3RhY2tPdmVyZmxvd0Vycm9yKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKTsKICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyODUyNTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2
ICszMDcsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIH5DYWxsRnJhbWUoKTsKIAogICAg
ICAgICBSZWdpc3RlciogdG9wT2ZGcmFtZUludGVybmFsKCk7CisgICAgICAgIFJlZ2lzdGVyKiB3
b3JzdENhc2VUb3BPZkZyYW1lSW50ZXJuYWwoKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5n
IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGluIGRlYnVnZ2luZyBhbmQgdmVyaWZpY2F0aW9uCiAgICAg
ICAgIC8vIGNvZGUgb25seSBhbmQgbm90IG1lYW50IGFzIGFuIEFQSSBmb3IgZ2VuZXJhbCB1c2Fn
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI4NTI1MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzkx
LDEyICs3OTEsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbgog
ICAgIGludCBmcmFtZVRvcE9mZnNldCA9IHN0YWNrUG9pbnRlck9mZnNldEZvcihtX3VubGlua2Vk
Q29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgdW5zaWduZWQgbWF4RnJhbWVTaXpl
ID0gLWZyYW1lVG9wT2Zmc2V0OwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoZnJhbWVUb3BPZmZz
ZXQpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEpOwotICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZs
b3c7CisgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvd09yVk1UcmFwVHJpZ2dlcmVkOwogICAgIGlm
IChVTkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkpKQot
ICAgICAgICBzdGFja092ZXJmbG93LmFwcGVuZChicmFuY2hQdHIoQWJvdmUsIHJlZ1QxLCBjYWxs
RnJhbWVSZWdpc3RlcikpOwotICAgIHN0YWNrT3ZlcmZsb3cuYXBwZW5kKGJyYW5jaFB0cihBYm92
ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRTdGFja0xpbWl0KCkpLCByZWdU
MSkpOworICAgICAgICBzdGFja092ZXJmbG93T3JWTVRyYXBUcmlnZ2VyZWQuYXBwZW5kKGJyYW5j
aFB0cihBYm92ZSwgcmVnVDEsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgc3RhY2tPdmVyZmxv
d09yVk1UcmFwVHJpZ2dlcmVkLmFwcGVuZChicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVz
cyhtX3ZtLT5hZGRyZXNzT2ZTdGFja0NoZWNrTGltaXRPclZNVHJhcFRyaWdnZXIoKSksIHJlZ1Qx
KSk7CiAKICAgICBtb3ZlKHJlZ1QxLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKKyAgICBMYWJl
bCBzdGFja0NoZWNrRG9uZSh0aGlzKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgp
OwogCiAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwpAQCAtODM5LDEyICs4NDEsMTUgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbgogICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+c2V0RW5kT2ZTbG93UGF0aChsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6
ZGVmYXVsdENvZGVPcmlnaW4oKSk7CiAKLSAgICBzdGFja092ZXJmbG93LmxpbmsodGhpcyk7Cisg
ICAgc3RhY2tPdmVyZmxvd09yVk1UcmFwVHJpZ2dlcmVkLmxpbmsodGhpcyk7CiAgICAgbV9ieXRl
Y29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleCgwKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2ssIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
T25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIHJlZ1QwKTsKKyAg
ICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9u
SGFuZGxlVHJhcHNPclRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCByZWdUMCk7CisKKyAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKGZyYW1lVG9wT2Zmc2V0KSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqdW1wKHN0YWNrQ2hlY2tEb25lKTsKIAogICAgIC8vIElm
IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBpcyAxLCB3ZSBuZXZlciByZXF1aXJlIGFyaXR5IGZp
eHVwLgogICAgIGJvb2wgcmVxdWlyZXNBcml0eUZpeHVwID0gbV91bmxpbmtlZENvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpICE9IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcg
QEAKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKIAorZXh0ZXJuIGJv
b2wgbWxhbVZlcmJvc2U7CiBuYW1lc3BhY2UgSlNDIHsKIAogQUxXQVlTX0lOTElORSBKU1ZhbHVl
IHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBK
U1ZhbHVlIG9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCkBAIC05Myw2ICs5
NCwzMCBAQCBleHRlcm4gIkMiIHZvaWQgKiBfUmV0dXJuQWRkcmVzcyh2b2lkKTsKICNlbmRpZgog
CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYW5kbGVUcmFwc09yVGhyb3dT
dGFja092ZXJmbG93RXJyb3IsIHZvaWQsIChDb2RlQmxvY2sqIGNvZGVCbG9jaykpCit7CisgICAg
Ly8gV2UgcGFzcyBpbiBvdXIgb3duIGNvZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFtZSBo
YXNuJ3QgYmVlbiBwb3B1bGF0ZWQuCisgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKG1sYW1W
ZXJib3NlKSBkYXRhTG9nTG4oIiAgICBtbGFtIG9wZXJhdGlvbkhhbmRsZVRyYXBzT3JUaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcjogY2IgIiwgY29kZUJsb2NrKTsKKyAgICBpZiAoVU5MSUtFTFkodm0u
dHJhcHMoKS5uZWVkSGFuZGxpbmcoVk1UcmFwczo6QXN5bmNFdmVudHMpKSkgeworICAgICAgICB2
bS50cmFwcygpLmhhbmRsZVRyYXBzKFZNVHJhcHM6OkFzeW5jRXZlbnRzKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICBSZWdpc3Rlciog
dG9wT2ZGcmFtZSA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBjb2RlQmxvY2stPndvcnN0Q2Fz
ZVN0YWNrUG9pbnRlck9mZnNldCgpOworICAgIGlmIChMSUtFTFkodG9wT2ZGcmFtZSA8PSByZWlu
dGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oY2FsbEZyYW1lKSkpIHsKKyAgICAgICAgaWYgKHRvcE9m
RnJhbWUgPj0gdm0uc29mdFN0YWNrTGltaXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwgY29kZUJs
b2NrKTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBzY29wZSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dFcnJvciwgdm9pZCwgKENvZGVCbG9jayogY29kZUJsb2NrKSkKIHsKICAg
ICAvLyBXZSBwYXNzIGluIG91ciBvd24gY29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1l
IGhhc24ndCBiZWVuIHBvcHVsYXRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyODUyNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBA
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVk1IYW4KIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmssIHZv
aWQsIChKU0dsb2JhbE9iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
KSk7CiAKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFuZGxlVHJhcHNPclRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yLCB2b2lkLCAoQ29kZUJsb2NrKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgdm9pZCwgKENv
ZGVCbG9jayopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2FsbEFyaXR5
Q2hlY2ssIGludDMyX3QsIChKU0dsb2JhbE9iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjaywgaW50MzJfdCwgKEpTR2xvYmFsT2Jq
ZWN0KikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAyODUyNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBACiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKK2V4dGVybiBib29sIG1sYW1WZXJib3NlOwogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCkgXApAQCAt
NTM0LDcgKzUzNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCitMTElO
VF9TTE9XX1BBVEhfREVDTChjaGVja19zdGFja19hbmRfdm1fdHJhcHMpCiB7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwpAQCAtNTQ4LDYg
KzU0OSwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKIAogICAgIExMSU5U
X1NFVF9QQ19GT1JfU1RVQlMoKTsKIAorICAgIGlmIChtbGFtVmVyYm9zZSkgZGF0YUxvZ0xuKCIg
ICAgICAgIG1sYW0gdm0udHJhcHMoKS5uZWVkSGFuZGxpbmcoSlNDOjpWTVRyYXBzOjpBc3luY0V2
ZW50cykgPSAiLCB2bS50cmFwcygpLm5lZWRIYW5kbGluZyhKU0M6OlZNVHJhcHM6OkFzeW5jRXZl
bnRzKSk7CisgICAgaWYgKFVOTElLRUxZKHZtLnRyYXBzKCkubmVlZEhhbmRsaW5nKFZNVHJhcHM6
OkFzeW5jRXZlbnRzKSkpIHsKKyAgICAgICAgdm0udHJhcHMoKS5oYW5kbGVUcmFwcyhWTVRyYXBz
OjpBc3luY0V2ZW50cyk7CisgICAgICAgIGlmIChtbGFtVmVyYm9zZSkgZGF0YUxvZ0xuKCIgICAg
ICAgIG1sYW0gdGhyb3dTY29wZS5leGNlcHRpb24oKSA9ICIsIFJhd1BvaW50ZXIodGhyb3dTY29w
ZS5leGNlcHRpb24oKSkpOworICAgICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRp
b24oKSkpIHsKKyAgICAgICAgICAgIGlmIChtbGFtVmVyYm9zZSkgZGF0YUxvZ0xuKCIgICAgICAg
IG1sYW0gUkVUVVJOIHRvIHJldHVyblRvVGhyb3codm0pIik7CisgICAgICAgICAgICBwYyA9IHJl
dHVyblRvVGhyb3codm0pOworICAgICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgY2FsbEZy
YW1lKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHNsb3dQYXRoTG9nRigiQ2hlY2tpbmcgc3Rh
Y2sgaGVpZ2h0IHdpdGggY2FsbEZyYW1lID0gJXAuXG4iLCBjYWxsRnJhbWUpOwogICAgIHNsb3dQ
YXRoTG9nKCJDb2RlQmxvY2sgPSAiLCBjb2RlQmxvY2ssICJcbiIpOwogICAgIGlmIChjb2RlQmxv
Y2spIHsKQEAgLTU1OSwyMSArNTcxLDIyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2No
ZWNrKQogICAgIHNsb3dQYXRoTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5kIGlzIGF0ICVw
LlxuIiwgdm0uY2xvb3BTdGFja0xpbWl0KCkpOwogI2VuZGlmCiAKKyAgICBSZWdpc3RlciogdG9w
T2ZGcmFtZSA9IGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpOworCiAgICAgLy8gSWYgdGhlIHN0YWNr
IGNoZWNrIHN1Y2NlZWRzIGFuZCB3ZSBkb24ndCBuZWVkIHRvIHRocm93IHRoZSBlcnJvciwgdGhl
bgogICAgIC8vIHdlJ2xsIHJldHVybiAwIGluc3RlYWQuIFRoZSBwcm9sb2d1ZSB3aWxsIGNoZWNr
IGZvciBhIG5vbi16ZXJvIHZhbHVlCiAgICAgLy8gd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRv
IHNldCB0aGUgY2FsbEZyYW1lIG9yIG5vdC4KIAotICAgIC8vIEZvciBKSVQgZW5hYmxlZCBidWls
ZHMgd2hpY2ggdXNlcyB0aGUgQyBzdGFjaywgdGhlIHN0YWNrIGlzIG5vdCBncm93YWJsZS4KLSAg
ICAvLyBIZW5jZSwgaWYgd2UgZ2V0IGhlcmUsIHRoZW4gd2Uga25vdyBhIHN0YWNrIG92ZXJmbG93
IGlzIGltbWluZW50LiBTbywganVzdAotICAgIC8vIHRocm93IHRoZSBTdGFja092ZXJmbG93RXJy
b3IgdW5jb25kaXRpb25hbGx5LgorICAgIGlmIChMSUtFTFkodG9wT2ZGcmFtZSA8PSByZWludGVy
cHJldF9jYXN0PFJlZ2lzdGVyKj4oY2FsbEZyYW1lKSkpIHsKICNpZiBFTkFCTEUoQ19MT09QKQot
ICAgIFJlZ2lzdGVyKiB0b3BPZkZyYW1lID0gY2FsbEZyYW1lLT50b3BPZkZyYW1lKCk7Ci0gICAg
aWYgKExJS0VMWSh0b3BPZkZyYW1lIDwgcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KGNhbGxG
cmFtZSkpKSB7CiAgICAgICAgIEFTU0VSVCghdm0uaW50ZXJwcmV0ZXItPmNsb29wU3RhY2soKS5j
b250YWluc0FkZHJlc3ModG9wT2ZGcmFtZSkpOwogICAgICAgICBpZiAoTElLRUxZKHZtLmVuc3Vy
ZVN0YWNrQ2FwYWNpdHlGb3IodG9wT2ZGcmFtZSkpKQogICAgICAgICAgICAgTExJTlRfUkVUVVJO
X1RXTyhwYywgMCk7Ci0gICAgfQorI2Vsc2UKKyAgICAgICAgaWYgKHRvcE9mRnJhbWUgPj0gdm0u
c29mdFN0YWNrTGltaXQoKSkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIDApOwog
I2VuZGlmCisgICAgfQogCiAgICAgY2FsbEZyYW1lLT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJh
bWUodm0sIGNvZGVCbG9jayk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChlbnRyeV9vc3JfZnUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChsb29wX29zcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
cmVwbGFjZSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc3RhY2tfY2hlY2spOworTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKGNoZWNrX3N0YWNrX2FuZF92bV90cmFwcyk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTU4NywxNyArMTU4NywxMyBAQCBt
YWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQw
LCB0MAogICAgIGJwYSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fdm1bdDFdLCB0MgotICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgIGJw
YmVxIFZNOjptX2Nsb29wU3RhY2tMaW1pdFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSwotICAgIGVs
c2UKLSAgICAgICAgYnBiZXEgVk06Om1fc29mdFN0YWNrTGltaXRbdDJdLCB0MCwgLnN0YWNrSGVp
Z2h0T0sKLSAgICBlbmQKKyAgICBicGJlcSBWTTo6bV9zdGFja0NoZWNrTGltaXRPclZNVHJhcFRy
aWdnZXJbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKIAogLm5lZWRTdGFja0NoZWNrOgogICAgICMg
U3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIHNsb3dfcGF0aC4KICAg
ICAjIFNldCB1cCB0ZW1wb3Jhcnkgc3RhY2sgcG9pbnRlciBmb3IgY2FsbCBpbmNsdWRpbmcgY2Fs
bGVlIHNhdmVzCiAgICAgc3VicCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc3AKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3N0YWNrX2NoZWNrKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfY2hlY2tfc3RhY2tfYW5kX3ZtX3RyYXBzKQogICAgIGJwZXEgcjEsIDAsIC5zdGFja0hlaWdo
dE9LR2V0Q29kZUJsb2NrCiAKICAgICAjIFdlJ3JlIHRocm93aW5nIGJlZm9yZSB0aGUgZnJhbWUg
aXMgZnVsbHkgc2V0IHVwLiBUaGlzIGZyYW1lIHdpbGwgYmUKQEAgLTIyOTQsOSArMjI5MCw4IEBA
IGVuZCkKIGxsaW50T3Aob3BfY2hlY2tfdHJhcHMsIE9wQ2hlY2tUcmFwcywgbWFjcm8gKHVudXNl
ZCwgdW51c2VkLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fdm1bdDFdLCB0MQotICAgIGxvYWRpIFZNOjptX3RyYXBzK1ZNVHJh
cHM6Om1fdHJhcEJpdHNbdDFdLCB0MAotICAgIGFuZGkgVk1UcmFwc0FzeW5jRXZlbnRzLCB0MAot
ICAgIGJ0cG56IHQwLCAuaGFuZGxlVHJhcHMKKyAgICBicGEgVk06Om1fc3RhY2tDaGVja0xpbWl0
T3JWTVRyYXBUcmlnZ2VyW3QxXSwgc3AsIC5oYW5kbGVUcmFwcworCiAuYWZ0ZXJIYW5kbGluZ1Ry
YXBzOgogICAgIGRpc3BhdGNoKCkKIC5oYW5kbGVUcmFwczoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCw4IEBACiAj
aW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2VuZGlmCiAKK2Jvb2wgbWxhbVZlcmJv
c2UgPSBmYWxzZTsKKwogbmFtZXNwYWNlIEpTQyB7CiAKIEF0b21pYzx1bnNpZ25lZD4gVk06OnNf
bnVtYmVyT2ZJRHM7CkBAIC00MjMsNiArNDI1LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlLAogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoSXNXYXRj
aGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDApCiB7CisgICAg
bWxhbVZlcmJvc2UgPSAhIWdldGVudigibWxhbVZlcmJvc2UiKTsgLy8gbWxhbSBURVNUCiAgICAg
aWYgKFVOTElLRUxZKHZtQ3JlYXRpb25TaG91bGRDcmFzaCkpCiAgICAgICAgIENSQVNIX1dJVEhf
SU5GTygweDQyNDI0MjQyMjAyMDIwMjAsIDB4YmFkYmVlZjBiYWRiZWVmLCAweDEyMzQxMjM0MTIz
NDEyMzQsIDB4MTMzNzEzMzcxMzM3MTMzNyk7CiAKQEAgLTk2OSw4ICs5NzIsOSBAQCB2b2lkIFZN
OjpjbGVhclNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKIAogYm9vbCBWTTo6aGFzRXhjZXB0aW9uc0Fm
dGVySGFuZGxpbmdUcmFwcygpCiB7Ci0gICAgaWYgKFVOTElLRUxZKHRyYXBzKCkubmVlZEhhbmRs
aW5nKFZNVHJhcHM6Ok5vbkRlYnVnZ2VyQXN5bmNFdmVudHMpKSkKLSAgICAgICAgbV90cmFwcy5o
YW5kbGVUcmFwcyhWTVRyYXBzOjpOb25EZWJ1Z2dlckFzeW5jRXZlbnRzKTsKKy8vIG1sYW0gVEVT
VCByZW1vdmUgdGVtcG9yYXJpbHkgZm9yIHRlc3QKKy8vICAgIGlmIChVTkxJS0VMWSh0cmFwcygp
Lm5lZWRIYW5kbGluZyhWTVRyYXBzOjpOb25EZWJ1Z2dlckFzeW5jRXZlbnRzKSkpCisvLyAgICAg
ICAgbV90cmFwcy5oYW5kbGVUcmFwcyhWTVRyYXBzOjpOb25EZWJ1Z2dlckFzeW5jRXZlbnRzKTsK
ICAgICByZXR1cm4gZXhjZXB0aW9uKCk7CiB9CiAKQEAgLTEwNTMsMTAgKzEwNTcsMzAgQEAgRXhj
ZXB0aW9uKiBWTTo6dGhyb3dFeGNlcHRpb24oSlNHbG9iYWxPYgogICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIEpTVmFsdWUoZXJyb3IpKTsKIH0KIAorI2lmIEVOQUJMRShD
X0xPT1ApCit2b2lkIFZNOjpzZXRDTG9vcFN0YWNrTGltaXQodm9pZCogbGltaXQpCit7CisgICAg
bV9jbG9vcFN0YWNrTGltaXQgPSBsaW1pdDsKKworICAgIC8vIFdlIG9ubHkgd2FudCB0byBvdmVy
LXdyaXRlIG1fc3RhY2tDaGVja0xpbWl0T3JWTVRyYXBUcmlnZ2VyIHdpdGggbV9jbG9vcFN0YWNr
TGltaXQgaWYKKyAgICAvLyBhbmQgb25seSBpZiBWTVRyYXBzIGhhc24ndCBzZXQgaXQgdG8gVk1f
VFJBUFNfQVNZTkNfUkVRVUVTVF9TVEFDS19MSU1JVC4KKyAgICB2b2lkKiBvbGRDaGVja1ZhbHVl
ID0gbV9zdGFja0NoZWNrTGltaXRPclZNVHJhcFRyaWdnZXI7CisgICAgaWYgKG9sZENoZWNrVmFs
dWUgIT0gVk1fVFJBUFNfQVNZTkNfUkVRVUVTVF9TVEFDS19MSU1JVCkgeworICAgICAgICBXVEY6
OmF0b21pY0NvbXBhcmVFeGNoYW5nZVdlYWtSZWxheGVkKCZtX3N0YWNrQ2hlY2tMaW1pdE9yVk1U
cmFwVHJpZ2dlciwgb2xkQ2hlY2tWYWx1ZSwgIG1fY2xvb3BTdGFja0xpbWl0KTsKKyAgICB9Cisg
ICAgaWYgKG1sYW1WZXJib3NlKSBkYXRhTG9nTG4oIiAgICBtbGFtIFZNOjpzZXRDTG9vcFN0YWNr
TGltaXQoKSA6OiBtX3N0YWNrQ2hlY2tMaW1pdE9yVk1UcmFwVHJpZ2dlciA9PiAiLCBSYXdQb2lu
dGVyKG1fc3RhY2tDaGVja0xpbWl0T3JWTVRyYXBUcmlnZ2VyKSwgIiBvbGRDaGVja1ZhbHVlICIs
IFJhd1BvaW50ZXIob2xkQ2hlY2tWYWx1ZSksICIgbV9jbG9vcFN0YWNrTGltaXQgIiwgUmF3UG9p
bnRlcihtX2Nsb29wU3RhY2tMaW1pdCksICIgVk1fVFJBUFNfQVNZTkNfUkVRVUVTVF9TVEFDS19M
SU1JVCAiLCBSYXdQb2ludGVyKFZNX1RSQVBTX0FTWU5DX1JFUVVFU1RfU1RBQ0tfTElNSVQpKTsK
KyAgICBpZiAobWxhbVZlcmJvc2UpIFdURlJlcG9ydEJhY2t0cmFjZVdpdGhQcmVmaXgoIiAgICAg
ICAgIik7IC8vIG1sYW0gVEVTVAorICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhY2tDaGVja0xpbWl0
T3JWTVRyYXBUcmlnZ2VyID09IG1fY2xvb3BTdGFja0xpbWl0IHx8IG1fc3RhY2tDaGVja0xpbWl0
T3JWTVRyYXBUcmlnZ2VyID09IFZNX1RSQVBTX0FTWU5DX1JFUVVFU1RfU1RBQ0tfTElNSVQpOyAv
LyBtbGFtIG1ha2UgQVNTRVJUIC8gcmVtb3ZlLgorfQorI2VuZGlmCisKIHZvaWQgVk06OnNldFN0
YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzcCkKIHsKICAgICBtX3N0YWNrUG9pbnRlckF0Vk1F
bnRyeSA9IHNwOwotICAgIHVwZGF0ZVN0YWNrTGltaXRzKCk7CisgICAgLy8gV2UgY2FuIHNraXAg
dGhlIHdvcmsgb2YgdXBkYXRpbmcgYWxsIHRoZSBWTSBzdGFjayBsaW1pdHMgaWYgd2UncmUganVz
dAorICAgIC8vIGV4aXRpbmcgdGhlIFZNLgorICAgIGlmIChzcCkKKyAgICAgICAgdXBkYXRlU3Rh
Y2tMaW1pdHMoKTsKIH0KIAogc2l6ZV90IFZNOjp1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShz
aXplX3Qgc29mdFJlc2VydmVkWm9uZVNpemUpCkBAIC0xMDk5LDYgKzExMjMsOCBAQCBzdGF0aWMg
dm9pZCBwcmVDb21taXRTdGFja01lbW9yeSh2b2lkKiBzCiAKIHZvaWQgVk06OnVwZGF0ZVN0YWNr
TGltaXRzKCkKIHsKKyAgICBpZiAobWxhbVZlcmJvc2UpIGRhdGFMb2dMbigiICAgIG1sYW0gVk06
OnVwZGF0ZVN0YWNrTGltaXRzKCkiKTsKKyAgICBpZiAobWxhbVZlcmJvc2UpIFdURlJlcG9ydEJh
Y2t0cmFjZVdpdGhQcmVmaXgoIiAgICAgICAgIik7IC8vIG1sYW0gVEVTVAogI2lmIE9TKFdJTkRP
V1MpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1pdDsKICNl
bmRpZgpAQCAtMTEzMiw2ICsxMTU4LDE4IEBAIHZvaWQgVk06OnVwZGF0ZVN0YWNrTGltaXRzKCkK
ICAgICBpZiAobGFzdFNvZnRTdGFja0xpbWl0ICE9IG1fc29mdFN0YWNrTGltaXQpCiAgICAgICAg
IHByZUNvbW1pdFN0YWNrTWVtb3J5KG1fc29mdFN0YWNrTGltaXQpOwogI2VuZGlmCisKKyNpZiAh
RU5BQkxFKENfTE9PUCkKKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8gb3Zlci13cml0ZSBtX3N0YWNr
Q2hlY2tMaW1pdE9yVk1UcmFwVHJpZ2dlciB3aXRoIG1fc29mdFN0YWNrTGltaXQgaWYKKyAgICAv
LyBhbmQgb25seSBpZiBWTVRyYXBzIGhhc24ndCBzZXQgaXQgdG8gVk1fVFJBUFNfQVNZTkNfUkVR
VUVTVF9TVEFDS19MSU1JVC4KKyAgICB2b2lkKiBvbGRDaGVja1ZhbHVlID0gbV9zdGFja0NoZWNr
TGltaXRPclZNVHJhcFRyaWdnZXI7CisgICAgaWYgKG9sZENoZWNrVmFsdWUgIT0gVk1fVFJBUFNf
QVNZTkNfUkVRVUVTVF9TVEFDS19MSU1JVCkgeworICAgICAgICBXVEY6OmF0b21pY0NvbXBhcmVF
eGNoYW5nZVdlYWtSZWxheGVkKCZtX3N0YWNrQ2hlY2tMaW1pdE9yVk1UcmFwVHJpZ2dlciwgb2xk
Q2hlY2tWYWx1ZSwgIG1fc29mdFN0YWNrTGltaXQpOworICAgIH0KKyAgICBpZiAobWxhbVZlcmJv
c2UpIGRhdGFMb2dMbigiICAgIG1sYW0gVk06OnVwZGF0ZVN0YWNrTGltaXRzKCkgOjogbV9zdGFj
a0NoZWNrTGltaXRPclZNVHJhcFRyaWdnZXIgPT4gIiwgUmF3UG9pbnRlcihtX3N0YWNrQ2hlY2tM
aW1pdE9yVk1UcmFwVHJpZ2dlciksICIgb2xkQ2hlY2tWYWx1ZSAiLCBSYXdQb2ludGVyKG9sZENo
ZWNrVmFsdWUpLCAiIG1fc29mdFN0YWNrTGltaXQgIiwgUmF3UG9pbnRlcihtX3NvZnRTdGFja0xp
bWl0KSwgIiBWTV9UUkFQU19BU1lOQ19SRVFVRVNUX1NUQUNLX0xJTUlUICIsIFJhd1BvaW50ZXIo
Vk1fVFJBUFNfQVNZTkNfUkVRVUVTVF9TVEFDS19MSU1JVCkpOworICAgIGlmIChtbGFtVmVyYm9z
ZSkgV1RGUmVwb3J0QmFja3RyYWNlV2l0aFByZWZpeCgiICAgICAgICAiKTsgLy8gbWxhbSBURVNU
CisgICAgUkVMRUFTRV9BU1NFUlQobV9zdGFja0NoZWNrTGltaXRPclZNVHJhcFRyaWdnZXIgPT0g
bV9zb2Z0U3RhY2tMaW1pdCB8fCBtX3N0YWNrQ2hlY2tMaW1pdE9yVk1UcmFwVHJpZ2dlciA9PSBW
TV9UUkFQU19BU1lOQ19SRVFVRVNUX1NUQUNLX0xJTUlUKTsgLy8gbWxhbSBtYWtlIEFTU0VSVCAv
IHJlbW92ZS4KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4NTI1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3Nyw5ICs5NzcsMTAgQEAg
cHVibGljOgogICAgIHZvaWQqKiBhZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpIHsgcmV0dXJuICZt
X3NvZnRTdGFja0xpbWl0OyB9CiAjaWYgRU5BQkxFKENfTE9PUCkKICAgICB2b2lkKiBjbG9vcFN0
YWNrTGltaXQoKSB7IHJldHVybiBtX2Nsb29wU3RhY2tMaW1pdDsgfQotICAgIHZvaWQgc2V0Q0xv
b3BTdGFja0xpbWl0KHZvaWQqIGxpbWl0KSB7IG1fY2xvb3BTdGFja0xpbWl0ID0gbGltaXQ7IH0K
KyAgICB2b2lkIHNldENMb29wU3RhY2tMaW1pdCh2b2lkKik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCogY3VycmVudENMb29wU3RhY2tQb2ludGVyKCkgY29uc3Q7CiAjZW5kaWYKKyAgICB2
b2lkKiogYWRkcmVzc09mU3RhY2tDaGVja0xpbWl0T3JWTVRyYXBUcmlnZ2VyKCkgeyByZXR1cm4g
Jm1fc3RhY2tDaGVja0xpbWl0T3JWTVRyYXBUcmlnZ2VyOyB9CiAKICAgICBpbmxpbmUgYm9vbCBp
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkgY29uc3Q7CiAgICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSBj
b25zdApAQCAtOTkwLDcgKzk5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkKiogYWRkcmVzc09mTGFz
dFN0YWNrVG9wKCkgeyByZXR1cm4gJm1fbGFzdFN0YWNrVG9wOyB9CiAgICAgdm9pZCogbGFzdFN0
YWNrVG9wKCkgeyByZXR1cm4gbV9sYXN0U3RhY2tUb3A7IH0KICAgICB2b2lkIHNldExhc3RTdGFj
a1RvcCh2b2lkKik7Ci0gICAgCisKICAgICB2b2lkIGZpcmVQcmltaXRpdmVHaWdhY2FnZUVuYWJs
ZWRJZk5lY2Vzc2FyeSgpCiAgICAgewogICAgICAgICBpZiAobV9uZWVkVG9GaXJlUHJpbWl0aXZl
R2lnYWNhZ2VFbmFibGVkKSB7CkBAIC0xMjU3LDYgKzEyNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRp
ZgogICAgIHZvaWQqIG1fbGFzdFN0YWNrVG9wIHsgbnVsbHB0ciB9OwogCisgICAgLy8gVGhpcyB2
YWx1ZSBpcyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklUcyB0byBkbyB0aGVpciBzdGFjayBjaGVj
a3MuCisgICAgLy8gTm9ybWFsbHksIGl0IGlzIHNldCB0byBtX3NvZnRTdGFja0xpbWl0IG9yIG1f
Y2xvb3BTdGFja0xpbWl0LiBIb3dldmVyLAorICAgIC8vIHdoZW4gdGhlcmUncyBhIHBlbmRpbmcg
Vk0gdHJhcCB0aGF0IG5lZWRzIGhhbmRsaW5nLCB0aGlzIHdpbGwgYmUgc2V0CisgICAgLy8gdG8g
Vk1fVFJBUFNfQVNZTkNfUkVRVUVTVF9TVEFDS19MSU1JVCAoZWZmZWN0aXZlbHkgdGhlIG1heCB2
YWx1ZQorICAgIC8vIGZvciB2b2lkKikgd2hpY2ggc2ltdWxhdGUgYSBzdGFjayBvdmVyZmxvdywg
YW5kIGZvcmNlIHRoZSBzdGFjayBjaGVjaworICAgIC8vIHNsb3cgcGF0aCB0byBiZSB0YWtlbiB3
aGVyZSB3ZSBjYW4gaGFuZGxlIGFueSBwZW5kaW5nIHRyYXBzLgorICAgIHZvaWQqIG1fc3RhY2tD
aGVja0xpbWl0T3JWTVRyYXBUcmlnZ2VyIHsgbnVsbHB0ciB9OworCiAgICAgRXhjZXB0aW9uKiBt
X2V4Y2VwdGlvbiB7IG51bGxwdHIgfTsKICAgICBFeGNlcHRpb24qIG1fdGVybWluYXRpb25FeGNl
cHRpb24geyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNlcHRpb24geyBudWxs
cHRyIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAko
cmV2aXNpb24gMjg1MjUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFw
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvVGhy
ZWFkTWVzc2FnZS5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAorZXh0ZXJu
IGJvb2wgbWxhbVZlcmJvc2U7CiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShTSUdOQUxf
QkFTRURfVk1fVFJBUFMpCkBAIC0xNTIsMzcgKzE1MywzNyBAQCB2b2lkIFZNVHJhcHM6OnRyeUlu
c3RhbGxUcmFwQnJlYWtwb2ludHMoCiAgICAgfQogfQogCi12b2lkIFZNVHJhcHM6OmludmFsaWRh
dGVDb2RlQmxvY2tzT25TdGFjaygpCi17Ci0gICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNr
KHZtKCkudG9wQ2FsbEZyYW1lKTsKLX0KLQotdm9pZCBWTVRyYXBzOjppbnZhbGlkYXRlQ29kZUJs
b2Nrc09uU3RhY2soQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpCi17Ci0gICAgTG9ja2VyIGNvZGVC
bG9ja1NldExvY2tlciB7IHZtKCkuaGVhcC5jb2RlQmxvY2tTZXQoKS5nZXRMb2NrKCkgfTsKLSAg
ICBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soY29kZUJsb2NrU2V0TG9ja2VyLCB0b3BDYWxs
RnJhbWUpOwotfQotICAgIAotdm9pZCBWTVRyYXBzOjppbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3Rh
Y2soTG9ja2VyPExvY2s+JiwgQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpCi17Ci0gICAgaWYgKCFt
X25lZWRUb0ludmFsaWRhdGVkQ29kZUJsb2NrcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9u
ZWVkVG9JbnZhbGlkYXRlZENvZGVCbG9ja3MgPSBmYWxzZTsKLQotICAgIEVudHJ5RnJhbWUqIGVu
dHJ5RnJhbWUgPSB2bSgpLnRvcEVudHJ5RnJhbWU7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSB0b3BDYWxsRnJhbWU7Ci0KLSAgICBpZiAoIWVudHJ5RnJhbWUpCi0gICAgICAgIHJldHVybjsg
Ly8gTm90IHJ1bm5pbmcgSlMgY29kZS4gTm90aGluZyB0byBpbnZhbGlkYXRlLgotCi0gICAgd2hp
bGUgKGNhbGxGcmFtZSkgewotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7Ci0gICAgICAgIGlmIChjb2RlQmxvY2sgJiYgSklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkKLSAgICAgICAgICAgIGNvZGVCbG9jay0+
amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9WTVRyYXBzKTsKLSAgICAgICAgY2FsbEZy
YW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZShlbnRyeUZyYW1lKTsKLSAgICB9Ci19CisvL3Zv
aWQgVk1UcmFwczo6aW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKCkKKy8veworLy8gICAgaW52
YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKHZtKCkudG9wQ2FsbEZyYW1lKTsKKy8vfQorLy8KKy8v
dm9pZCBWTVRyYXBzOjppbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soQ2FsbEZyYW1lKiB0b3BD
YWxsRnJhbWUpCisvL3sKKy8vICAgIExvY2tlciBjb2RlQmxvY2tTZXRMb2NrZXIgeyB2bSgpLmhl
YXAuY29kZUJsb2NrU2V0KCkuZ2V0TG9jaygpIH07CisvLyAgICBpbnZhbGlkYXRlQ29kZUJsb2Nr
c09uU3RhY2soY29kZUJsb2NrU2V0TG9ja2VyLCB0b3BDYWxsRnJhbWUpOworLy99CisvLworLy92
b2lkIFZNVHJhcHM6OmludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhMb2NrZXI8TG9jaz4mLCBD
YWxsRnJhbWUqIHRvcENhbGxGcmFtZSkKKy8veworLy8gICAgaWYgKCFtX25lZWRUb0ludmFsaWRh
dGVkQ29kZUJsb2NrcykKKy8vICAgICAgICByZXR1cm47CisvLworLy8vLyAgICBtX25lZWRUb0lu
dmFsaWRhdGVkQ29kZUJsb2NrcyA9IGZhbHNlOworLy8KKy8vICAgIEVudHJ5RnJhbWUqIGVudHJ5
RnJhbWUgPSB2bSgpLnRvcEVudHJ5RnJhbWU7CisvLyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHRvcENhbGxGcmFtZTsKKy8vCisvLyAgICBpZiAoIWVudHJ5RnJhbWUpCisvLyAgICAgICAgcmV0
dXJuOyAvLyBOb3QgcnVubmluZyBKUyBjb2RlLiBOb3RoaW5nIHRvIGludmFsaWRhdGUuCisvLwor
Ly8gICAgd2hpbGUgKGNhbGxGcmFtZSkgeworLy8gICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKy8vICAgICAgICBpZiAoY29kZUJsb2NrICYmIEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpCisvLyAgICAgICAg
ICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9WTVRyYXBzKTsK
Ky8vICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKGVudHJ5RnJhbWUp
OworLy8gICAgfQorLy99CiAKIGNsYXNzIFZNVHJhcHM6OlNpZ25hbFNlbmRlciBmaW5hbCA6IHB1
YmxpYyBBdXRvbWF0aWNUaHJlYWQgewogcHVibGljOgpAQCAtMzIwLDE1ICszMjEsMzIgQEAgdm9p
ZCBWTVRyYXBzOjp3aWxsRGVzdHJveVZNKCkKIAogdm9pZCBWTVRyYXBzOjpmaXJlVHJhcChWTVRy
YXBzOjpFdmVudCBldmVudCkKIHsKLSAgICBBU1NFUlQoIXZtKCkuY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBpZiAobWxhbVZl
cmJvc2UpIGRhdGFMb2dMbigiICAgIG1sYW0gVk1UcmFwczo6ZmlyZVRyYXBzIik7CisgICAgQVNT
RVJUKCF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBBU1NFUlQob25s
eUNvbnRhaW5zQXN5bmNFdmVudHMoZXZlbnQpKTsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVCghbV9pc1NodXR0aW5nRG93bik7CisKKyAg
ICAgICAgLy8gU2V0IHVwIGV2ZW50IGhhbmRsaW5nIHRyaWdnZXJzLiBUcmlnZ2VycyBhcmUgY2xl
YXJlZCBpbiBWTVRyYXBzOjpoYW5kbGVUcmFwcygpLgorCisgICAgICAgIC8vIFRyaWdnZXIgMTog
c2V0IHRoZSB0cmFwIGV2ZW50IGJpdHMuCisgICAgICAgIC8vIFRoZXNlIGFyZSBjaGVja2VkIGJ5
IEMrKyBjb2RlLCBhbmQgc2hvdWxkIGFsd2F5cyBiZSBzZXQgZmlyc3QKKyAgICAgICAgLy8gYmVm
b3JlIHRoZSBvdGhlciB0cmlnZ2Vycy4gT3RoZXJ3aXNlLCBvdGhlciB0cmlnZ2VycyBtYXkgY2F1
c2UKKyAgICAgICAgLy8gaGFuZGxlVHJhcHMoKSB0byBiZSBjYWxsZWQgYmVmb3JlIGl0IGNhbiBz
ZWUgd2hhdCB0cmFwIHdhcyBmaXJlZC4KICAgICAgICAgc2V0VHJhcEJpdChldmVudCk7Ci0gICAg
ICAgIG1fbmVlZFRvSW52YWxpZGF0ZWRDb2RlQmxvY2tzID0gdHJ1ZTsKKworLy8gICAgICAgIG1f
bmVlZFRvSW52YWxpZGF0ZWRDb2RlQmxvY2tzID0gdHJ1ZTsKKworICAgICAgICAvLyBUcmlnZ2Vy
IDI6IG1ha2UgSlMgc3RhY2sgY2hlY2tzIGFuZCBMTEludCBsb29wIGhpbnRzIHNlcnZpY2UgdHJh
cHMuCisgICAgICAgIHZtLm1fc3RhY2tDaGVja0xpbWl0T3JWTVRyYXBUcmlnZ2VyID0gVk1fVFJB
UFNfQVNZTkNfUkVRVUVTVF9TVEFDS19MSU1JVDsKKyAgICAgICAgaWYgKG1sYW1WZXJib3NlKSBk
YXRhTG9nTG4oIiAgICBtbGFtIFZNOjpyZXF1ZXN0Vk1UcmFwSGFuZGxpbmcoKSA6OiBtX3N0YWNr
Q2hlY2tMaW1pdE9yVk1UcmFwVHJpZ2dlciA9PiAiLCBSYXdQb2ludGVyKHZtLm1fc3RhY2tDaGVj
a0xpbWl0T3JWTVRyYXBUcmlnZ2VyKSk7CisKKyAgICAgICAgLy8gVHJpZ2dlciAzOiBwcm90ZWN0
IHRoZSBTSUdTRUdWIHRyaWdnZXIgcGFnZS4KKyAgICAgICAgLy8gVGhpcyBtYWtlcyBKSVQgbG9v
cCBoaW50cyBzZXJ2aWNlIHRyYXBzLgogICAgIH0KLSAgICAKKwogI2lmIEVOQUJMRShTSUdOQUxf
QkFTRURfVk1fVFJBUFMpCiAgICAgaWYgKCFPcHRpb25zOjp1c2VQb2xsaW5nVHJhcHMoKSkgewog
ICAgICAgICAvLyBzZW5kU2lnbmFsKCkgY2FuIGxvb3AgdW50aWwgaXQgaGFzIGNvbmZpcm1hdGlv
biB0aGF0IHRoZSBtdXRhdG9yIHRocmVhZApAQCAtMzM2LDcgKzM1NCw3IEBAIHZvaWQgVk1UcmFw
czo6ZmlyZVRyYXAoVk1UcmFwczo6RXZlbnQgZXYKICAgICAgICAgLy8gZmlyZVRyYXAoKSBkb2Vz
IG5vdCBibG9jay4KICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAg
aWYgKCFtX3NpZ25hbFNlbmRlcikKLSAgICAgICAgICAgIG1fc2lnbmFsU2VuZGVyID0gYWRvcHRS
ZWYobmV3IFNpZ25hbFNlbmRlcihsb2NrZXIsIHZtKCkpKTsKKyAgICAgICAgICAgIG1fc2lnbmFs
U2VuZGVyID0gYWRvcHRSZWYobmV3IFNpZ25hbFNlbmRlcihsb2NrZXIsIHZtKSk7CiAgICAgICAg
IG1fY29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CiAjZW5kaWYKQEAgLTM1Miwy
MSArMzcwLDIzIEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoVk1UcmFwczo6Qml0RmkKICAg
ICBpZiAoaXNEZWZlcnJpbmdUZXJtaW5hdGlvbigpKQogICAgICAgICBtYXNrICY9IH5OZWVkVGVy
bWluYXRpb247CiAKLSAgICB7Ci0gICAgICAgIExvY2tlciBjb2RlQmxvY2tTZXRMb2NrZXIgeyB2
bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSB9OwotICAgICAgICB2bS5oZWFwLmZvckVh
Y2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5zKGNvZGVCbG9ja1NldExvY2tlciwgWyZdIChDb2Rl
QmxvY2sqIGNvZGVCbG9jaykgewotICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBqZXR0aXNvbiBh
bGwgY29kZSBibG9ja3MgdGhhdCBoYXZlIHZtIHRyYXBzIGJyZWFrcG9pbnRzLCBvdGhlcndpc2Ug
d2UgY291bGQgaGl0IHRoZW0gbGF0ZXIuCi0gICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNJ
bnN0YWxsZWRWTVRyYXBCcmVha3BvaW50cygpKQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+
amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9WTVRyYXBzKTsKLSAgICAgICAgfSk7Ci0g
ICAgfQorLy8gICAgeworLy8gICAgICAgIExvY2tlciBjb2RlQmxvY2tTZXRMb2NrZXIgeyB2bS5o
ZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSB9OworLy8gICAgICAgIHZtLmhlYXAuZm9yRWFj
aENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnMoY29kZUJsb2NrU2V0TG9ja2VyLCBbJl0gKENvZGVC
bG9jayogY29kZUJsb2NrKSB7CisvLyAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gamV0dGlzb24g
YWxsIGNvZGUgYmxvY2tzIHRoYXQgaGF2ZSB2bSB0cmFwcyBicmVha3BvaW50cywgb3RoZXJ3aXNl
IHdlIGNvdWxkIGhpdCB0aGVtIGxhdGVyLgorLy8gICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5o
YXNJbnN0YWxsZWRWTVRyYXBCcmVha3BvaW50cygpKQorLy8gICAgICAgICAgICAgICAgY29kZUJs
b2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1ZNVHJhcHMpOworLy8gICAgICAg
IH0pOworLy8gICAgfQogCisgICAgYm9vbCBuZWVkVG9UaHJvd1Rlcm1pbmF0aW9uRXhjZXB0aW9u
ID0gZmFsc2U7CiAgICAgd2hpbGUgKG5lZWRIYW5kbGluZyhtYXNrKSkgewogICAgICAgICBhdXRv
IGV2ZW50ID0gdGFrZVRvcFByaW9yaXR5VHJhcChtYXNrKTsKICAgICAgICAgc3dpdGNoIChldmVu
dCkgewogICAgICAgICBjYXNlIE5lZWREZWJ1Z2dlckJyZWFrOgogICAgICAgICAgICAgZGF0YUxv
ZygiVk0gIiwgUmF3UG9pbnRlcigmdm0pLCAiIG9uIHBpZCAiLCBnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICIgcmVjZWl2ZWQgTmVlZERlYnVnZ2VyQnJlYWsgdHJhcFxuIik7Ci0gICAgICAgICAgICBp
bnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2sodm0udG9wQ2FsbEZyYW1lKTsKKy8vICAgICAgICAg
ICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKHZtLnRvcENhbGxGcmFtZSk7CisgICAgICAg
ICAgICAvLyBtbGFtIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE5l
ZWRTaGVsbFRpbWVvdXRDaGVjazoKQEAgLTM3NiwyMyArMzk2LDYyIEBAIHZvaWQgVk1UcmFwczo6
aGFuZGxlVHJhcHMoVk1UcmFwczo6Qml0RmkKIAogICAgICAgICBjYXNlIE5lZWRXYXRjaGRvZ0No
ZWNrOgogICAgICAgICAgICAgQVNTRVJUKHZtLndhdGNoZG9nKCkpOwotICAgICAgICAgICAgaWYg
KExJS0VMWSghdm0ud2F0Y2hkb2coKS0+aXNBY3RpdmUoKSB8fCAhdm0ud2F0Y2hkb2coKS0+c2hv
dWxkVGVybWluYXRlKHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpKSkpCisgICAgICAgICAg
ICBpZiAobWxhbVZlcmJvc2UpIGRhdGFMb2dMbigiICAgIG1sYW0gVk1UcmFwczo6aGFuZGxlVHJh
cHM6IE5lZWRXYXRjaGRvZ0NoZWNrIC0gdm0udG9wQ2FsbEZyYW1lICIsIFJhd1BvaW50ZXIodm0u
dG9wQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKCF2bS53YXRjaGRvZygpLT5p
c0FjdGl2ZSgpIHx8ICF2bS53YXRjaGRvZygpLT5zaG91bGRUZXJtaW5hdGUodm0uZW50cnlTY29w
ZS0+Z2xvYmFsT2JqZWN0KCkpKSkgeworICAgICAgICAgICAgICAgIGlmIChtbGFtVmVyYm9zZSkg
V1RGUmVwb3J0QmFja3RyYWNlV2l0aFByZWZpeCgiICAgICAgICAiKTsgLy8gbWxhbSBURVNUCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB2bS5z
ZXRUZXJtaW5hdGlvbkluUHJvZ3Jlc3ModHJ1ZSk7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
IAogICAgICAgICBjYXNlIE5lZWRUZXJtaW5hdGlvbjoKKyAgICAgICAgICAgIGlmIChtbGFtVmVy
Ym9zZSkgZGF0YUxvZ0xuKCIgICAgbWxhbSBWTVRyYXBzOjpoYW5kbGVUcmFwczogTmVlZFRlcm1p
bmF0aW9uIC0gdm0udG9wQ2FsbEZyYW1lICIsIFJhd1BvaW50ZXIodm0udG9wQ2FsbEZyYW1lKSk7
CisgICAgICAgICAgICBpZiAobWxhbVZlcmJvc2UpIFdURlJlcG9ydEJhY2t0cmFjZVdpdGhQcmVm
aXgoIiAgICAgICAgIik7IC8vIG1sYW0gVEVTVAogICAgICAgICAgICAgQVNTRVJUKHZtLnRlcm1p
bmF0aW9uSW5Qcm9ncmVzcygpKTsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKy8vICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAgICAgaWYgKCFpc0RlZmVycmluZ1Rl
cm1pbmF0aW9uKCkpCi0gICAgICAgICAgICAgICAgdm0udGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlv
bigpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIG5lZWRUb1Rocm93VGVy
bWluYXRpb25FeGNlcHRpb24gPSB0cnVlOworLy8gICAgICAgICAgICAgICAgdm0udGhyb3dUZXJt
aW5hdGlvbkV4Y2VwdGlvbigpOworICAgICAgICAgICAgLy8gbWxhbSBGSVhNRToKKyAgICAgICAg
ICAgIGJyZWFrOworLy8gICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSBOZWVkRXhj
ZXB0aW9uSGFuZGxpbmc6CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQorCisgICAgeworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OworCisgICAgICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2Ug
dGhhdCBhbm90aGVyIHRocmVhZCBjb3VsZCBoYXZlIHJhY2VkIGFnYWluc3QgdXMKKyAgICAgICAg
Ly8gYW5kIGZpcmVkIG9mZiBtb3JlIEFzeW5jRXZlbnQgdHJhcHMuIEhlbmNlLCB3ZSBzaG91bGQg
b25seSBjbGVhcgorICAgICAgICAvLyB0aGUgdHJhcCB0cmlnZ2VycyBpZiBhbmQgb25seSBpZiB3
ZSBkb24ndCBzZWUgbmV3IHBlbmRpbmcgZXZlbnRzLgorICAgICAgICAvLyBJZiB0aGVyZSBhcmUg
bmV3IHBlbmRpbmcgZXZlbnRzLCB3ZSdsbCBqdXN0IHJldHVybiB3aXRob3V0IGNsZWFyaW5nCisg
ICAgICAgIC8vIHRoZSB0cmlnZ2Vycy4gVGhpcyB3aWxsIGxldCB0aGUgbmV4dCBjaGVjayBwb2lu
dCByZXNwb25kIHRvIHRoZQorICAgICAgICAvLyB0cmlnZ2VycyBhbmQgY2FsbCBoYW5kbGVUcmFw
cygpIGFnYWluIHRvIGhhbmRsZSB0aGUgbmV3IGV2ZW50cy4KKyAgICAgICAgaWYgKCFuZWVkSGFu
ZGxpbmcoQXN5bmNFdmVudHMpKSB7CisgICAgICAgICAgICAvLyBDbGVhcmluZyBldmVudCBoYW5k
bGluZyB0cmlnZ2Vycy4gVGhpcyBpcyB0aGUgY29tcGxlbWVudCBvZgorICAgICAgICAgICAgLy8g
dGhlIHdvcmsgZG9uZSBpbiBWTVRyYXBzOjpmaXJlVHJhcCgpLgorCisgICAgICAgICAgICAvLyBU
cmlnZ2VyIDE6IHRoZSB0cmFwIGV2ZW50IGJpdHMgYXJlIGFscmVhZHkgY2xlYXJlZC4KKworICAg
ICAgICAgICAgLy8gVHJpZ2dlciAyOiByZXN0b3JlIHRoZSByZWFsIHN0YWNrIGNoZWNrIGxpbWl0
cy4KKyNpZiBFTkFCTEUoQ19MT09QKQorICAgICAgICAgICAgdm0ubV9zdGFja0NoZWNrTGltaXRP
clZNVHJhcFRyaWdnZXIgPSB2bS5tX2Nsb29wU3RhY2tMaW1pdDsKKyNlbHNlCisgICAgICAgICAg
ICB2bS5tX3N0YWNrQ2hlY2tMaW1pdE9yVk1UcmFwVHJpZ2dlciA9IHZtLm1fc29mdFN0YWNrTGlt
aXQ7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChtbGFtVmVyYm9zZSkgZGF0YUxvZ0xuKCIgICAg
bWxhbSBWTTo6Y2xlYXJWTVRyYXBIYW5kbGluZ1JlcXVlc3QoKSA6OiBtX3N0YWNrQ2hlY2tMaW1p
dE9yVk1UcmFwVHJpZ2dlciA9PiAiLCBSYXdQb2ludGVyKHZtLm1fc3RhY2tDaGVja0xpbWl0T3JW
TVRyYXBUcmlnZ2VyKSk7CisKKyAgICAgICAgICAgIC8vIFRyaWdnZXIgMzogdW5wcm90ZWN0IHRo
ZSBTSUdTRUdWIHRyaWdnZXIgcGFnZS4KKyAgICAgICAgfQorICAgIH0KKworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICBpZiAobmVlZFRvVGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlvbikKKyAgICAg
ICAgdm0udGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpOwogfQogCiBhdXRvIFZNVHJhcHM6OnRh
a2VUb3BQcmlvcml0eVRyYXAoVk1UcmFwczo6Qml0RmllbGQgbWFzaykgLT4gRXZlbnQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmgJKHJldmlzaW9uIDI4NTI1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIFZNOwogCisjZGVmaW5lIFZNX1RSQVBTX0FTWU5DX1JFUVVFU1RfU1RBQ0tfTElN
SVQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+
OjptYXgoKSkKKwogY2xhc3MgVk1UcmFwcyB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQml0RmllbGQg
PSB1aW50MzJfdDsKQEAgLTIwMiw4ICsyMDQsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3Rp
ZnlHcmFiQWxsTG9ja3MoKQogICAgIHsKLSAgICAgICAgaWYgKG5lZWRIYW5kbGluZyhBc3luY0V2
ZW50cykpCi0gICAgICAgICAgICBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soKTsKKyAgICAg
ICAgLy8gVGhlIHJlYXNvbiB3ZSBuZWVkIHRoaXMgaXMgYmVjYXVzZSBhIHRyYXAgcmVxdWVzdCBt
YXkgaGF2ZSBhcnJpdmVkCisgICAgICAgIC8vIHdoaWxlIGFsbCBsb2NrcyBoYXZlIGJlZW4gZHJv
cHBlZC4gIEFzIGEgcmVzdWx0LCB3ZSBkaWQgbm90IGdldCBhCisgICAgICAgIC8vIGNoYW5jZSB0
byBpbnZhbGlkYXRlIGNvZGVCbG9ja3Mgb24gdGhlIHN0YWNrLiAgSGVuY2UsIGlmIHdlIHN0aWxs
CisgICAgICAgIC8vIHNlZSBhIHBlbmRpbmcgcmVxdWVzdCBvbiByZS1lbnRyeSB0byB0aGUgVk0g
aGVyZSwgd2UgbmVlZCB0byBwcmVwCisgICAgICAgIC8vIHRoZSBjb2RlQmxvY2tzIHRvIGhhbmRs
ZSB0aGUgdHJhcC4KKy8vICAgICAgICBpZiAobmVlZEhhbmRsaW5nKEFzeW5jRXZlbnRzKSkKKy8v
ICAgICAgICAgICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKCk7CiAgICAgfQogCiAgICAg
Ym9vbCBoYXNUcmFwQml0KEV2ZW50IGV2ZW50LCBCaXRGaWVsZCBtYXNrKQpAQCAtMjM3LDE1ICsy
NDQsMTUgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBTaWduYWxTZW5kZXI7CiAgICAgZnJpZW5kIGNs
YXNzIFNpZ25hbFNlbmRlcjsKIAotICAgIHZvaWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNr
KCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soQ2FsbEZyYW1lKiB0b3BD
YWxsRnJhbWUpOwotICAgIHZvaWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKExvY2tlcjxM
b2NrPiYgY29kZUJsb2NrU2V0TG9ja2VyLCBDYWxsRnJhbWUqIHRvcENhbGxGcmFtZSk7CisvLyAg
ICB2b2lkIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjaygpOworLy8gICAgdm9pZCBpbnZhbGlk
YXRlQ29kZUJsb2Nrc09uU3RhY2soQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpOworLy8gICAgdm9p
ZCBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soTG9ja2VyPExvY2s+JiBjb2RlQmxvY2tTZXRM
b2NrZXIsIENhbGxGcmFtZSogdG9wQ2FsbEZyYW1lKTsKIAogICAgIHZvaWQgYWRkU2lnbmFsU2Vu
ZGVyKFNpZ25hbFNlbmRlciopOwogICAgIHZvaWQgcmVtb3ZlU2lnbmFsU2VuZGVyKFNpZ25hbFNl
bmRlciopOwotI2Vsc2UKLSAgICB2b2lkIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjaygpIHsg
fQotICAgIHZvaWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKENhbGxGcmFtZSopIHsgfQor
Ly8jZWxzZQorLy8gICAgdm9pZCBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soKSB7IH0KKy8v
ICAgIHZvaWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKENhbGxGcmFtZSopIHsgfQogI2Vu
ZGlmCiAKICAgICBzdGF0aWMgY29uc3RleHByIEJpdEZpZWxkIE5lZWRFeGNlcHRpb25IYW5kbGlu
Z01hc2sgPSB+KDEgPDwgTmVlZEV4Y2VwdGlvbkhhbmRsaW5nKTsKQEAgLTI1Myw3ICsyNjAsNyBA
QCBwcml2YXRlOgogICAgIEJveDxMb2NrPiBtX2xvY2s7CiAgICAgUmVmPEF1dG9tYXRpY1RocmVh
ZENvbmRpdGlvbj4gbV9jb25kaXRpb247CiAgICAgQXRvbWljPEJpdEZpZWxkPiBtX3RyYXBCaXRz
IHsgMCB9OwotICAgIGJvb2wgbV9uZWVkVG9JbnZhbGlkYXRlZENvZGVCbG9ja3MgeyBmYWxzZSB9
OworLy8gICAgYm9vbCBtX25lZWRUb0ludmFsaWRhdGVkQ29kZUJsb2NrcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIHsgZmFsc2UgfTsKICAgICBib29sIG1fc3VzcGVuZGVk
VGVybWluYXRpb25FeGNlcHRpb24geyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fZGVmZXJUZXJt
aW5hdGlvbkNvdW50IHsgMCB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>