<?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>82080</bug_id>
          
          <creation_ts>2012-03-23 12:42:26 -0700</creation_ts>
          <short_desc>[GObject bindings] Fix the coding style issues in the generated bindings</short_desc>
          <delta_ts>2012-04-06 10:24:12 -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>WebKitGTK</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80030</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>abarth</cc>
    
    <cc>fischman</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586622</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-03-23 12:42:26 -0700</bug_when>
    <thetext>Title sums it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597018</commentid>
    <comment_count>1</comment_count>
      <attachid>135934</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-05 16:39:56 -0700</bug_when>
    <thetext>Created attachment 135934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597217</commentid>
    <comment_count>2</comment_count>
      <attachid>135934</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-05 23:11:48 -0700</bug_when>
    <thetext>Comment on attachment 135934
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597375</commentid>
    <comment_count>3</comment_count>
      <attachid>135934</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-06 08:30:31 -0700</bug_when>
    <thetext>Comment on attachment 135934
Patch

Rejecting attachment 135934 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
kit-commit-queue/Source/WebKit/chromium/tools/win --revision 130110 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
44&gt;At revision 130110.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/12341925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597436</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-06 10:10:17 -0700</bug_when>
    <thetext>Committed r113450: &lt;http://trac.webkit.org/changeset/113450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135934</attachid>
            <date>2012-04-05 16:39:56 -0700</date>
            <delta_ts>2012-04-06 10:24:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82080-20120405163955.patch</filename>
            <type>text/plain</type>
            <size>231723</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc5OWNhYjU1M2JhNGNh
ZTJiNGRjMTZjMzA2OTVkOWZjZjBiY2M2OC4uMWRmYzA2NjdjNGViNTMxMTk5ODM5MWU1NTVjZWEy
NzJmYWJkODViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR09iamVjdCBi
aW5kaW5nc10gRml4IHRoZSBjb2Rpbmcgc3R5bGUgaXNzdWVzIGluIHRoZSBnZW5lcmF0ZWQgYmlu
ZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
MDgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBUaGlzIGlzIGNvdmVyZWQgYnkgdGhlIGJpbmRpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOiBGaXggbW9zdCBz
dHlsZSBlcnJvcnMgaW4gdGhlIGdlbmVyYXRlZAorICAgICAgICAgIEdPYmplY3QgY29kZS4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdDogVXBkYXRlZCB0aGUgZXhwZWN0
ZWQgcmVzdWx0cy4KKworCiAyMDEyLTA0LTAyICBTcmlrdW1hciBCb25kYSAgPHNyaWt1bWFyLmJA
Z21haWwuY29tPgogCiAgICAgICAgIE1pc3NpbmcgTlVMTCBjaGVjayBmb3IgdmVuZG9yIHN0cmlu
ZyBmcm9tIGdsR2V0U3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IGI0OGYyM2U5ZjMxMTI0YTEy
NThlYTJmOTg3ODAxZGM4ZjdhNjQ1ZDIuLjczNTIyMWFlMTFlYTc0OTgxOWFiYmY3ZTNjZTVmOTdl
MWUwOWMwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckdPYmplY3QucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtNDM1LDcgKzQzNSw3IEBAIHN1YiBHZW5lcmF0
ZVByb3BlcnR5IHsKIAogICAgIGlmIChncmVwIHskXyBlcSAkYXR0cmlidXRlfSBAd3JpdGVhYmxl
UHJvcGVydGllcykgewogICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiNpZiAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICBwdXNoKEB0eHRT
ZXRQcm9wcywgIiAgICBjYXNlICR7cHJvcEVudW19OlxuICAgIHtcbiIpOworICAgICAgICBwdXNo
KEB0eHRTZXRQcm9wcywgIiAgICBjYXNlICR7cHJvcEVudW19OiB7XG4iKTsKICAgICAgICAgcHVz
aChAdHh0U2V0UHJvcHMsICIgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xu
IikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKICAgICAgICAgcHVzaChAdHh0
U2V0UHJvcHMsICIgICAgICAgICR7c2V0dGVyRnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBA
c2V0dGVyQXJndW1lbnRzKSAuICIpO1xuIik7CiAgICAgICAgIHB1c2goQHR4dFNldFByb3BzLCAi
ICAgICAgICBicmVhaztcbiAgICB9XG4iKTsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBzdWIgR2VuZXJh
dGVQcm9wZXJ0eSB7CiAgICAgfQogCiAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICBwdXNoKEB0eHRH
ZXRQcm9wcywgIiAgICBjYXNlICR7cHJvcEVudW19OlxuICAgIHtcbiIpOworICAgIHB1c2goQHR4
dEdldFByb3BzLCAiICAgIGNhc2UgJHtwcm9wRW51bX06IHtcbiIpOwogICAgIHB1c2goQHR4dEdl
dFByb3BzLCAiICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7
JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307CiAKICAgICBteSAkcG9zdENvbnZlcnRGdW5j
dGlvbiA9ICIiOwpAQCAtNTM0LDcgKzUzNCw3IEBAIEVPRgogICAgIG15ICRwcml2RnVuY3Rpb24g
PSBHZXRDb3JlT2JqZWN0KCRpbnRlcmZhY2VOYW1lLCAiY29yZVNlbGYiLCAic2VsZiIpOwogCiAg
ICAgbXkgJHR4dEdldFByb3AgPSA8PCAiRU9GIjsKLXN0YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZh
Y2VOYW1lfV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3N0YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZh
Y2VOYW1lfV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CiBFT0YKQEAgLTU0OCwxNCArNTQ4LDE0IEBAIEVPRgogICAg
IH0KIAogICAgICR0eHRHZXRQcm9wID0gPDwgIkVPRiI7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7
CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiBFT0YKICAgICBwdXNoKEB0eHRHZXRQcm9wcywg
JHR4dEdldFByb3ApOwogCiAgICAgbXkgQHdyaXRlYWJsZVByb3BlcnRpZXMgPSBHZXRXcml0ZWFi
bGVQcm9wZXJ0aWVzKFxAcmVhZGFibGVQcm9wZXJ0aWVzKTsKIAogICAgIG15ICR0eHRTZXRQcm9w
cyA9IDw8ICJFT0YiOwotc3RhdGljIHZvaWQgJHtsb3dlckNhc2VJZmFjZU5hbWV9X3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQorc3RhdGljIHZvaWQgJHtsb3dlckNhc2VJZmFjZU5hbWV9X3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKIEVPRgpAQCAtNTcwLDcgKzU3MCw3IEBAIEVPRgogICAgIH0KIAog
ICAgICR0eHRTZXRQcm9wcyA9IDw8ICJFT0YiOwotICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAg
IHN3aXRjaCAocHJvcGVydHlJZCkgewogRU9GCiAgICAgcHVzaChAdHh0U2V0UHJvcHMsICR0eHRT
ZXRQcm9wcyk7CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCBFT0YKIAogICAgICR0eHRHZXRQcm9wID0g
PDwgIkVPRiI7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIH0KQEAgLTU5NCw3ICs1OTQsNyBAQCBFT0YKIAogICAgICR0eHRTZXRQ
cm9wcyA9IDw8ICJFT0YiOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC02MDgsMTUgKzYwOCwxNSBAQCBFT0YKIHN0YXRp
YyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7
CiAkY29uZGl0aW9uR3VhcmRTdGFydAotICAgIFdlYktpdERPTU9iamVjdCogZG9tX29iamVjdCA9
IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7CisgICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmpl
Y3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwogICAgIAotICAgIGlmIChkb21fb2JqZWN0
LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVP
YmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICo+KGRvbV9vYmpl
Y3QtPmNvcmVPYmplY3QpOworICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKKyAgICAg
ICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihkb21PYmplY3QtPmNvcmVPYmplY3QpOwogCiAgICAg
ICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKICAgICAgICAg
Y29yZU9iamVjdC0+ZGVyZWYoKTsKIAotICAgICAgICBkb21fb2JqZWN0LT5jb3JlT2JqZWN0ID0g
TlVMTDsKKyAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKICAgICB9CiAkY29uZGl0
aW9uR3VhcmRFbmQKIApAQCAtNjQwLDcgKzY0MCw3IEBAIEVPRgogCiBzdGF0aWMgdm9pZCAke2xv
d2VyQ2FzZUlmYWNlTmFtZX1fY2xhc3NfaW5pdCgke2NsYXNzTmFtZX1DbGFzcyogcmVxdWVzdENs
YXNzKQogewotICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
cmVxdWVzdENsYXNzKTsKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHJlcXVlc3RDbGFzcyk7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9ICR7bG93
ZXJDYXNlSWZhY2VOYW1lfV9maW5hbGl6ZTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9ICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9zZXRfcHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3Byb3BlcnR5OwpAQCAt
Nzk1LDcgKzc5NSw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgYWRkSW5jbHVk
ZUluQm9keSgkcGFyYW1JRExUeXBlKTsKICAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdldEdsaWJU
eXBlTmFtZSgkcGFyYW1JRExUeXBlKTsKICAgICAgICAgbXkgJGNvbnN0ID0gJHBhcmFtVHlwZSBl
cSAiZ2NoYXIqIiA/ICJjb25zdCAiIDogIiI7Ci0gICAgICAgIG15ICRwYXJhbU5hbWUgPSBkZWNh
bWVsaXplKCRwYXJhbS0+bmFtZSk7CisgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0tPm5h
bWU7CiAKICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICIsICR7Y29uc3R9JHBhcmFtVHlwZSAkcGFy
YW1OYW1lIjsKIApAQCAtODA2LDcgKzgwNiw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoJHBhcmFtSXNHRE9NVHlwZSB8fCAo
JHBhcmFtSURMVHlwZSBlcSAiRE9NU3RyaW5nIikgfHwgKCRwYXJhbUlETFR5cGUgZXEgIkNvbXBh
cmVIb3ciKSkgewotICAgICAgICAgICAgJHBhcmFtTmFtZSA9ICJjb252ZXJ0ZWRfIiAuICRwYXJh
bU5hbWU7CisgICAgICAgICAgICAkcGFyYW1OYW1lID0gImNvbnZlcnRlZCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBj
YWxsSW1wbFBhcmFtcywgJHBhcmFtTmFtZSk7CiAgICAgfQpAQCAtODIyLDggKzgyMiw4IEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtmdW5jdGlvblNp
Z1R5cGV9LmgifSA9IDE7CiAgICAgfQogCi0gICAgaWYoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2Vw
dGlvbnN9KSB7Ci0gICAgICAgICRmdW5jdGlvblNpZyAuPSAiLCBHRXJyb3IgKiplcnJvciI7Cisg
ICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgeworICAgICAgICAkZnVuY3Rp
b25TaWcgLj0gIiwgR0Vycm9yKiogZXJyb3IiOwogICAgIH0KIAogICAgICMgSW5zZXJ0IGludHJv
c3BlY3Rpb24gYW5ub3RhdGlvbnMKQEAgLTgzNSw3ICs4MzUsNyBAQCBzdWIgR2VuZXJhdGVGdW5j
dGlvbiB7CiAgICAgICAgIG15ICRwYXJhbVR5cGUgPSBHZXRHbGliVHlwZU5hbWUoJHBhcmFtLT50
eXBlKTsKICAgICAgICAgIyAkcGFyYW1UeXBlIGNhbiBoYXZlIGEgdHJhaWxpbmcgKiBpbiBzb21l
IGNhc2VzCiAgICAgICAgICRwYXJhbVR5cGUgPX4gcy9cKiQvLzsKLSAgICAgICAgbXkgJHBhcmFt
TmFtZSA9IGRlY2FtZWxpemUoJHBhcmFtLT5uYW1lKTsKKyAgICAgICAgbXkgJHBhcmFtTmFtZSA9
ICRwYXJhbS0+bmFtZTsKICAgICAgICAgcHVzaChAaEJvZHksICIgKiBcQCR7cGFyYW1OYW1lfTog
QSAjJHtwYXJhbVR5cGV9XG4iKTsKICAgICB9CiAgICAgaWYoQHskZnVuY3Rpb24tPnJhaXNlc0V4
Y2VwdGlvbnN9KSB7CkBAIC04NjYsMTIgKzg2NiwxMSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7
CiAKICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7XG4iKTsKIAotICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBsZW1lbnRhdGlvbnMgY2hl
Y2sgZm9yIE5VTEwgYWxyZWFkeTsgbm8gbmVlZCB0bwotICAgICMgZHVwbGljYXRlIGVmZm9ydC4K
LSAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOworICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBsZW1l
bnRhdGlvbnMgY2hlY2sgZm9yIG51bGwgYWxyZWFkeTsgbm8gbmVlZCB0byBkdXBsaWNhdGUgZWZm
b3J0LgorICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7XG4iKTsKIAogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChA
eyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKLSAgICAgICAgbXkgJHBhcmFtTmFtZSA9IGRlY2Ft
ZWxpemUoJHBhcmFtLT5uYW1lKTsKKyAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFt
ZTsKICAgICAgICAgbXkgJHBhcmFtSURMVHlwZSA9ICRwYXJhbS0+dHlwZTsKICAgICAgICAgbXkg
JHBhcmFtVHlwZUlzUHJpbWl0aXZlID0gJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgk
cGFyYW1JRExUeXBlKTsKICAgICAgICAgbXkgJHBhcmFtSXNHRE9NVHlwZSA9IElzR0RPTUNsYXNz
VHlwZSgkcGFyYW1JRExUeXBlKTsKQEAgLTg5MiwyOCArODkxLDI5IEBAIHN1YiBHZW5lcmF0ZUZ1
bmN0aW9uIHsKICAgICAkcmV0dXJuUGFyYW1OYW1lID0gIiI7CiAgICAgZm9yZWFjaCBteSAkcGFy
YW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkcGFyYW1JRExUeXBl
ID0gJHBhcmFtLT50eXBlOwotICAgICAgICBteSAkcGFyYW1OYW1lID0gZGVjYW1lbGl6ZSgkcGFy
YW0tPm5hbWUpOworICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOwogCiAgICAg
ICAgIG15ICRwYXJhbUlzR0RPTVR5cGUgPSBJc0dET01DbGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7
CisgICAgICAgICRjb252ZXJ0ZWRQYXJhbU5hbWUgPSAiY29udmVydGVkIiAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRwYXJhbU5hbWUpOwogICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBl
cSAiRE9NU3RyaW5nIikgewotICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV1RGOjpTdHJp
bmcgY29udmVydGVkXyR7cGFyYW1OYW1lfSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCgkcGFyYW1O
YW1lKTtcbiIpOworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV1RGOjpTdHJpbmcgJHtj
b252ZXJ0ZWRQYXJhbU5hbWV9ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KCRwYXJhbU5hbWUpO1xu
Iik7CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbUlETFR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7Ci0g
ICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdyBj
b252ZXJ0ZWRfJHtwYXJhbU5hbWV9ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmFuZ2U6OkNvbXBh
cmVIb3c+KCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBX
ZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdyAke2NvbnZlcnRlZFBhcmFtTmFtZX0gPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdz4oJHBhcmFtTmFtZSk7XG4iKTsKICAgICAg
ICAgfSBlbHNpZiAoJHBhcmFtSXNHRE9NVHlwZSkgewotICAgICAgICAgICAgcHVzaChAY0JvZHks
ICIgICAgV2ViQ29yZTo6JHtwYXJhbUlETFR5cGV9ICogY29udmVydGVkXyR7cGFyYW1OYW1lfSA9
IE5VTEw7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGlmICgke3BhcmFtTmFt
ZX0gIT0gTlVMTCkge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICAgICAgY29u
dmVydGVkXyR7cGFyYW1OYW1lfSA9IFdlYktpdDo6Y29yZSgkcGFyYW1OYW1lKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6JHtwYXJhbUlETFR5cGV9KiAke2Nv
bnZlcnRlZFBhcmFtTmFtZX0gPSAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAg
ICBpZiAoJHtwYXJhbU5hbWV9KSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAg
ICAgICAke2NvbnZlcnRlZFBhcmFtTmFtZX0gPSBXZWJLaXQ6OmNvcmUoJHBhcmFtTmFtZSk7XG4i
KTsKIAogICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIikgewogICAgICAgICAg
ICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJlc3VsdAotICAgICAgICAgICAg
ICAgIHB1c2goQGNCb2R5LCAiICAgICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRf
JHtwYXJhbU5hbWV9LCAwKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAg
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbCgke2NvbnZlcnRlZFBhcmFtTmFtZX0sIDApO1xuIik7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAg
ICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF8ke3BhcmFtTmFtZX0pO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoJHtjb252
ZXJ0ZWRQYXJhbU5hbWV9KTtcbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNo
KEBjQm9keSwgIiAgICB9XG4iKTsKICAgICAgICAgfQotICAgICAgICAkcmV0dXJuUGFyYW1OYW1l
ID0gImNvbnZlcnRlZF8iLiRwYXJhbU5hbWUgaWYgJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tUmV0dXJuIn07CisgICAgICAgICRyZXR1cm5QYXJhbU5hbWUgPSAkY29udmVydGVk
UGFyYW1OYW1lIGlmICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVJldHVybiJ9
OwogICAgIH0KIAogICAgIG15ICRhc3NpZ24gPSAiIjsKQEAgLTkyNywxNCArOTI3LDE0IEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2Rv
bV9ub2RlX2luc2VydF9iZWZvcmUiIHx8CiAgICAgICAgICRmdW5jdGlvbk5hbWUgZXEgIndlYmtp
dF9kb21fbm9kZV9yZXBsYWNlX2NoaWxkIiB8fAogICAgICAgICAkZnVuY3Rpb25OYW1lIGVxICJ3
ZWJraXRfZG9tX25vZGVfcmVtb3ZlX2NoaWxkIjsKLSAgICAgICAgCisgICAgICAgICAKICAgICBp
ZiAoJHJldHVyblR5cGUgbmUgInZvaWQiICYmICEkZnVuY3Rpb25IYXNDdXN0b21SZXR1cm4pIHsK
ICAgICAgICAgaWYgKCRyZXR1cm5WYWx1ZUlzR0RPTVR5cGUpIHsKLSAgICAgICAgICAgICRhc3Np
Z24gPSAiUGFzc1JlZlB0cjxXZWJDb3JlOjoke2Z1bmN0aW9uU2lnVHlwZX0+IGdfcmVzID0gIjsK
KyAgICAgICAgICAgICRhc3NpZ24gPSAiUmVmUHRyPFdlYkNvcmU6OiR7ZnVuY3Rpb25TaWdUeXBl
fT4gZ29iamVjdFJlc3VsdCA9ICI7CiAgICAgICAgICAgICAkYXNzaWduUHJlID0gIldURjo6Z2V0
UHRyKCI7CiAgICAgICAgICAgICAkYXNzaWduUG9zdCA9ICIpIjsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICRhc3NpZ24gPSAiJHtyZXR1cm5UeXBlfSByZXMgPSAiOworICAgICAgICAg
ICAgJGFzc2lnbiA9ICIke3JldHVyblR5cGV9IHJlc3VsdCA9ICI7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTk0OCw4ICs5NDgsOCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIG15
ICRjdXN0b21Ob2RlQXBwZW5kQ2hpbGQgPSA8PCAiRU9GIjsKICAgICBpZiAob2spCiAgICAgewot
ICAgICAgICAke3JldHVyblR5cGV9IHJlcyA9IFdlYktpdDo6a2l0KCRyZXR1cm5QYXJhbU5hbWUp
OwotICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAke3JldHVyblR5cGV9IHJlc3VsdCA9IFdl
YktpdDo6a2l0KCRyZXR1cm5QYXJhbU5hbWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIEVPRgogICAgICAgICBwdXNoKEBjQm9keSwgJGN1c3RvbU5vZGVBcHBlbmRDaGlsZCk7CkBA
IC05NjIsNyArOTYyLDcgQEAgRU9GCiBFT0YKICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAkZXhj
ZXB0aW9uSGFuZGxpbmcpOwogICAgICAgICB9Ci0gICAgICAgIHB1c2goQGNCb2R5LCAicmV0dXJu
IE5VTEw7Iik7CisgICAgICAgIHB1c2goQGNCb2R5LCAicmV0dXJuIDA7Iik7CiAgICAgICAgIHB1
c2goQGNCb2R5LCAifVxuXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzaWYgKCRmdW5j
dGlvblNpZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKQEAgLTEwNDUsMTMgKzEwNDUsMTMgQEAgRU9G
CiAgICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2b2lkIiAmJiAhJGZ1bmN0aW9uSGFzQ3VzdG9tUmV0
dXJuKSB7CiAgICAgICAgIGlmICgkZnVuY3Rpb25TaWdUeXBlIG5lICJET01PYmplY3QiKSB7CiAg
ICAgICAgICAgICBpZiAoJHJldHVyblZhbHVlSXNHRE9NVHlwZSkgewotICAgICAgICAgICAgICAg
IHB1c2goQGNCb2R5LCAiICAgICR7cmV0dXJuVHlwZX0gcmVzID0gV2ViS2l0OjpraXQoZ19yZXMu
Z2V0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHtyZXR1cm5U
eXBlfSByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTtcbiIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICgkZnVuY3Rpb25TaWdUeXBlIGVxICJE
T01PYmplY3QiKSB7Ci0gICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gTlVMTDsg
LyogVE9ETzogcmV0dXJuIGNhbnZhcyBvYmplY3QgKi9cbiIpOworICAgICAgICAgICAgcHVzaChA
Y0JvZHksICIgICAgcmV0dXJuIDA7IC8vIFRPRE86IHJldHVybiBjYW52YXMgb2JqZWN0XG4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiBy
ZXM7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiByZXN1bHQ7XG4i
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA2Miw3ICsxMDYyLDcgQEAgRU9GCiAgICAgICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzTm9uUG9pbnRlclR5cGUoJGZ1bmN0aW9uU2lnVHlw
ZSkpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8JHtyZXR1cm5UeXBlfT4oMCk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAY0JvZHksICIgICAgcmV0dXJuIE5VTEw7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gMDtcbiIpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIHB1c2goQGNCb2R5LCAiI2VuZGlmIC8qICR7Y29uZGl0aW9uYWxTdHJp
bmd9ICovXG4iKTsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIEVPRgogICAgICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc05vblBvaW50ZXJUeXBlKCRmdW5jdGlvblNpZ1R5cGUpKSB7CiAgICAg
ICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7cmV0dXJu
VHlwZX0+KDApO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1
c2goQGNCb2R5LCAiICAgIHJldHVybiBOVUxMO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
Y0JvZHksICIgICAgcmV0dXJuIDA7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBjQm9keSwgIiNlbmRpZiAvKiAke3BhcmVudENvbmRpdGlvbmFsU3RyaW5nfSAq
L1xuIik7CkBAIC0xMjA1LDE0ICsxMjA1LDExIEBAICR7Y2xhc3NOYW1lfSogd3JhcCR7aW50ZXJm
YWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKIAotICAgIC8qIFdlIGNhbGwgcmVm
KCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0
IHN0b3JlIGEgQysrIG9iamVjdAotICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1
Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcg
ZGVyZWYoKS4KLSAgICAgKi8KKyAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5n
IGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QK
KyAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFs
aXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCiAgICAgY29yZU9iamVjdC0+cmVm
KCk7CiAKLSAgICByZXR1cm4gIFdFQktJVF9ET01fJHtjbHNDYXBzfShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfRE9NXyR7Y2xzQ2Fwc30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKKyAgICBy
ZXR1cm4gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01f
JHtjbHNDYXBzfSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCiBFT0YK
QEAgLTEzNDIsNyArMTMzOSw3IEBAIHN1YiBXcml0ZURhdGEgewogICAgICMgV3JpdGUgYSBwcml2
YXRlIGhlYWRlci4KICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKICAg
ICBteSAkZmlsZW5hbWUgPSAiJG91dHB1dERpci8iIC4gJGNsYXNzTmFtZSAuICJQcml2YXRlLmgi
OwotICAgIG15ICRndWFyZCA9IHVjKGRlY2FtZWxpemUoJGNsYXNzTmFtZSkpIC4gIl9QUklWQVRF
X0giOworICAgIG15ICRndWFyZCA9ICIke2NsYXNzTmFtZX1Qcml2YXRlX2giOwogICAgIG15ICRw
YXJlbnRDbGFzc05hbWUgPSBHZXRQYXJlbnRDbGFzc05hbWUoJGRhdGFOb2RlKTsKIAogICAgICMg
QWRkIHRoZSBndWFyZCBpZiB0aGUgJ0NvbmRpdGlvbmFsJyBleHRlbmRlZCBhdHRyaWJ1dGUgZXhp
c3RzCkBAIC0xMzU3LDQyICsxMzU0LDMyIEBAIHN1YiBXcml0ZURhdGEgewogI2lmbmRlZiAkZ3Vh
cmQKICNkZWZpbmUgJGd1YXJkCiAKKyNpbmNsdWRlICIke2ludGVyZmFjZU5hbWV9LmgiCiAjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvJHtwYXJlbnRDbGFzc05hbWV9
Lmg+Ci0jaW5jbHVkZSAiJHtpbnRlcmZhY2VOYW1lfS5oIgotCiBFT0YKIAogICAgIHByaW50IFBS
SVZIRUFERVIgJHRleHQ7CiAgICAgcHJpbnQgUFJJVkhFQURFUiAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwcmludCBQUklWSEVBREVSIG1h
cCB7ICIjaW5jbHVkZSBcIiRfXCJcbiIgfSBzb3J0IGtleXMoJWhkclByb3BJbmNsdWRlcyk7Ci0g
ICAgcHJpbnQgUFJJVkhFQURFUiAiXG4iIGlmIGtleXMoJWhkclByb3BJbmNsdWRlcyk7CisgICAg
cHJpbnQgUFJJVkhFQURFUiAiXG4iOwogICAgICR0ZXh0ID0gPDwgIkVPRiI7Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewotICAgICR7Y2xhc3NOYW1lfSAqCi0gICAgd3JhcCR7aW50ZXJmYWNlTmFtZX0o
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSAqY29yZU9iamVjdCk7Ci0KLSAgICBXZWJDb3JlOjok
e2ludGVyZmFjZU5hbWV9ICoKLSAgICBjb3JlKCR7Y2xhc3NOYW1lfSAqcmVxdWVzdCk7Ci0KKyR7
Y2xhc3NOYW1lfSogd3JhcCR7aW50ZXJmYWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1l
fSopOworV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZSgke2NsYXNzTmFtZX0qIHJlcXVl
c3QpOwogRU9GCiAKICAgICBwcmludCBQUklWSEVBREVSICR0ZXh0OwogCiAgICAgaWYgKCRjbGFz
c05hbWUgbmUgIldlYktpdERPTU5vZGUiKSB7Ci0gICAgICAgICR0ZXh0ID0gPDwgIkVPRiI7Ci0g
ICAgJHtjbGFzc05hbWV9KgotICAgIGtpdChXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBub2Rl
KTsKLQotRU9GCi0gICAgICAgIHByaW50IFBSSVZIRUFERVIgJHRleHQ7CisgICAgICAgIHByaW50
IFBSSVZIRUFERVIgIiR7Y2xhc3NOYW1lfSoga2l0KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IG5vZGUpO1xuIgogICAgIH0KIAogICAgICR0ZXh0ID0gPDwgIkVPRiI7CiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogRU9GCisKICAgICBwcmludCBQUklWSEVBREVSICR0ZXh0OwogICAgIHByaW50
IFBSSVZIRUFERVIgIiNlbmRpZiAvKiAke2NvbmRpdGlvbmFsU3RyaW5nfSAqL1xuXG4iIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICBwcmludCBQUklWSEVBREVSICIjZW5kaWYgLyogJHtndWFy
ZH0gKi9cbiI7CkBAIC0xNDAzLDE3ICsxMzkwLDE2IEBAIEVPRgogICAgICRiYXNlbmFtZSA9fiBz
L18vL2c7CiAKICAgICAjIFdyaXRlIHB1YmxpYyBoZWFkZXIuCi0gICAgbXkgJGhkckZOYW1lID0g
IiRvdXRwdXREaXIvIiAuICRiYXNlbmFtZSAuICIuaCI7Ci0gICAgb3BlbihIRUFERVIsICI+JGhk
ckZOYW1lIikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGhkckZOYW1lIjsKKyAgICBteSAk
ZnVsbEhlYWRlckZpbGVuYW1lID0gIiRvdXRwdXREaXIvIiAuICRiYXNlbmFtZSAuICIuaCI7Cisg
ICAgbXkgJGluc3RhbGxlZEhlYWRlckZpbGVuYW1lID0gIiR7YmFzZW5hbWV9LmgiOworICAgIG9w
ZW4oSEVBREVSLCAiPiRmdWxsSGVhZGVyRmlsZW5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4g
ZmlsZSAkZnVsbEhlYWRlckZpbGVuYW1lIjsKIAogICAgIHByaW50IEhFQURFUiBAaFByZWZpeDsK
ICAgICBwcmludCBIRUFERVIgQGhQcmVmaXhHdWFyZDsKLSAgICBwcmludCBIRUFERVIgIiNpbmNs
dWRlIFwid2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaFwiXG4iOwogICAgIHByaW50IEhFQURFUiAi
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+XG4iOworICAgIHByaW50IEhFQURFUiBtYXAgeyAiI2lu
Y2x1ZGUgPCRfPlxuIiB9IHNvcnQga2V5cyglaGRySW5jbHVkZXMpOwogICAgIHByaW50IEhFQURF
UiAiI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+XG4iOwotICAgIHByaW50IEhFQURF
UiBtYXAgeyAiI2luY2x1ZGUgXCIkX1wiXG4iIH0gc29ydCBrZXlzKCVoZHJJbmNsdWRlcyk7Ci0g
ICAgcHJpbnQgSEVBREVSICJcbiIgaWYga2V5cyglaGRySW5jbHVkZXMpOwotICAgIHByaW50IEhF
QURFUiAiXG4iOworICAgIHByaW50IEhFQURFUiAiI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkb21k
ZWZpbmVzLmg+XG5cbiI7CiAgICAgcHJpbnQgSEVBREVSIEBoQm9keVByZTsKICAgICBwcmludCBI
RUFERVIgQGhCb2R5OwogICAgIHByaW50IEhFQURFUiBAaFByZWZpeEd1YXJkRW5kOwpAQCAtMTQy
NSwxMyArMTQxMSwxOCBAQCBFT0YKICAgICBvcGVuKElNUEwsICI+JGltcGxGaWxlTmFtZSIpIG9y
IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRpbXBsRmlsZU5hbWUiOwogCiAgICAgcHJpbnQgSU1Q
TCBAY1ByZWZpeDsKKyAgICBwcmludCBJTVBMICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Cisg
ICAgcHJpbnQgSU1QTCAiI2luY2x1ZGUgXCIkaW5zdGFsbGVkSGVhZGVyRmlsZW5hbWVcIlxuXG4i
OworICAgIHByaW50IElNUEwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iIGlmICRjb25k
aXRpb25hbFN0cmluZzsKKworICAgICMgUmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiBoZWFkZXIg
ZnJvbSB0aGUgbGlzdCBvZiBpbmNsdWRlZCBmaWxlcy4KKyAgICAlaW5jbHVkZXNDb3B5ID0gJWlt
cGxJbmNsdWRlczsKKyAgICBkZWxldGUgKCRpbmNsdWRlc0NvcHl7IndlYmtpdC8kaW5zdGFsbGVk
SGVhZGVyRmlsZW5hbWUifSk7CisgICAgcHJpbnQgSU1QTCBtYXAgeyAiI2luY2x1ZGUgXCIkX1wi
XG4iIH0gc29ydCBrZXlzKCVpbmNsdWRlc0NvcHkpOworCiAgICAgcHJpbnQgSU1QTCAiI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+XG4iOwotICAgIHByaW50IElNUEwgIiNpbmNsdWRlIFwiY29uZmln
LmhcIlxuXG4iOwogICAgIHByaW50IElNUEwgIiNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+XG4iOwot
ICAgIHByaW50IElNUEwgIiNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+XG4iOwotICAgIHByaW50IElN
UEwgbWFwIHsgIiNpbmNsdWRlIFwiJF9cIlxuIiB9IHNvcnQga2V5cyglaW1wbEluY2x1ZGVzKTsK
LSAgICBwcmludCBJTVBMICJcbiIgaWYga2V5cyglaW1wbEluY2x1ZGVzKTsKLSAgICBwcmludCBJ
TVBMICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CisgICAgcHJpbnQgSU1QTCAiI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD5cblxuIjsKIAogICAgIHBy
aW50IElNUEwgIm5hbWVzcGFjZSBXZWJLaXQge1xuXG4iOwogICAgIHByaW50IElNUEwgQGNCb2R5
UHJpdjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuY3BwCmluZGV4IDJi
NmQwNmY3Y2FmYTU2OTkxYWFjZmZhMjQyM2RlNTg1YzI3NWM0YzcuLjNhYjhkNGFlZDljMzg3MTI0
MGVkOGRmMDI5NGRkZGZlMzVhOTY4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxv
YXQ2NEFycmF5LmNwcApAQCAtMTgsMTEgKzE4LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICovCiAKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdERPTUZsb2F0NjRBcnJheS5oIgogCi0jaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlICJET01PYmplY3RD
YWNoZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdDY0QXJy
YXkuaCIKQEAgLTMyLDEzICszMCwxNSBAQAogI2luY2x1ZGUgImdvYmplY3QvQ29udmVydFRvVVRG
OFN0cmluZy5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01GbG9hdDMyQXJyYXkuaCIKICNp
bmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRmxvYXQzMkFycmF5UHJpdmF0ZS5oIgotI2luY2x1ZGUg
IndlYmtpdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NRmxvYXQ2NEFycmF5UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01JbnQz
MkFycmF5LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUludDMyQXJyYXlQcml2YXRlLmgi
CiAjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTY2LDE0ICs2NiwxMSBAQCBXZWJLaXRET01GbG9hdDY0
QXJyYXkqIHdyYXBGbG9hdDY0QXJyYXkoV2ViQ29yZTo6RmxvYXQ2NEFycmF5KiBjb3JlT2JqZWN0
KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwogCi0gICAgLyog
V2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1
c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgICogaW4gYSBDLWFsbG9jYXRlZCBH
T2JqZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUKLSAgICAg
KiBtYXRjaGluZyBkZXJlZigpLgotICAgICAqLworICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVy
IHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEg
QysrIG9iamVjdAorICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNl
ZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KICAgICBjb3Jl
T2JqZWN0LT5yZWYoKTsKIAotICAgIHJldHVybiAgV0VCS0lUX0RPTV9GTE9BVDY0QVJSQVkoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9GTE9BVDY0QVJSQVksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3Qs
IE5VTEwpKTsKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9GTE9BVDY0QVJSQVkoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0RPTV9GTE9BVDY0QVJSQVksICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3Qs
IE5VTEwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC04NywzOCArODQsMzggQEAg
ZW51bSB7CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCiB7CiAKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbV9vYmplY3QgPSBXRUJL
SVRfRE9NX09CSkVDVChvYmplY3QpOworICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0g
V0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKICAgICAKLSAgICBpZiAoZG9tX29iamVjdC0+Y29y
ZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNvcmVPYmplY3QgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpGbG9hdDY0QXJyYXkgKj4oZG9tX29iamVjdC0+Y29yZU9iamVj
dCk7CisgICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgeworICAgICAgICBXZWJDb3JlOjpG
bG9hdDY0QXJyYXkqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGbG9hdDY0QXJy
YXkqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOwogCiAgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0
Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKICAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsK
IAotICAgICAgICBkb21fb2JqZWN0LT5jb3JlT2JqZWN0ID0gTlVMTDsKKyAgICAgICAgZG9tT2Jq
ZWN0LT5jb3JlT2JqZWN0ID0gMDsKICAgICB9CiAKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9kb21fZmxvYXQ2NGFycmF5X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAK
LXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5X3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIHN3aXRjaCAocHJvcGVydHlJZCkg
ewogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CiAKIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9nZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlk
KSB7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KQEAgLTEzMyw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Zs
b2F0NjRhcnJheV9jb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fZmxvYXQ2NGFycmF5X2NsYXNzX2luaXQoV2ViS2l0RE9NRmxvYXQ2NEFycmF5Q2xh
c3MqIHJlcXVlc3RDbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwogICAgIGdvYmplY3RDbGFzcy0+Zmlu
YWxpemUgPSB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9maW5hbGl6ZTsKICAgICBnb2JqZWN0Q2xh
c3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5X3NldF9wcm9wZXJ0eTsK
ICAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5
X2dldF9wcm9wZXJ0eTsKQEAgLTE1MiwxNSArMTQ5LDE1IEBAIHdlYmtpdF9kb21fZmxvYXQ2NGFy
cmF5X2ZvbyhXZWJLaXRET01GbG9hdDY0QXJyYXkqIHNlbGYsIFdlYktpdERPTUZsb2F0MzJBcnJh
eSoKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RmxvYXQ2NEFycmF5ICog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoYXJyYXks
IDApOwotICAgIFdlYkNvcmU6OkZsb2F0MzJBcnJheSAqIGNvbnZlcnRlZF9hcnJheSA9IE5VTEw7
Ci0gICAgaWYgKGFycmF5ICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX2FycmF5ID0gV2Vi
S2l0Ojpjb3JlKGFycmF5KTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVk
X2FycmF5LCAwKTsKKyAgICBXZWJDb3JlOjpGbG9hdDMyQXJyYXkqIGNvbnZlcnRlZEFycmF5ID0g
MDsKKyAgICBpZiAoYXJyYXkpIHsKKyAgICAgICAgY29udmVydGVkQXJyYXkgPSBXZWJLaXQ6OmNv
cmUoYXJyYXkpOworICAgICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRBcnJheSwg
MCk7CiAgICAgfQotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50MzJBcnJheT4gZ19yZXMgPSBX
VEY6OmdldFB0cihpdGVtLT5mb28oY29udmVydGVkX2FycmF5KSk7Ci0gICAgV2ViS2l0RE9NSW50
MzJBcnJheSogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkludDMyQXJyYXk+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT5mb28oY29udmVydGVkQXJyYXkpKTsKKyAgICBXZWJLaXRET01JbnQzMkFycmF5
KiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5oCmluZGV4
IDBkYmM5ODZmNzk5YmUxYWVhYThhZDI3MzBlYWYzZGJkZjViYWVkYjQuLmFkZGJjODUxZGJiYTIw
ZTA5NDAxYjA2OWYzYjVmNDg3NWEwMTRkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZs
b2F0NjRBcnJheS5oCkBAIC0yMSwxMSArMjEsMTAgQEAKICNpZm5kZWYgV2ViS2l0RE9NRmxvYXQ2
NEFycmF5X2gKICNkZWZpbmUgV2ViS2l0RE9NRmxvYXQ2NEFycmF5X2gKIAotI2luY2x1ZGUgIndl
YmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQvV2ViS2l0RE9NQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdGRlZmluZXMuaD4KLSNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NQXJyYXlCdWZmZXJW
aWV3LmgiCi0KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgogCiBHX0JFR0lO
X0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9GTE9BVDY0QVJSQVkgICAgICAgICAgICAo
d2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfZ2V0X3R5cGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJh
eVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTUZsb2F0NjRBcnJheVByaXZhdGUuaAppbmRleCBjMmE3Zjc3NzA1NDI5MGZkOWJh
NTE5ZWU4NzE2M2FmNWRlMDc0NWY4Li44ZmE5M2I4YmY3YzhjZjk1ZDFmMDgzY2VhOWYwMGI3ZDYw
M2UyOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXlQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5UHJp
dmF0ZS5oCkBAIC0xOCwyNCArMTgsMTcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICovCiAKLSNpZm5kZWYgV0VCX0tJVF9ET01fRkxPQVQ2NEFSUkFZX1BSSVZBVEVfSAotI2Rl
ZmluZSBXRUJfS0lUX0RPTV9GTE9BVDY0QVJSQVlfUFJJVkFURV9ICisjaWZuZGVmIFdlYktpdERP
TUZsb2F0NjRBcnJheVByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRET01GbG9hdDY0QXJyYXlQcml2
YXRlX2gKIAorI2luY2x1ZGUgIkZsb2F0NjRBcnJheS5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTUFycmF5QnVmZmVyVmlldy5oPgotI2luY2x1
ZGUgIkZsb2F0NjRBcnJheS5oIgotCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIFdlYktpdERP
TUZsb2F0NjRBcnJheSAqCi0gICAgd3JhcEZsb2F0NjRBcnJheShXZWJDb3JlOjpGbG9hdDY0QXJy
YXkgKmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RmxvYXQ2NEFycmF5ICoKLSAgICBjb3Jl
KFdlYktpdERPTUZsb2F0NjRBcnJheSAqcmVxdWVzdCk7Ci0KLSAgICBXZWJLaXRET01GbG9hdDY0
QXJyYXkqCi0gICAga2l0KFdlYkNvcmU6OkZsb2F0NjRBcnJheSogbm9kZSk7Ci0KK1dlYktpdERP
TUZsb2F0NjRBcnJheSogd3JhcEZsb2F0NjRBcnJheShXZWJDb3JlOjpGbG9hdDY0QXJyYXkqKTsK
K1dlYkNvcmU6OkZsb2F0NjRBcnJheSogY29yZShXZWJLaXRET01GbG9hdDY0QXJyYXkqIHJlcXVl
c3QpOworV2ViS2l0RE9NRmxvYXQ2NEFycmF5KiBraXQoV2ViQ29yZTo6RmxvYXQ2NEFycmF5KiBu
b2RlKTsKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLyogV0VCX0tJVF9ET01fRkxP
QVQ2NEFSUkFZX1BSSVZBVEVfSCAqLworI2VuZGlmIC8qIFdlYktpdERPTUZsb2F0NjRBcnJheVBy
aXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCA3MTUwMmM1OGZkOWYzYjM2MTM1MDMxYmNiM2Y3MmM5YzI4NGIwMWZk
Li5jZDZhZGU1MzZmNDgyZWEyMTdlMTc0N2M1YThiMzM1OWVjMWM3Y2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTgsMTEg
KzE4LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERP
TVRlc3RBY3RpdmVET01PYmplY3QuaCIKIAotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCkBA
IC0zMSwxMSArMjksMTMgQEAKICNpbmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcu
aCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NTm9kZS5oIgogI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0QWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RBY3RpdmVET01P
YmplY3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndl
YmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTYzLDE0ICs2MywxMSBAQCBX
ZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0KiB3cmFwVGVzdEFjdGl2ZURPTU9iamVjdChXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVP
YmplY3QsIDApOwogCi0gICAgLyogV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMr
KyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAg
ICogaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUo
KSBjb2RlIGZvciB0aGUKLSAgICAgKiBtYXRjaGluZyBkZXJlZigpLgotICAgICAqLworICAgIC8v
IFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNh
dXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQg
R09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hp
bmcgZGVyZWYoKS4KICAgICBjb3JlT2JqZWN0LT5yZWYoKTsKIAotICAgIHJldHVybiAgV0VCS0lU
X0RPTV9URVNUX0FDVElWRV9ET01fT0JKRUNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01f
VEVTVF9BQ1RJVkVfRE9NX09CSkVDVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworICAgIHJl
dHVybiBXRUJLSVRfRE9NX1RFU1RfQUNUSVZFX0RPTV9PQkpFQ1QoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0RPTV9URVNUX0FDVElWRV9ET01fT0JKRUNULCAiY29yZS1vYmplY3QiLCBjb3JlT2Jq
ZWN0LCBOVUxMKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtODUsNDUgKzgyLDQ0
IEBAIGVudW0gewogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKIAotICAgIFdlYktpdERPTU9iamVjdCogZG9t
X29iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7CisgICAgV2ViS2l0RE9NT2JqZWN0
KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwogICAgIAotICAgIGlmIChk
b21fb2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVET01P
YmplY3QqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2Jq
ZWN0ICo+KGRvbV9vYmplY3QtPmNvcmVPYmplY3QpOworICAgIGlmIChkb21PYmplY3QtPmNvcmVP
YmplY3QpIHsKKyAgICAgICAgV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCogY29yZU9iamVj
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqPihkb21PYmplY3Qt
PmNvcmVPYmplY3QpOwogCiAgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChj
b3JlT2JqZWN0KTsKICAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKIAotICAgICAgICBkb21f
b2JqZWN0LT5jb3JlT2JqZWN0ID0gTlVMTDsKKyAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0
ID0gMDsKICAgICB9CiAKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9hY3Rp
dmVfZG9tX29iamVjdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3Rfc2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmpl
Y3Rfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgewogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2FjdGl2ZV9kb21fb2JqZWN0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQorc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBXZWJLaXRE
T01UZXN0QWN0aXZlRE9NT2JqZWN0KiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0FDVElWRV9ET01f
T0JKRUNUKG9iamVjdCk7CiAgICAgV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCogY29yZVNl
bGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2Fz
ZSBQUk9QX0VYQ0lUSU5HX0FUVFI6Ci0gICAgeworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewor
ICAgIGNhc2UgUFJPUF9FWENJVElOR19BVFRSOiB7CiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmco
dmFsdWUsIGNvcmVTZWxmLT5leGNpdGluZ0F0dHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpAQCAtMTM4LDcgKzEzNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9h
Y3RpdmVfZG9tX29iamVjdF9jb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9jbGFzc19pbml0KFdlYktpdERP
TVRlc3RBY3RpdmVET01PYmplY3RDbGFzcyogcmVxdWVzdENsYXNzKQogewotICAgIEdPYmplY3RD
bGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBH
T2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7
CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9t
X29iamVjdF9maW5hbGl6ZTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtp
dF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9zZXRfcHJvcGVydHk7CiAgICAgZ29iamVjdENs
YXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZ2V0
X3Byb3BlcnR5OwpAQCAtMTYyLDE4ICsxNTgsMTggQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2luaXQoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCoK
IH0KIAogdm9pZAotd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2V4Y2l0aW5nX2Z1
bmN0aW9uKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QqIHNlbGYsIFdlYktpdERPTU5vZGUq
IG5leHRfY2hpbGQpCit3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZXhjaXRpbmdf
ZnVuY3Rpb24oV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCogc2VsZiwgV2ViS2l0RE9NTm9k
ZSogbmV4dENoaWxkKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVE
T01PYmplY3QgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwobmV4dF9jaGlsZCk7Ci0gICAgV2ViQ29yZTo6Tm9kZSAqIGNvbnZlcnRlZF9uZXh0X2NoaWxk
ID0gTlVMTDsKLSAgICBpZiAobmV4dF9jaGlsZCAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRl
ZF9uZXh0X2NoaWxkID0gV2ViS2l0Ojpjb3JlKG5leHRfY2hpbGQpOwotICAgICAgICBnX3JldHVy
bl9pZl9mYWlsKGNvbnZlcnRlZF9uZXh0X2NoaWxkKTsKKyAgICBXZWJDb3JlOjpUZXN0QWN0aXZl
RE9NT2JqZWN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwobmV4dENoaWxkKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWROZXh0Q2hpbGQgPSAw
OworICAgIGlmIChuZXh0Q2hpbGQpIHsKKyAgICAgICAgY29udmVydGVkTmV4dENoaWxkID0gV2Vi
S2l0Ojpjb3JlKG5leHRDaGlsZCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVk
TmV4dENoaWxkKTsKICAgICB9Ci0gICAgaXRlbS0+ZXhjaXRpbmdGdW5jdGlvbihjb252ZXJ0ZWRf
bmV4dF9jaGlsZCk7CisgICAgaXRlbS0+ZXhjaXRpbmdGdW5jdGlvbihjb252ZXJ0ZWROZXh0Q2hp
bGQpOwogfQogCiB2b2lkCkBAIC0xODEsMTAgKzE3NywxMCBAQCB3ZWJraXRfZG9tX3Rlc3RfYWN0
aXZlX2RvbV9vYmplY3RfcG9zdF9tZXNzYWdlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3Qq
IHNlbAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3Qg
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVET01P
YmplY3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCht
ZXNzYWdlKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRfbWVzc2FnZSA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChtZXNzYWdlKTsKLSAgICBpdGVtLT5wb3N0TWVzc2FnZShjb252ZXJ0ZWRfbWVz
c2FnZSk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkTWVzc2FnZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOChtZXNzYWdlKTsKKyAgICBpdGVtLT5wb3N0TWVzc2FnZShjb252ZXJ0ZWRNZXNzYWdl
KTsKIH0KIAogZ2xvbmcKQEAgLTE5Miw4ICsxODgsOCBAQCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZl
X2RvbV9vYmplY3RfZ2V0X2V4Y2l0aW5nX2F0dHIoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVj
dAogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2Jq
ZWN0ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnbG9uZyByZXMgPSBpdGVtLT5l
eGNpdGluZ0F0dHIoKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVE
T01PYmplY3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVzdWx0ID0g
aXRlbS0+ZXhjaXRpbmdBdHRyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGYzY2ZkYjNh
OTI3ZTU1ZGZiMTdmZTI0OGIzYzg3YjNjNTJkMWY5MGYuLjQyNTk0YTA1NjJlMmE1MDQwMTJiNDE1
MGNiMGRkMjJjODMyODRlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTIxLDExICsyMSwxMCBAQAogI2lmbmRlZiBXZWJLaXRET01U
ZXN0QWN0aXZlRE9NT2JqZWN0X2gKICNkZWZpbmUgV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVj
dF9oCiAKLSNpbmNsdWRlICJ3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oIgogI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+Ci0jaW5jbHVkZSAid2Via2l0L1dlYktpdERPTU9i
amVjdC5oIgotCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaD4KIAogR19CRUdJ
Tl9ERUNMUwogI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVCAg
ICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZ2V0X3R5cGUoKSkK
QEAgLTQ5LDEzICs0OCwxMyBAQCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZ2V0
X3R5cGUgKHZvaWQpOwogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3Rf
ZXhjaXRpbmdfZnVuY3Rpb246CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9i
amVjdAotICogQG5leHRfY2hpbGQ6IEEgI1dlYktpdERPTU5vZGUKKyAqIEBuZXh0Q2hpbGQ6IEEg
I1dlYktpdERPTU5vZGUKICAqCiAgKiBSZXR1cm5zOgogICoKICoqLwogV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZXhjaXRpbmdfZnVuY3Rpb24oV2Vi
S2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCogc2VsZiwgV2ViS2l0RE9NTm9kZSogbmV4dF9jaGls
ZCk7Cit3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZXhjaXRpbmdfZnVuY3Rpb24o
V2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCogc2VsZiwgV2ViS2l0RE9NTm9kZSogbmV4dENo
aWxkKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfcG9zdF9t
ZXNzYWdlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVE
T01PYmplY3RQcml2YXRlLmgKaW5kZXggMjViNTQ1NThkMGNlYmJmOGIxYjU5YTBjOWQ3MmFjZWNj
YmExMjc2ZC4uNTQ3Y2RhYWUzYmIzMmNmYzk4ZDQwMjFlODVmNTM2Yzk2NmE2MTgxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEFjdGl2ZURPTU9iamVjdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0UHJp
dmF0ZS5oCkBAIC0xOCwyNCArMTgsMTcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICovCiAKLSNpZm5kZWYgV0VCX0tJVF9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVF9QUklW
QVRFX0gKLSNkZWZpbmUgV0VCX0tJVF9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVF9QUklWQVRF
X0gKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdFByaXZhdGVfaAorI2RlZmlu
ZSBXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJUZXN0
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3
ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSAiVGVzdEFjdGl2ZURPTU9iamVjdC5o
IgotCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIFdlYktpdERPTVRlc3RBY3RpdmVET01PYmpl
Y3QgKgotICAgIHdyYXBUZXN0QWN0aXZlRE9NT2JqZWN0KFdlYkNvcmU6OlRlc3RBY3RpdmVET01P
YmplY3QgKmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCAq
Ci0gICAgY29yZShXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0ICpyZXF1ZXN0KTsKLQotICAg
IFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QqCi0gICAga2l0KFdlYkNvcmU6OlRlc3RBY3Rp
dmVET01PYmplY3QqIG5vZGUpOwotCitXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0KiB3cmFw
VGVzdEFjdGl2ZURPTU9iamVjdChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0Kik7CitXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBjb3JlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmpl
Y3QqIHJlcXVlc3QpOworV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCoga2l0KFdlYkNvcmU6
OlRlc3RBY3RpdmVET01PYmplY3QqIG5vZGUpOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvKiBXRUJfS0lUX0RPTV9URVNUX0FDVElWRV9ET01fT0JKRUNUX1BSSVZBVEVfSCAqLwor
I2VuZGlmIC8qIFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCmluZGV4IDQxN2ZjNDlmZjU5MWMw
YTU1OTc1ZTNlMDFmMjU2ZGQ5Njg3M2M0N2UuLjliMTdlMWJiNDE5NTkwNmJjYWI4YmQ0MDVlNzE4
ODI1YmU1Y2JjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNw
cApAQCAtMTgsMTEgKzE4LDExIEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAq
LwogCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRET01UZXN0Q2FsbGJhY2suaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgpAQCAtMzcsMTMgKzM3LDEzIEBACiAjaW5j
bHVkZSAid2Via2l0L1dlYktpdERPTUNsYXNzM1ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01ET01T
dHJpbmdMaXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0Q2FsbGJh
Y2suaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0
ZS5oIgogI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKLQotI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNzEsMTQg
KzcxLDExIEBAIFdlYktpdERPTVRlc3RDYWxsYmFjayogd3JhcFRlc3RDYWxsYmFjayhXZWJDb3Jl
OjpUZXN0Q2FsbGJhY2sqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y29yZU9iamVjdCwgMCk7CiAKLSAgICAvKiBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5n
IGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QK
LSAgICAgKiBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiAgU2VlIHRoZSBmaW5h
bGl6ZSgpIGNvZGUgZm9yIHRoZQotICAgICAqIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgICovCisg
ICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVy
IGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0CisgICAgLy8gaW4gYSBDLWFsbG9j
YXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBt
YXRjaGluZyBkZXJlZigpLgogICAgIGNvcmVPYmplY3QtPnJlZigpOwogCi0gICAgcmV0dXJuICBX
RUJLSVRfRE9NX1RFU1RfQ0FMTEJBQ0soZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNU
X0NBTExCQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CisgICAgcmV0dXJuIFdFQktJVF9E
T01fVEVTVF9DQUxMQkFDSyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfQ0FMTEJB
Q0ssICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkBAIC05NCwzOCArOTEsMzggQEAgZW51bSB7CiBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21fb2JqZWN0ID0gV0VCS0lU
X0RPTV9PQkpFQ1Qob2JqZWN0KTsKKyAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdF
QktJVF9ET01fT0JKRUNUKG9iamVjdCk7CiAgICAgCi0gICAgaWYgKGRvbV9vYmplY3QtPmNvcmVP
YmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNrICo+KGRvbV9vYmplY3QtPmNvcmVPYmplY3Qp
OworICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKKyAgICAgICAgV2ViQ29yZTo6VGVz
dENhbGxiYWNrKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNr
Kj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKIAogICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENh
Y2hlOjpmb3JnZXQoY29yZU9iamVjdCk7CiAgICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CiAK
LSAgICAgICAgZG9tX29iamVjdC0+Y29yZU9iamVjdCA9IE5VTEw7CisgICAgICAgIGRvbU9iamVj
dC0+Y29yZU9iamVjdCA9IDA7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNv
bnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQorc3RhdGljIHZvaWQgd2Via2l0
X2RvbV90ZXN0X2NhbGxiYWNrX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBzd2l0Y2ggKHByb3Bf
aWQpIHsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7
CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bl
cnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCiAKLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3N0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgc3dpdGNoIChw
cm9wX2lkKSB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNw
ZWMpOworICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE0MCw3ICsx
MzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tf
Y2xhc3NfaW5pdChXZWJLaXRET01UZXN0Q2FsbGJhY2tDbGFzcyogcmVxdWVzdENsYXNzKQogewot
ICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENs
YXNzKTsKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJl
cXVlc3RDbGFzcyk7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVz
dF9jYWxsYmFja19maW5hbGl6ZTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19zZXRfcHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5n
ZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZ2V0X3Byb3BlcnR5OwpAQCAt
MTYwLDkgKzE1Nyw5IEBAIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25v
X3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZikKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sgKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmNhbGxi
YWNrV2l0aE5vUGFyYW0oKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RDYWxs
YmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBp
dGVtLT5jYWxsYmFja1dpdGhOb1BhcmFtKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAg
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU1FMIERhdGFiYXNlIikKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwpAQCAtMTcwLDIwICsxNjcsMjAgQEAgd2Vi
a2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbm9fcGFyYW0oV2ViS2l0RE9NVGVz
dENhbGxiYWNrKiBzZWxmKQogfQogCiBnYm9vbGVhbgotd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNr
X2NhbGxiYWNrX3dpdGhfY2xhc3MxcGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBX
ZWJLaXRET01DbGFzczEqIGNsYXNzMXBhcmFtKQord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Nh
bGxiYWNrX3dpdGhfY2xhc3MxcGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBXZWJL
aXRET01DbGFzczEqIGNsYXNzMVBhcmFtKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFjayAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY2xhc3MxcGFyYW0s
IDApOwotICAgIFdlYkNvcmU6OkNsYXNzMSAqIGNvbnZlcnRlZF9jbGFzczFwYXJhbSA9IE5VTEw7
Ci0gICAgaWYgKGNsYXNzMXBhcmFtICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX2NsYXNz
MXBhcmFtID0gV2ViS2l0Ojpjb3JlKGNsYXNzMXBhcmFtKTsKLSAgICAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoY29udmVydGVkX2NsYXNzMXBhcmFtLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0Q2Fs
bGJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoY2xhc3MxUGFyYW0sIDApOworICAgIFdlYkNvcmU6OkNsYXNzMSogY29udmVydGVkQ2xhc3Mx
UGFyYW0gPSAwOworICAgIGlmIChjbGFzczFQYXJhbSkgeworICAgICAgICBjb252ZXJ0ZWRDbGFz
czFQYXJhbSA9IFdlYktpdDo6Y29yZShjbGFzczFQYXJhbSk7CisgICAgICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvbnZlcnRlZENsYXNzMVBhcmFtLCAwKTsKICAgICB9Ci0gICAgZ2Jvb2xlYW4g
cmVzID0gaXRlbS0+Y2FsbGJhY2tXaXRoQ2xhc3MxUGFyYW0oY29udmVydGVkX2NsYXNzMXBhcmFt
KTsKLSAgICByZXR1cm4gcmVzOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNr
V2l0aENsYXNzMVBhcmFtKGNvbnZlcnRlZENsYXNzMVBhcmFtKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTUUwgRGF0YWJh
c2UiKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7CkBAIC0xOTEsMjIgKzE4
OCwyMiBAQCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9jbGFzczFwYXJh
bShXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsCiB9CiAKIGdib29sZWFuCi13ZWJraXRfZG9t
X3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9jbGFzczJwYXJhbShXZWJLaXRET01UZXN0Q2Fs
bGJhY2sqIHNlbGYsIFdlYktpdERPTUNsYXNzMiogY2xhc3MycGFyYW0sIGNvbnN0IGdjaGFyKiBz
dHJfYXJnKQord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfY2xhc3MycGFy
YW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBXZWJLaXRET01DbGFzczIqIGNsYXNzMlBh
cmFtLCBjb25zdCBnY2hhciogc3RyQXJnKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFjayAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY2xhc3MycGFyYW0s
IDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0cl9hcmcsIDApOwotICAgIFdlYkNvcmU6
OkNsYXNzMiAqIGNvbnZlcnRlZF9jbGFzczJwYXJhbSA9IE5VTEw7Ci0gICAgaWYgKGNsYXNzMnBh
cmFtICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX2NsYXNzMnBhcmFtID0gV2ViS2l0Ojpj
b3JlKGNsYXNzMnBhcmFtKTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVk
X2NsYXNzMnBhcmFtLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY2xhc3MyUGFyYW0sIDAp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywgMCk7CisgICAgV2ViQ29yZTo6Q2xh
c3MyKiBjb252ZXJ0ZWRDbGFzczJQYXJhbSA9IDA7CisgICAgaWYgKGNsYXNzMlBhcmFtKSB7Cisg
ICAgICAgIGNvbnZlcnRlZENsYXNzMlBhcmFtID0gV2ViS2l0Ojpjb3JlKGNsYXNzMlBhcmFtKTsK
KyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkQ2xhc3MyUGFyYW0sIDApOwog
ICAgIH0KLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRfc3RyX2FyZyA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOChzdHJfYXJnKTsKLSAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5jYWxsYmFja1dpdGhD
bGFzczJQYXJhbShjb252ZXJ0ZWRfY2xhc3MycGFyYW0sIGNvbnZlcnRlZF9zdHJfYXJnKTsKLSAg
ICByZXR1cm4gcmVzOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxi
YWNrV2l0aENsYXNzMlBhcmFtKGNvbnZlcnRlZENsYXNzMlBhcmFtLCBjb252ZXJ0ZWRTdHJBcmcp
OworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlNRTCBEYXRhYmFzZSIpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFu
PigwKTsKQEAgLTIxNCwyMCArMjExLDIwIEBAIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxs
YmFja193aXRoX2NsYXNzMnBhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwKIH0KIAog
Z2xvbmcKLXdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9ib29sX3Jl
dHVybl90eXBlKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NQ2xhc3MzKiBj
bGFzczNwYXJhbSkKK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9i
b29sX3JldHVybl90eXBlKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NQ2xh
c3MzKiBjbGFzczNQYXJhbSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sgKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNsYXNzM3BhcmFtLCAwKTsKLSAg
ICBXZWJDb3JlOjpDbGFzczMgKiBjb252ZXJ0ZWRfY2xhc3MzcGFyYW0gPSBOVUxMOwotICAgIGlm
IChjbGFzczNwYXJhbSAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF9jbGFzczNwYXJhbSA9
IFdlYktpdDo6Y29yZShjbGFzczNwYXJhbSk7Ci0gICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KGNvbnZlcnRlZF9jbGFzczNwYXJhbSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNsYXNz
M1BhcmFtLCAwKTsKKyAgICBXZWJDb3JlOjpDbGFzczMqIGNvbnZlcnRlZENsYXNzM1BhcmFtID0g
MDsKKyAgICBpZiAoY2xhc3MzUGFyYW0pIHsKKyAgICAgICAgY29udmVydGVkQ2xhc3MzUGFyYW0g
PSBXZWJLaXQ6OmNvcmUoY2xhc3MzUGFyYW0pOworICAgICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChjb252ZXJ0ZWRDbGFzczNQYXJhbSwgMCk7CiAgICAgfQotICAgIGdsb25nIHJlcyA9IGl0ZW0t
PmNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKGNvbnZlcnRlZF9jbGFzczNwYXJhbSk7Ci0g
ICAgcmV0dXJuIHJlczsKKyAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhOb25C
b29sUmV0dXJuVHlwZShjb252ZXJ0ZWRDbGFzczNQYXJhbSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
ICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU1FMIERhdGFiYXNl
IikKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2xvbmc+KDApOwpAQCAtMjM1LDIwICsyMzIsMjAg
QEAgd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbm9uX2Jvb2xfcmV0dXJu
X3R5cGUoV2ViS2l0RE9NVGVzdENhbGxiYWMKIH0KIAogZ2Jvb2xlYW4KLXdlYmtpdF9kb21fdGVz
dF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlc3RDYWxsYmFj
ayogc2VsZiwgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogbGlzdF9wYXJhbSkKK3dlYmtpdF9kb21f
dGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlc3RDYWxs
YmFjayogc2VsZiwgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRl
c3RDYWxsYmFjayAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwobGlzdF9wYXJhbSwgMCk7Ci0gICAgV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCAqIGNv
bnZlcnRlZF9saXN0X3BhcmFtID0gTlVMTDsKLSAgICBpZiAobGlzdF9wYXJhbSAhPSBOVUxMKSB7
Ci0gICAgICAgIGNvbnZlcnRlZF9saXN0X3BhcmFtID0gV2ViS2l0Ojpjb3JlKGxpc3RfcGFyYW0p
OwotICAgICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRfbGlzdF9wYXJhbSwgMCk7
CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGxpc3RQYXJhbSwgMCk7CisgICAgV2ViQ29yZTo6RE9N
U3RyaW5nTGlzdCogY29udmVydGVkTGlzdFBhcmFtID0gMDsKKyAgICBpZiAobGlzdFBhcmFtKSB7
CisgICAgICAgIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOwor
ICAgICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRMaXN0UGFyYW0sIDApOwogICAg
IH0KLSAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KGNvbnZl
cnRlZF9saXN0X3BhcmFtKTsKLSAgICByZXR1cm4gcmVzOworICAgIGdib29sZWFuIHJlc3VsdCA9
IGl0ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29udmVydGVkTGlzdFBhcmFtKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJTUUwgRGF0YWJhc2UiKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7CkBA
IC0yNTYsMTQgKzI1MywxNCBAQCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0
aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsCiB9CiAKIGdib29sZWFu
Ci13ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9ib29sZWFuKFdlYktpdERP
TVRlc3RDYWxsYmFjayogc2VsZiwgZ2Jvb2xlYW4gYm9vbF9wYXJhbSkKK3dlYmtpdF9kb21fdGVz
dF9jYWxsYmFja19jYWxsYmFja193aXRoX2Jvb2xlYW4oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBz
ZWxmLCBnYm9vbGVhbiBib29sUGFyYW0pCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrICogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5jYWxsYmFja1dpdGhC
b29sZWFuKGJvb2xfcGFyYW0pOwotICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdENh
bGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFuIHJlc3VsdCA9
IGl0ZW0tPmNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbFBhcmFtKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTUUwgRGF0YWJh
c2UiKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCmluZGV4IGMwZDc0MzRkOGMxZjRlYmZiZjY2MWI1NjM4
MjEzYTBlNzIyMzBlNjUuLmQ5ZmZmZWY3MzFjZWEwM2EyNjQ3M2YwZGY3MDAwMWU3NWM4MjE0ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCkBAIC0yMSwxMSArMjEs
MTAgQEAKICNpZm5kZWYgV2ViS2l0RE9NVGVzdENhbGxiYWNrX2gKICNkZWZpbmUgV2ViS2l0RE9N
VGVzdENhbGxiYWNrX2gKIAotI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCiAj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KLSNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5o
PgogCiBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX0NBTExCQUNL
ICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19nZXRfdHlwZSgpKQpAQCAtNTks
NTggKzU4LDU4IEBAIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vX3Bh
cmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZik7CiAvKioKICAqIHdlYmtpdF9kb21fdGVz
dF9jYWxsYmFja19jYWxsYmFja193aXRoX2NsYXNzMXBhcmFtOgogICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RDYWxsYmFjawotICogQGNsYXNzMXBhcmFtOiBBICNXZWJLaXRET01DbGFzczEKKyAq
IEBjbGFzczFQYXJhbTogQSAjV2ViS2l0RE9NQ2xhc3MxCiAgKgogICogUmV0dXJuczoKICAqCiAq
Ki8KIFdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFj
a193aXRoX2NsYXNzMXBhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9N
Q2xhc3MxKiBjbGFzczFwYXJhbSk7Cit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tf
d2l0aF9jbGFzczFwYXJhbShXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIFdlYktpdERPTUNs
YXNzMSogY2xhc3MxUGFyYW0pOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19j
YWxsYmFja193aXRoX2NsYXNzMnBhcmFtOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RDYWxs
YmFjawotICogQGNsYXNzMnBhcmFtOiBBICNXZWJLaXRET01DbGFzczIKLSAqIEBzdHJfYXJnOiBB
ICNnY2hhcgorICogQGNsYXNzMlBhcmFtOiBBICNXZWJLaXRET01DbGFzczIKKyAqIEBzdHJBcmc6
IEEgI2djaGFyCiAgKgogICogUmV0dXJuczoKICAqCiAqKi8KIFdFQktJVF9BUEkgZ2Jvb2xlYW4K
LXdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2NsYXNzMnBhcmFtKFdlYktp
dERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NQ2xhc3MyKiBjbGFzczJwYXJhbSwgY29u
c3QgZ2NoYXIqIHN0cl9hcmcpOword2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dp
dGhfY2xhc3MycGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBXZWJLaXRET01DbGFz
czIqIGNsYXNzMlBhcmFtLCBjb25zdCBnY2hhciogc3RyQXJnKTsKIAogLyoqCiAgKiB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9ub25fYm9vbF9yZXR1cm5fdHlwZToKICAq
IEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2sKLSAqIEBjbGFzczNwYXJhbTogQSAjV2Vi
S2l0RE9NQ2xhc3MzCisgKiBAY2xhc3MzUGFyYW06IEEgI1dlYktpdERPTUNsYXNzMwogICoKICAq
IFJldHVybnM6CiAgKgogKiovCiBXRUJLSVRfQVBJIGdsb25nCi13ZWJraXRfZG9tX3Rlc3RfY2Fs
bGJhY2tfY2FsbGJhY2tfd2l0aF9ub25fYm9vbF9yZXR1cm5fdHlwZShXZWJLaXRET01UZXN0Q2Fs
bGJhY2sqIHNlbGYsIFdlYktpdERPTUNsYXNzMyogY2xhc3MzcGFyYW0pOword2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbm9uX2Jvb2xfcmV0dXJuX3R5cGUoV2ViS2l0RE9N
VGVzdENhbGxiYWNrKiBzZWxmLCBXZWJLaXRET01DbGFzczMqIGNsYXNzM1BhcmFtKTsKIAogLyoq
CiAgKiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9zdHJpbmdfbGlzdDoK
ICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2sKLSAqIEBsaXN0X3BhcmFtOiBBICNX
ZWJLaXRET01ET01TdHJpbmdMaXN0CisgKiBAbGlzdFBhcmFtOiBBICNXZWJLaXRET01ET01TdHJp
bmdMaXN0CiAgKgogICogUmV0dXJuczoKICAqCiAqKi8KIFdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdlYktpdERP
TVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogbGlzdF9wYXJhbSk7
Cit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9zdHJpbmdfbGlzdChXZWJL
aXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIFdlYktpdERPTURPTVN0cmluZ0xpc3QqIGxpc3RQYXJh
bSk7CiAKIC8qKgogICogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfYm9v
bGVhbjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2sKLSAqIEBib29sX3BhcmFt
OiBBICNnYm9vbGVhbgorICogQGJvb2xQYXJhbTogQSAjZ2Jvb2xlYW4KICAqCiAgKiBSZXR1cm5z
OgogICoKICoqLwogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNr
X2NhbGxiYWNrX3dpdGhfYm9vbGVhbihXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIGdib29s
ZWFuIGJvb2xfcGFyYW0pOword2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhf
Ym9vbGVhbihXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIGdib29sZWFuIGJvb2xQYXJhbSk7
CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxs
YmFja1ByaXZhdGUuaAppbmRleCA4OTdkNjY0ZTU5OTc0MGYyOTYxNjNmMDNjMmJiNDExNWU5MGE4
MGM3Li4zNThkYTJkNzYwNDkwZDgwMmJiMTZmNTE1ODYxNmE1MzY2MzU4MGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Q2FsbGJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZS5oCkBAIC0xOCwyNyAr
MTgsMjAgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYg
V0VCX0tJVF9ET01fVEVTVF9DQUxMQkFDS19QUklWQVRFX0gKLSNkZWZpbmUgV0VCX0tJVF9ET01f
VEVTVF9DQUxMQkFDS19QUklWQVRFX0gKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RDYWxsYmFja1ByaXZhdGVfaAogCisjaW5jbHVk
ZSAiVGVzdENhbGxiYWNrLmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3
ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSAiVGVzdENhbGxiYWNrLmgiCi0KICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICBXZWJLaXRE
T01UZXN0Q2FsbGJhY2sgKgotICAgIHdyYXBUZXN0Q2FsbGJhY2soV2ViQ29yZTo6VGVzdENhbGxi
YWNrICpjb3JlT2JqZWN0KTsKLQotICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFjayAqCi0gICAgY29y
ZShXZWJLaXRET01UZXN0Q2FsbGJhY2sgKnJlcXVlc3QpOwotCi0gICAgV2ViS2l0RE9NVGVzdENh
bGxiYWNrKgotICAgIGtpdChXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIG5vZGUpOwotCitXZWJLaXRE
T01UZXN0Q2FsbGJhY2sqIHdyYXBUZXN0Q2FsbGJhY2soV2ViQ29yZTo6VGVzdENhbGxiYWNrKik7
CitXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGNvcmUoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiByZXF1
ZXN0KTsKK1dlYktpdERPTVRlc3RDYWxsYmFjayoga2l0KFdlYkNvcmU6OlRlc3RDYWxsYmFjayog
bm9kZSk7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8qIEVOQUJMRShTUUxfREFU
QUJBU0UpICovCiAKLSNlbmRpZiAvKiBXRUJfS0lUX0RPTV9URVNUX0NBTExCQUNLX1BSSVZBVEVf
SCAqLworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RDYWxsYmFja1ByaXZhdGVfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5k
ZXggMWZiNjI3YzQwNDcwNGE5MzRmNDNhOGJjMTkzY2M1OGU2ZDUyZTUxMC4uMzA2YmFlYTZmMzIx
YmEwY2I3MTU5NDFkMWYwZDI4Y2Y3NGU5MjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xOCwyMiArMTgsMjIgQEAK
ICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RDdXN0
b21OYW1lZEdldHRlci5oIgogCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRl
ICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCIKICNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSAid2Vi
a2l0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5oIgogI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0
ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAi
d2Via2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTYxLDE0ICs2MSwxMSBAQCBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHdy
YXBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoV2ViQ29yZTo6VGVzdEN1c3RvbU5hbQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwogCi0gICAgLyogV2UgY2FsbCByZWYo
KSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qg
c3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgICogaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVj
dHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUKLSAgICAgKiBtYXRjaGluZyBk
ZXJlZigpLgotICAgICAqLworICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcg
YSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAor
ICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxp
emUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KICAgICBjb3JlT2JqZWN0LT5yZWYo
KTsKIAotICAgIHJldHVybiAgV0VCS0lUX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVIoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JlLW9iamVjdCIs
IGNvcmVPYmplY3QsIE5VTEwpKTsKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0NVU1RPTV9O
QU1FRF9HRVRURVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NVU1RPTV9OQU1F
RF9HRVRURVIsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkBAIC04MiwzOCArNzksMzggQEAgZW51bSB7CiBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9maW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCiB7CiAKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbV9vYmplY3QgPSBXRUJLSVRfRE9NX09C
SkVDVChvYmplY3QpOworICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RP
TV9PQkpFQ1Qob2JqZWN0KTsKICAgICAKLSAgICBpZiAoZG9tX29iamVjdC0+Y29yZU9iamVjdCkg
ewotICAgICAgICBXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNvcmVPYmplY3QgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgKj4oZG9tX29iamVjdC0+
Y29yZU9iamVjdCk7CisgICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgeworICAgICAgICBX
ZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOwog
CiAgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKICAg
ICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKIAotICAgICAgICBkb21fb2JqZWN0LT5jb3JlT2Jq
ZWN0ID0gTlVMTDsKKyAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKICAgICB9CiAK
IAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVy
X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfc2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIHN3aXRjaCAocHJvcGVy
dHlJZCkgewogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9u
YW1lZF9nZXR0ZXJfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgc3dpdGNoIChwcm9w
X2lkKSB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMp
OworICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
ZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTEyOCw3ICsxMjUs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9jb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9j
dXN0b21fbmFtZWRfZ2V0dGVyX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyQ2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgR09iamVjdENsYXNzKiBnb2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwogICAgIGdvYmplY3RDbGFz
cy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9maW5hbGl6
ZTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9jdXN0
b21fbmFtZWRfZ2V0dGVyX3NldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2dldF9wcm9wZXJ0eTsK
QEAgLTE0Nyw5ICsxNDQsOSBAQCB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9h
bm90aGVyX2Z1bmN0aW9uKFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldAogewogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRlciAqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3RyKTsKLSAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRfc3RyID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cik7Ci0gICAg
aXRlbS0+YW5vdGhlckZ1bmN0aW9uKGNvbnZlcnRlZF9zdHIpOworICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFN0ciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHIpOworICAgIGl0ZW0tPmFub3Ro
ZXJGdW5jdGlvbihjb252ZXJ0ZWRTdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IDk1NmEyNTRhYTNjY2U2Njc2ZDA2
MzYwNjMxYmQ4ZDk5YmE3MGNmNTAuLmYwMTZlM2ZjNDU1MDhlOTU0YTA3NWE3ZDcyMDNlNTZhOWJl
OGQyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1l
ZEdldHRlci5oCkBAIC0yMSwxMSArMjEsMTAgQEAKICNpZm5kZWYgV2ViS2l0RE9NVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyX2gKICNkZWZpbmUgV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyX2gK
IAotI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCiAjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KLSNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NT2JqZWN0
LmgiCi0KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgogCiBHX0JFR0lOX0RF
Q0xTCiAjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVIgICAg
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfZ2V0X3R5cGUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdl
dHRlclByaXZhdGUuaAppbmRleCA1NDgzNWE0MzA1MWUzNTIxMmM3ODJmNmU5NmZjODVlNTYxYThh
ZmQwLi4yZTg4MmNkOGY2N2M3YWQ3ZjQ3MmZjZDRlOWIwMWJkM2YwMzUyYTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJp
dmF0ZS5oCkBAIC0xOCwyNCArMTgsMTcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICovCiAKLSNpZm5kZWYgV0VCX0tJVF9ET01fVEVTVF9DVVNUT01fTkFNRURfR0VUVEVSX1BS
SVZBVEVfSAotI2RlZmluZSBXRUJfS0lUX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVJfUFJJ
VkFURV9ICisjaWZuZGVmIFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGVfaAor
I2RlZmluZSBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlX2gKIAorI2luY2x1
ZGUgIlRlc3RDdXN0b21OYW1lZEdldHRlci5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgIlRlc3RDdXN0b21O
YW1lZEdldHRlci5oIgotCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIFdlYktpdERPTVRlc3RD
dXN0b21OYW1lZEdldHRlciAqCi0gICAgd3JhcFRlc3RDdXN0b21OYW1lZEdldHRlcihXZWJDb3Jl
OjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgKmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6VGVz
dEN1c3RvbU5hbWVkR2V0dGVyICoKLSAgICBjb3JlKFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdl
dHRlciAqcmVxdWVzdCk7Ci0KLSAgICBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqCi0g
ICAga2l0KFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRlciogbm9kZSk7Ci0KK1dlYktpdERP
TVRlc3RDdXN0b21OYW1lZEdldHRlciogd3JhcFRlc3RDdXN0b21OYW1lZEdldHRlcihXZWJDb3Jl
OjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqKTsKK1dlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRl
ciogY29yZShXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHJlcXVlc3QpOworV2ViS2l0
RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBraXQoV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBub2RlKTsKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLyogV0VCX0tJVF9E
T01fVEVTVF9DVVNUT01fTkFNRURfR0VUVEVSX1BSSVZBVEVfSCAqLworI2VuZGlmIC8qIFdlYktp
dERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDdmNjIzNjJhNjc1
ODJmMGRhMGI1OWMwMzJhNjA2ZDNkNDBlOWNiZGQuLjhiM2U5ODAwMDI4YmZhZGI5NzMzYzMzODJk
YzhjNDU2OWNkM2Y5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE4LDIyICsxOCwyMiBAQAogICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIK
IAotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiZ29iamVj
dC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RF
dmVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RFdmVudENv
bnN0cnVjdG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKICNpbmNsdWRl
ICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02MSwxNCArNjEsMTEg
QEAgV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHdyYXBUZXN0RXZlbnRDb25zdHJ1Y3Rv
cihXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHIKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChj
b3JlT2JqZWN0LCAwKTsKIAotICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcg
YSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAot
ICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFs
aXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICAgKi8KKyAg
ICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIg
YmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAvLyBpbiBhIEMtYWxsb2Nh
dGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1h
dGNoaW5nIGRlcmVmKCkuCiAgICAgY29yZU9iamVjdC0+cmVmKCk7CiAKLSAgICByZXR1cm4gIFdF
QktJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
RE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKKyAg
ICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUiwgImNvcmUtb2JqZWN0IiwgY29y
ZU9iamVjdCwgTlVMTCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTg0LDUwICs4
MSw0OCBAQCBlbnVtIHsKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1
Y3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAKLSAgICBXZWJLaXRET01PYmplY3Qq
IGRvbV9vYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOworICAgIFdlYktpdERPTU9i
amVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKICAgICAKLSAgICBp
ZiAoZG9tX29iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpUZXN0RXZlbnRD
b25zdHJ1Y3RvciogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVudENv
bnN0cnVjdG9yICo+KGRvbV9vYmplY3QtPmNvcmVPYmplY3QpOworICAgIGlmIChkb21PYmplY3Qt
PmNvcmVPYmplY3QpIHsKKyAgICAgICAgV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIGNv
cmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGRv
bU9iamVjdC0+Y29yZU9iamVjdCk7CiAKICAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
Zm9yZ2V0KGNvcmVPYmplY3QpOwogICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOwogCi0gICAg
ICAgIGRvbV9vYmplY3QtPmNvcmVPYmplY3QgPSBOVUxMOworICAgICAgICBkb21PYmplY3QtPmNv
cmVPYmplY3QgPSAwOwogICAgIH0KIAogCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90
ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9
CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF9j
b25zdHJ1Y3Rvcl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlk
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7Cisg
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBw
c3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAg
IFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0VW
RU5UX0NPTlNUUlVDVE9SKG9iamVjdCk7CiAgICAgV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0
b3IqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIHN3aXRjaCAocHJvcF9pZCkg
ewotICAgIGNhc2UgUFJPUF9BVFRSMToKLSAgICB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7
CisgICAgY2FzZSBQUk9QX0FUVFIxOiB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFs
dWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPmF0dHIxKCkpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9BVFRSMjoKLSAgICB7CisgICAgY2FzZSBQUk9QX0FU
VFIyOiB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhT
dHJpbmcoY29yZVNlbGYtPmF0dHIyKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CkBAIC0xNDIsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V2ZW50X2Nv
bnN0cnVjdG9yX2NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEV2
ZW50Q29uc3RydWN0b3JDbGFzcyogcmVxdWVzdENsYXNzKQogewotICAgIEdPYmplY3RDbGFzcyAq
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CiAgICAg
Z29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rv
cl9maW5hbGl6ZTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21f
dGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9zZXRfcHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5n
ZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0X3Byb3Bl
cnR5OwpAQCAtMTc1LDkgKzE3MCw5IEBAIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rv
cl9nZXRfYXR0cjEoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yICogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT5hdHRyMSgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RF
dmVudENvbnN0cnVjdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHIxKCkpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIGdjaGFyKgpAQCAtMTg1LDggKzE4MCw4IEBAIHdlYmtpdF9kb21fdGVzdF9l
dmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjIoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iq
IHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RFdmVudENv
bnN0cnVjdG9yICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzID0g
Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyMigpKTsKLSAgICByZXR1cm4gcmVzOworICAg
IFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHIyKCkp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDJmMzM3ZmI2MDE1NDU3MzRkNThkN2MwMjhh
YjFhMzk3OTA0NjFiOWQuLmMyZjQwNTVhMTY1MzhiM2Y0M2I0ZjgzYTBlOTMzMTBkZWEzNGMwOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aApAQCAtMjEsMTEgKzIxLDEwIEBACiAjaWZuZGVmIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVj
dG9yX2gKICNkZWZpbmUgV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JfaAogCi0jaW5jbHVk
ZSAid2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaCIKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgor
I2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01PYmplY3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oPgotI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01PYmplY3QuaCIKLQorI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg+CiAKIEdfQkVHSU5fREVDTFMKICNkZWZp
bmUgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IgICAgICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2dldF90eXBlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZS5oCmlu
ZGV4IDI1MGFiYzUzMGE5ZDg3YWY4YmJhNjE1NzE0OTQxMDRlZjc0M2E4MjYuLmU3ZmMwMTg3NWEw
OGZmMTY2YWEzZjRhMTc3N2RlYTk4NGRjZDRlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVj
dG9yUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZS5oCkBAIC0xOCwyNCAr
MTgsMTcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYg
V0VCX0tJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUl9QUklWQVRFX0gKLSNkZWZpbmUgV0VC
X0tJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUl9QUklWQVRFX0gKKyNpZm5kZWYgV2ViS2l0
RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdEV2
ZW50Q29uc3RydWN0b3JQcml2YXRlX2gKIAorI2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9N
T2JqZWN0Lmg+Ci0jaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKLQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKLSAgICBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvciAqCi0gICAgd3Jh
cFRlc3RFdmVudENvbnN0cnVjdG9yKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yICpjb3Jl
T2JqZWN0KTsKLQotICAgIFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yICoKLSAgICBjb3Jl
KFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yICpyZXF1ZXN0KTsKLQotICAgIFdlYktpdERP
TVRlc3RFdmVudENvbnN0cnVjdG9yKgotICAgIGtpdChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1
Y3Rvciogbm9kZSk7Ci0KK1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKiB3cmFwVGVzdEV2
ZW50Q29uc3RydWN0b3IoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqKTsKK1dlYkNvcmU6
OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlKFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9y
KiByZXF1ZXN0KTsKK1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKiBraXQoV2ViQ29yZTo6
VGVzdEV2ZW50Q29uc3RydWN0b3IqIG5vZGUpOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvKiBXRUJfS0lUX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SX1BSSVZBVEVfSCAqLwor
I2VuZGlmIC8qIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZV9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAxYTJlNWUz
ZjU4NDlmN2Y5OTkzMmFiMDRkYmZmZjVjZTIxYjM5NjMwLi4wMjMzY2RmMzk2ZjU4M2UyY2E4OWUw
NjM1ZGU1ZDIxZTZiOTkyMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RF
dmVudFRhcmdldC5jcHAKQEAgLTE4LDExICsxOCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCiAqLwogCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuaCIKIAotI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAiRE9NT2Jq
ZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiR09iamVj
dEV2ZW50TGlzdGVuZXIuaCIKQEAgLTM3LDExICszNSwxMyBAQAogI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01FdmVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NTm9kZS5o
IgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIK
ICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdG1hcnNo
YWwuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02OSwx
NCArNjksMTEgQEAgV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0KiB3cmFwVGVzdEV2ZW50VGFyZ2V0
KFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZU9iamUKIHsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKIAotICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRo
YW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysr
IG9iamVjdAotICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUg
dGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KLSAg
ICAgKi8KKyAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0
IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAvLyBpbiBh
IEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBm
b3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCiAgICAgY29yZU9iamVjdC0+cmVmKCk7CiAKLSAgICBy
ZXR1cm4gIFdFQktJVF9ET01fVEVTVF9FVkVOVF9UQVJHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0RPTV9URVNUX0VWRU5UX1RBUkdFVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworICAg
IHJldHVybiBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfVEFSR0VUKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9ET01fVEVTVF9FVkVOVF9UQVJHRVQsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5V
TEwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC0xMjIsMzggKzExOSwzOCBAQCBl
bnVtIHsKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogewogCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21fb2JqZWN0ID0g
V0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKKyAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVj
dCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7CiAgICAgCi0gICAgaWYgKGRvbV9vYmplY3Qt
PmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBjb3JlT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0ICo+KGRvbV9vYmplY3Qt
PmNvcmVPYmplY3QpOworICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKKyAgICAgICAg
V2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6VGVzdEV2ZW50VGFyZ2V0Kj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKIAogICAgICAgICBX
ZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7CiAgICAgICAgIGNvcmVP
YmplY3QtPmRlcmVmKCk7CiAKLSAgICAgICAgZG9tX29iamVjdC0+Y29yZU9iamVjdCA9IE5VTEw7
CisgICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7CiAgICAgfQogCiAKICAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF90
YXJnZXRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X3Rlc3RfZXZlbnRfdGFyZ2V0X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBzd2l0Y2ggKHByb3Bf
aWQpIHsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7
CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bl
cnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCiAKLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2dldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBz
d2l0Y2ggKHByb3BfaWQpIHsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICBkZWZhdWx0
OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAt
MTY4LDcgKzE2NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRf
Y29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfZXZlbnRfdGFyZ2V0X2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0Q2xhc3Mq
IHJlcXVlc3RDbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxp
emUgPSB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2ZpbmFsaXplOwogICAgIGdvYmplY3RD
bGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9zZXRfcHJv
cGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rf
ZXZlbnRfdGFyZ2V0X2dldF9wcm9wZXJ0eTsKQEAgLTE4NywzMCArMTg0LDMwIEBAIHdlYmtpdF9k
b21fdGVzdF9ldmVudF90YXJnZXRfaXRlbShXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHNlbGYs
IGd1bG9uZyBpbmRleCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVz
dEV2ZW50VGFyZ2V0ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6Ok5vZGU+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+aXRlbShpbmRleCkpOwot
ICAgIFdlYktpdERPTU5vZGUqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKLSAgICBy
ZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gZ29iamVjdFJlc3VsdCA9IFdU
Rjo6Z2V0UHRyKGl0ZW0tPml0ZW0oaW5kZXgpKTsKKyAgICBXZWJLaXRET01Ob2RlKiByZXN1bHQg
PSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBnYm9vbGVhbgotd2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9kaXNwYXRjaF9ldmVu
dChXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHNlbGYsIFdlYktpdERPTUV2ZW50KiBldnQsIEdF
cnJvciAqKmVycm9yKQord2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9kaXNwYXRjaF9ldmVu
dChXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHNlbGYsIFdlYktpdERPTUV2ZW50KiBldnQsIEdF
cnJvcioqIGVycm9yKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0
RXZlbnRUYXJnZXQgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRl
c3RFdmVudFRhcmdldCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChldnQsIDApOwotICAgIFdlYkNvcmU6OkV2ZW50ICogY29udmVydGVkX2V2dCA9
IE5VTEw7Ci0gICAgaWYgKGV2dCAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF9ldnQgPSBX
ZWJLaXQ6OmNvcmUoZXZ0KTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVk
X2V2dCwgMCk7CisgICAgV2ViQ29yZTo6RXZlbnQqIGNvbnZlcnRlZEV2dCA9IDA7CisgICAgaWYg
KGV2dCkgeworICAgICAgICBjb252ZXJ0ZWRFdnQgPSBXZWJLaXQ6OmNvcmUoZXZ0KTsKKyAgICAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkRXZ0LCAwKTsKICAgICB9CiAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzID0gaXRlbS0+ZGlz
cGF0Y2hFdmVudChjb252ZXJ0ZWRfZXZ0LCBlYyk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRl
bS0+ZGlzcGF0Y2hFdmVudChjb252ZXJ0ZWRFdnQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAg
IGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9E
T00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAgcmV0dXJuIHJlczsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RF
dmVudFRhcmdldC5oCmluZGV4IGMxMDYzNWI1NzgyNzZkNDMyODQxZmI0OTBhZDA5NjkwZjYzMWRh
MWQuLjgwZjlkNTIwNTU1MjNjY2RkMTMxMTFkNjRiMDFmODZiYzYwNGJmODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RFdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudFRhcmdldC5oCkBAIC0yMSwxMSArMjEsMTAgQEAK
ICNpZm5kZWYgV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0X2gKICNkZWZpbmUgV2ViS2l0RE9NVGVz
dEV2ZW50VGFyZ2V0X2gKIAotI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCiAj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KLSNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5o
PgogCiBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX0VWRU5UX1RB
UkdFVCAgICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2dldF90eXBlKCkp
CkBAIC02Nyw3ICs2Niw3IEBAIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfaXRlbShXZWJL
aXRET01UZXN0RXZlbnRUYXJnZXQqIHNlbGYsIGd1bG9uZyBpbmRleCk7CiAgKgogKiovCiBXRUJL
SVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2Rpc3BhdGNoX2V2
ZW50KFdlYktpdERPTVRlc3RFdmVudFRhcmdldCogc2VsZiwgV2ViS2l0RE9NRXZlbnQqIGV2dCwg
R0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9kaXNwYXRjaF9l
dmVudChXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHNlbGYsIFdlYktpdERPTUV2ZW50KiBldnQs
IEdFcnJvcioqIGVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFy
Z2V0UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZS5oCmluZGV4IDA5MDhjZTE1MTA0YTM4
NjRiZGRkNDVhNmVmZmY0ZDBlMDU3YWE1ODYuLjFjYWM1Zjc3ZmVjZjExNjUyMzA2YWJjZDkwODY3
YzhlMDcxMjgwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZl
bnRUYXJnZXRQcml2YXRlLmgKQEAgLTE4LDI0ICsxOCwxNyBAQAogICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBXRUJfS0lUX0RPTV9URVNUX0VWRU5UX1RBUkdF
VF9QUklWQVRFX0gKLSNkZWZpbmUgV0VCX0tJVF9ET01fVEVTVF9FVkVOVF9UQVJHRVRfUFJJVkFU
RV9ICisjaWZuZGVmIFdlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZhdGVfaAorI2RlZmluZSBX
ZWJLaXRET01UZXN0RXZlbnRUYXJnZXRQcml2YXRlX2gKIAorI2luY2x1ZGUgIlRlc3RFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L1dlYktp
dERPTU9iamVjdC5oPgotI2luY2x1ZGUgIlRlc3RFdmVudFRhcmdldC5oIgotCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotICAgIFdlYktpdERPTVRlc3RFdmVudFRhcmdldCAqCi0gICAgd3JhcFRlc3RF
dmVudFRhcmdldChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQgKmNvcmVPYmplY3QpOwotCi0gICAg
V2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0ICoKLSAgICBjb3JlKFdlYktpdERPTVRlc3RFdmVudFRh
cmdldCAqcmVxdWVzdCk7Ci0KLSAgICBXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqCi0gICAga2l0
KFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogbm9kZSk7Ci0KK1dlYktpdERPTVRlc3RFdmVudFRh
cmdldCogd3JhcFRlc3RFdmVudFRhcmdldChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqKTsKK1dl
YkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZShXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHJl
cXVlc3QpOworV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0KiBraXQoV2ViQ29yZTo6VGVzdEV2ZW50
VGFyZ2V0KiBub2RlKTsKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLyogV0VCX0tJ
VF9ET01fVEVTVF9FVkVOVF9UQVJHRVRfUFJJVkFURV9IICovCisjZW5kaWYgLyogV2ViS2l0RE9N
VGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwCmluZGV4IDA4MmY4ZjJlYThiZjNlMTQ3MTNkNWJiMjIzMTZmZjExNzhh
ODIwNjcuLjAxYWIyYjM3OTQ2ODMyNmRhZTY3ZWU4MGM0Njg4ZTUzMWM0MjU0MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0xOCwxMSArMTgsMTEg
QEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RJ
bnRlcmZhY2UuaCIKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKIAotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCkBAIC0zNCwxNSArMzQsMTUgQEAKICNp
bmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKICNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NTm9kZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Ob2RlUHJpdmF0ZS5o
IgotI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
d2Via2l0L1dlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0
L1dlYktpdERPTVRlc3RPYmouaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGVzdE9ialBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRkZWZpbmVzLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xv
YmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRtYXJzaGFsLmgiCi0KLSNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNzAsMTQgKzcwLDExIEBAIFdlYktpdERPTVRlc3RJbnRl
cmZhY2UqIHdyYXBUZXN0SW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVPYmpl
Y3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CiAKLSAgICAv
KiBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVj
YXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKLSAgICAgKiBpbiBhIEMtYWxsb2NhdGVk
IEdPYmplY3Qgc3RydWN0dXJlLiAgU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZQotICAg
ICAqIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgICovCisgICAgLy8gV2UgY2FsbCByZWYoKSByYXRo
ZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUg
YSBDKysgb2JqZWN0CisgICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4g
U2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgogICAgIGNv
cmVPYmplY3QtPnJlZigpOwogCi0gICAgcmV0dXJuICBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNF
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JlLW9iamVjdCIsIGNvcmVP
YmplY3QsIE5VTEwpKTsKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFLCAiY29yZS1vYmplY3QiLCBj
b3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtMTAyLDcx
ICs5OSw2NyBAQCBlbnVtIHsKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMikKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbV9vYmplY3QgPSBXRUJL
SVRfRE9NX09CSkVDVChvYmplY3QpOworICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0g
V0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKICAgICAKLSAgICBpZiAoZG9tX29iamVjdC0+Y29y
ZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEludGVyZmFjZSAqPihkb21fb2JqZWN0LT5jb3JlT2Jq
ZWN0KTsKKyAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7CisgICAgICAgIFdlYkNvcmU6
OlRlc3RJbnRlcmZhY2UqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0SW50
ZXJmYWNlKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKIAogICAgICAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7CiAgICAgICAgIGNvcmVPYmplY3QtPmRlcmVm
KCk7CiAKLSAgICAgICAgZG9tX29iamVjdC0+Y29yZU9iamVjdCA9IE5VTEw7CisgICAgICAgIGRv
bU9iamVjdC0+Y29yZU9iamVjdCA9IDA7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fdGVzdF9pbnRlcmZhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9N
X1RFU1RfSU5URVJGQUNFKG9iamVjdCk7CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29y
ZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAg
c3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCi0gICAgY2FzZSBQUk9QX1NVUFBMRU1FTlRBTF9TVFIyOgotICAgIHsKKyAg
ICBjYXNlIFBST1BfU1VQUExFTUVOVEFMX1NUUjI6IHsKICAgICAgICAgV2ViQ29yZTo6VGVzdFN1
cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihjb3JlU2VsZiwgV1RGOjpTdHJpbmc6OmZy
b21VVEY4KGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAq
LwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CiAKIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwogICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRf
RE9NX1RFU1RfSU5URVJGQUNFKG9iamVjdCk7CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSog
Y29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7Cisg
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCi0gICAgY2FzZSBQUk9QX1NVUFBMRU1FTlRBTF9TVFIxOgotICAgIHsK
KyAgICBjYXNlIFBST1BfU1VQUExFTUVOVEFMX1NUUjE6IHsKICAgICAgICAgZ192YWx1ZV90YWtl
X3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpUZXN0U3VwcGxlbWVu
dGFsOjpzdXBwbGVtZW50YWxTdHIxKGNvcmVTZWxmKSkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICov
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgY2Fz
ZSBQUk9QX1NVUFBMRU1FTlRBTF9TVFIyOgotICAgIHsKKyAgICBjYXNlIFBST1BfU1VQUExFTUVO
VEFMX1NUUjI6IHsKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRv
VVRGOFN0cmluZyhXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKGNv
cmVTZWxmKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYgLyogRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgY2FzZSBQUk9QX1NVUFBMRU1FTlRBTF9OT0RF
OgotICAgIHsKKyAgICBjYXNlIFBST1BfU1VQUExFTUVOVEFMX05PREU6IHsKICAgICAgICAgUmVm
UHRyPFdlYkNvcmU6Ok5vZGU+IHB0ciA9IFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbE5vZGUoY29yZVNlbGYpOwogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUs
IFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYg
LyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAgICAgZGVm
YXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcF9pZCwgcHNwZWMpOworICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
QEAgLTE4MSw3ICsxNzQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9jbGFzc19pbml0KFdlYktpdERPTVRlc3RJbnRlcmZhY2VDbGFzcyogcmVx
dWVzdENsYXNzKQogewotICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZmluYWxpemU7CiAgICAgZ29iamVjdENsYXNzLT5z
ZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eTsKICAg
ICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5OwpAQCAtMjI5LDcgKzIyMiw3IEBAIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2Vfc3VwcGxlbWVudGFsX21ldGhvZDEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZikKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBnX3JldHVy
bl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoaXRl
bSk7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlv
bjExIikKQEAgLTI0MiwzOCArMjM1LDM4IEBAIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3Vw
cGxlbWVudGFsX21ldGhvZDEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZikKIH0KIAogV2Vi
S2l0RE9NVGVzdE9iaioKLXdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21l
dGhvZDIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIqIHN0cl9hcmcs
IFdlYktpdERPTVRlc3RPYmoqIG9ial9hcmcsIEdFcnJvciAqKmVycm9yKQord2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kMihXZWJLaXRET01UZXN0SW50ZXJmYWNl
KiBzZWxmLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcsIEdF
cnJvcioqIGVycm9yKQogewogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyX2FyZywgMCk7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqX2FyZywgMCk7Ci0gICAgV1RGOjpTdHJpbmcg
Y29udmVydGVkX3N0cl9hcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyX2FyZyk7Ci0gICAg
V2ViQ29yZTo6VGVzdE9iaiAqIGNvbnZlcnRlZF9vYmpfYXJnID0gTlVMTDsKLSAgICBpZiAob2Jq
X2FyZyAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF9vYmpfYXJnID0gV2ViS2l0Ojpjb3Jl
KG9ial9hcmcpOwotICAgICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRfb2JqX2Fy
ZywgMCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJBcmcsIDApOworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKG9iakFyZywgMCk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJn
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiog
Y29udmVydGVkT2JqQXJnID0gMDsKKyAgICBpZiAob2JqQXJnKSB7CisgICAgICAgIGNvbnZlcnRl
ZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOworICAgICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb252ZXJ0ZWRPYmpBcmcsIDApOwogICAgIH0KICAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVzID0gV1RG
OjpnZXRQdHIoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihp
dGVtLCBjb252ZXJ0ZWRfc3RyX2FyZywgY29udmVydGVkX29ial9hcmcsIGVjKSk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihXZWJDb3Jl
OjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGl0ZW0sIGNvbnZlcnRlZFN0
ckFyZywgY29udmVydGVkT2JqQXJnLCBlYykpOwogICAgIGlmIChlYykgewogICAgICAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAgZ19zZXRf
ZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBl
Y2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwogICAgIH0KLSAgICBXZWJLaXRET01UZXN0T2JqKiBy
ZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJL
aXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJDb25kaXRpb24xMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiQ29uZGl0aW9uMTIiKQotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAwOwogI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogI2Vsc2UK
ICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKLSAgICByZXR1cm4g
TlVMTDsKKyAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpICovCiB9CiAKQEAgLTI4NCw3ICsyNzcsNyBAQCB3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX3N1cHBsZW1lbnRhbF9tZXRob2Q0KFdlYktpdERPTVRlc3RJbnRlcmZhY2Uq
IHNlbGYpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxN
ZXRob2Q0KGl0ZW0pOwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJDb25kaXRpb24xMSIpCkBAIC0zMDMsMTggKzI5NiwxOCBAQCB3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2dldF9zdXBwbGVtZW50YWxfc3RyMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxm
KQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhXZWJD
b3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKGl0ZW0pKTsKLSAgICByZXR1
cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6
VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMShpdGVtKSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0
aW9uMTEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEy
IikKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KICNlbHNlCiAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0
dXJuIDA7CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24y
KSAqLwogfQogCkBAIC0zMjUsMTggKzMxOCwxOCBAQCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2dldF9zdXBwbGVtZW50YWxfc3RyMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnY2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKGl0ZW0pKTsKLSAgICByZXR1cm4gcmVz
OworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VGVzdFN1
cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMihpdGVtKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
ICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMTEi
KQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEyIikKLSAg
ICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIDA7
CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKSAqLwog
fQogCkBAIC0zNDcsMTAgKzM0MCwxMCBAQCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9z
dXBwbGVtZW50YWxfc3RyMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjbwogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkX3Zh
bHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3Vw
cGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGl0ZW0sIGNvbnZlcnRlZF92YWx1ZSk7Cisg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFs
dWUpOworICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0cjIo
aXRlbSwgY29udmVydGVkVmFsdWUpOwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJDb25kaXRpb24xMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiQ29uZGl0aW9uMTIiKQpAQCAtMzY4LDE5ICszNjEsMTkgQEAgd2Via2l0X2RvbV90ZXN0
X2ludGVyZmFjZV9nZXRfc3VwcGxlbWVudGFsX25vZGUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSog
c2VsZikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb2RlPiBnX3JlcyA9
IFdURjo6Z2V0UHRyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUo
aXRlbSkpOwotICAgIFdlYktpdERPTU5vZGUqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgp
KTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IGdvYmplY3RSZXN1
bHQgPSBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxO
b2RlKGl0ZW0pKTsKKyAgICBXZWJLaXRET01Ob2RlKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xMSIpCiAgICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMTIiKQotICAgIHJldHVybiBOVUxMOworICAg
IHJldHVybiAwOwogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKSAqLwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRp
b24yIikKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCiB9CiAKQEAgLTM5MSwxNCArMzg0
LDE0IEBAIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N1cHBsZW1lbnRhbF9ub2RlKFdl
YktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYsIFdlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdElu
dGVyZmFjZSAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdElu
dGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWls
KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpOb2RlICogY29udmVydGVkX3ZhbHVlID0gTlVMTDsKLSAg
ICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBXZWJLaXQ6
OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF92YWx1ZSk7
CisgICAgV2ViQ29yZTo6Tm9kZSogY29udmVydGVkVmFsdWUgPSAwOworICAgIGlmICh2YWx1ZSkg
eworICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAg
IGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwogICAgIH0KLSAgICBXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGl0ZW0sIGNvbnZlcnRlZF92YWx1
ZSk7CisgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShp
dGVtLCBjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIkNvbmRpdGlvbjExIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJDb25kaXRpb24xMiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmgKaW5kZXggMGI2ODg5MjBlZjQ0YWVkODE5OGYyOGU5ODA2MzA0ZmE3MjhjOWVlYi4uYzU0NjFl
OTA3NTI2ZTJkOTcwNWNiZjBlMzNiY2ZjMDg2NmEzMjA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RJbnRlcmZhY2UuaApAQCAtMjEsMTEgKzIxLDEwIEBACiAjaWZuZGVmIFdlYktp
dERPTVRlc3RJbnRlcmZhY2VfaAogI2RlZmluZSBXZWJLaXRET01UZXN0SW50ZXJmYWNlX2gKIAot
I2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdGRlZmluZXMuaD4KLSNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmgi
Ci0KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgogCiBHX0JFR0lOX0RFQ0xT
CiAjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX0lOVEVSRkFDRSAgICAgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF90eXBlKCkpCkBAIC01OSwxNSArNTgsMTUgQEAgd2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kMShXZWJLaXRET01UZXN0
SW50ZXJmYWNlKiBzZWxmKTsKIC8qKgogICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBw
bGVtZW50YWxfbWV0aG9kMjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCi0g
KiBAc3RyX2FyZzogQSAjZ2NoYXIKLSAqIEBvYmpfYXJnOiBBICNXZWJLaXRET01UZXN0T2JqCisg
KiBAc3RyQXJnOiBBICNnY2hhcgorICogQG9iakFyZzogQSAjV2ViS2l0RE9NVGVzdE9iagogICog
QGVycm9yOiAjR0Vycm9yCiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgogICoKICoq
LwogV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgotd2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9zdXBwbGVtZW50YWxfbWV0aG9kMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjb25z
dCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqX2FyZywgR0Vycm9yICoqZXJy
b3IpOword2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kMihXZWJL
aXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01U
ZXN0T2JqKiBvYmpBcmcsIEdFcnJvcioqIGVycm9yKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX3N1cHBsZW1lbnRhbF9tZXRob2Q0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFj
ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlLmgKaW5kZXggMTAyMGUwMmU3ZmQ0YjQzYmE2
YzM0MzUzODM1Y2Y5MjNlMDljYjk5Mi4uMTJhNmM3N2NmY2U5NTViOWVkY2FlN2QwZDYyNjQ0NTJi
Y2M3NGQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
UHJpdmF0ZS5oCkBAIC0xOCwyNyArMTgsMjAgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KICovCiAKLSNpZm5kZWYgV0VCX0tJVF9ET01fVEVTVF9JTlRFUkZBQ0VfUFJJVkFURV9I
Ci0jZGVmaW5lIFdFQl9LSVRfRE9NX1RFU1RfSU5URVJGQUNFX1BSSVZBVEVfSAorI2lmbmRlZiBX
ZWJLaXRET01UZXN0SW50ZXJmYWNlUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RJbnRl
cmZhY2VQcml2YXRlX2gKIAorI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNs
dWRlICJUZXN0SW50ZXJmYWNlLmgiCi0KICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIFdlYktpdERPTVRlc3RJbnRl
cmZhY2UgKgotICAgIHdyYXBUZXN0SW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UgKmNv
cmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqCi0gICAgY29yZShXZWJL
aXRET01UZXN0SW50ZXJmYWNlICpyZXF1ZXN0KTsKLQotICAgIFdlYktpdERPTVRlc3RJbnRlcmZh
Y2UqCi0gICAga2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIG5vZGUpOwotCitXZWJLaXRET01U
ZXN0SW50ZXJmYWNlKiB3cmFwVGVzdEludGVyZmFjZShXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKik7
CitXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHJl
cXVlc3QpOworV2ViS2l0RE9NVGVzdEludGVyZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZh
Y2UqIG5vZGUpOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvKiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCiAKLSNlbmRpZiAvKiBXRUJfS0lUX0RP
TV9URVNUX0lOVEVSRkFDRV9QUklWQVRFX0ggKi8KKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0SW50
ZXJmYWNlUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggYjUxNjg2M2M2MTNjMTk0ODFl
MWQ1YzU1OTAxZGFmODU2NjVmMGExNC4uYjVjYmRmZmI0NmMyNjYyNzA3ZGY5ZjViYTBjZWIyMmJk
OGNmOWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTgsMjIgKzE4LDIyIEBACiAgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oIgogCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJ3ZWJr
aXQvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJ3ZWJr
aXQvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlLmgiCiAjaW5jbHVk
ZSAid2Via2l0ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAj
aW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTYxLDE0ICs2MSwxMSBAQCBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciogd3JhcFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFdlYkNvcmU6OlRlcwog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwogCi0gICAgLyogV2Ug
Y2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ug
d2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgICogaW4gYSBDLWFsbG9jYXRlZCBHT2Jq
ZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUKLSAgICAgKiBt
YXRjaGluZyBkZXJlZigpLgotICAgICAqLworICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRo
YW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysr
IG9iamVjdAorICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0
aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KICAgICBjb3JlT2Jq
ZWN0LT5yZWYoKTsKIAotICAgIHJldHVybiAgV0VCS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJ
U1RfTElTVEVORVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX01FRElBX1FVRVJZ
X0xJU1RfTElTVEVORVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKKyAgICByZXR1cm4gV0VC
S0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVIoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVIsICJjb3JlLW9iamVjdCIs
IGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC04Miwz
OCArNzksMzggQEAgZW51bSB7CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVl
cnlfbGlzdF9saXN0ZW5lcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAKLSAgICBXZWJL
aXRET01PYmplY3QqIGRvbV9vYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOworICAg
IFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsK
ICAgICAKLSAgICBpZiAoZG9tX29iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3Jl
OjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyICo+KGRvbV9vYmplY3QtPmNvcmVPYmpl
Y3QpOworICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKKyAgICAgICAgV2ViQ29yZTo6
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7
CiAKICAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwog
ICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOwogCi0gICAgICAgIGRvbV9vYmplY3QtPmNvcmVP
YmplY3QgPSBOVUxMOworICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwogICAgIH0K
IAogCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3Rf
bGlzdGVuZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAotc3RhdGljIHZv
aWQgd2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlf
bGlzdF9saXN0ZW5lcl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7
CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlk
LCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9nZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVy
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBzd2l0Y2ggKHByb3Bl
cnR5SWQpIHsKICAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQpAQCAtMTI4LDcgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3Rl
bmVyX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDbGFzcyog
cmVxdWVzdENsYXNzKQogewotICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2ZpbmFsaXplOwog
ICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X21lZGlhX3F1
ZXJ5X2xpc3RfbGlzdGVuZXJfc2V0X3Byb3BlcnR5OwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3By
b3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfZ2V0X3By
b3BlcnR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggNjEyNDM5YjUyYmEzNzhlODcyOTJjOGU1MzhlMjM2OWUw
ZmUzNWE1Yy4uOTA2MTEyNzRmMDJlYzBjNGZjMzUxNDViMmE3Y2IxYjhlNTY2MGRlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oCkBAIC0yMSwxMSArMjEsMTAgQEAKICNpZm5kZWYgV2ViS2l0RE9NVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJfaAogI2RlZmluZSBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcl9oCiAKLSNpbmNsdWRlICJ3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oIgogI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+Ci0jaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TU9iamVjdC5oIgotCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaD4KIAogR19C
RUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNU
X0xJU1RFTkVSICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xp
c3RlbmVyX2dldF90eXBlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZS5oCmluZGV4IGFjMjcwODhl
ODM0ZGE4Mjc5NTM2NzY5MGZhOTJmOTU3MTRjNmQ1Y2QuLjU1NjJhNGZhYTRiZDM3YmNkNDA0OTFm
OTgyMTU1MTQ1YWFlNzMwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZS5oCkBAIC0xOCwyNCAr
MTgsMTcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYg
V0VCX0tJVF9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSX1BSSVZBVEVfSAotI2Rl
ZmluZSBXRUJfS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVJfUFJJVkFURV9I
CisjaWZuZGVmIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZV9oCisj
ZGVmaW5lIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZV9oCiAKKyNp
bmNsdWRlICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgogI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgIlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCi0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAg
V2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKgotICAgIHdyYXBUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcihXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqY29y
ZU9iamVjdCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqCi0g
ICAgY29yZShXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqcmVxdWVzdCk7Ci0K
LSAgICBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcioKLSAgICBraXQoV2ViQ29y
ZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIG5vZGUpOwotCitXZWJLaXRET01UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciogd3JhcFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFdlYkNv
cmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKik7CitXZWJDb3JlOjpUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciogY29yZShXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciog
cmVxdWVzdCk7CitXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcioga2l0KFdlYkNv
cmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBub2RlKTsKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0jZW5kaWYgLyogV0VCX0tJVF9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RF
TkVSX1BSSVZBVEVfSCAqLworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWZkNTI4Zjk0OWJlN2YxOTAxMjNlMTMzMTk3YTJh
Y2M0N2IzOWU1MS4uYmJhN2I3M2YzMDE4ZDI2NWRmNDgxODZiNmZiODU0NmRiZmZkMzJlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cApAQCAtMTgsMjIgKzE4LDIyIEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAq
LwogCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgogCi0jaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlICJET01PYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCIKICNpbmNsdWRlICJUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IldlYktpdERPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJp
bmcuaCIKLSNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3JQcml2YXRlLmgi
CiAjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTYxLDE0ICs2MSwxMSBAQCBXZWJLaXRET01UZXN0TmFt
ZWRDb25zdHJ1Y3Rvciogd3JhcFRlc3ROYW1lZENvbnN0cnVjdG9yKFdlYkNvcmU6OlRlc3ROYW1l
ZENvbnN0cgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwogCi0g
ICAgLyogV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVy
IGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgICogaW4gYSBDLWFsbG9j
YXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUK
LSAgICAgKiBtYXRjaGluZyBkZXJlZigpLgotICAgICAqLworICAgIC8vIFdlIGNhbGwgcmVmKCkg
cmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0
b3JlIGEgQysrIG9iamVjdAorICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1
cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KICAg
ICBjb3JlT2JqZWN0LT5yZWYoKTsKIAotICAgIHJldHVybiAgV0VCS0lUX0RPTV9URVNUX05BTUVE
X0NPTlNUUlVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9OQU1FRF9DT05T
VFJVQ1RPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworICAgIHJldHVybiBXRUJLSVRfRE9N
X1RFU1RfTkFNRURfQ09OU1RSVUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNU
X05BTUVEX0NPTlNUUlVDVE9SLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtODIsMzggKzc5LDM4IEBAIGVudW0gewogc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKIHsKIAotICAgIFdlYktpdERPTU9iamVjdCogZG9tX29iamVjdCA9IFdFQktJ
VF9ET01fT0JKRUNUKG9iamVjdCk7CisgICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBX
RUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwogICAgIAotICAgIGlmIChkb21fb2JqZWN0LT5jb3Jl
T2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKiBjb3JlT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3IgKj4oZG9tX29i
amVjdC0+Y29yZU9iamVjdCk7CisgICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgeworICAg
ICAgICBXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3RvciogY29yZU9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0
KTsKIAogICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7
CiAgICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CiAKLSAgICAgICAgZG9tX29iamVjdC0+Y29y
ZU9iamVjdCA9IE5VTEw7CisgICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7CiAgICAg
fQogCiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3RydWN0
b3JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBzd2l0Y2ggKHByb3BlcnR5
SWQpIHsKICAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogfQogCiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9uYW1lZF9jb25z
dHJ1Y3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9uYW1lZF9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7
CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlk
LCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTEyOCw3ICsxMjUsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfY29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29u
c3RydWN0b3JfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvckNsYXNzKiBy
ZXF1ZXN0Q2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzICpnb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2ZpbmFsaXplOwogICAgIGdvYmpl
Y3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9y
X3NldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9k
b21fdGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCBiMGY5YzI3OGYwMDQ4
YzI0OTA3NjU3YmEwN2E1MTAyMGRjNTM3MGFlLi5jYzA1YmVmNjE2YTdlMDFkOTFlNmNhY2I2YmZi
OTY4MGVkZTMwODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1l
ZENvbnN0cnVjdG9yLmgKQEAgLTIxLDExICsyMSwxMCBAQAogI2lmbmRlZiBXZWJLaXRET01UZXN0
TmFtZWRDb25zdHJ1Y3Rvcl9oCiAjZGVmaW5lIFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9y
X2gKIAotI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgiCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KLSNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NT2Jq
ZWN0LmgiCi0KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgogCiBHX0JFR0lO
X0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX05BTUVEX0NPTlNUUlVDVE9SICAg
ICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9nZXRfdHlwZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rv
clByaXZhdGUuaAppbmRleCA1YmFkNzBiMDFkYzEyZTI3NWMzMDQ4MzQwN2VlYmVjYzMzZTE3OTBi
Li5kYzczNDRkZjQ1MDhmNmYyNGQwNzYxMmNhNjZmODIyYzhkMjEyMTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
TmFtZWRDb25zdHJ1Y3RvclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvclByaXZhdGUu
aApAQCAtMTgsMjQgKzE4LDE3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAq
LwogCi0jaWZuZGVmIFdFQl9LSVRfRE9NX1RFU1RfTkFNRURfQ09OU1RSVUNUT1JfUFJJVkFURV9I
Ci0jZGVmaW5lIFdFQl9LSVRfRE9NX1RFU1RfTkFNRURfQ09OU1RSVUNUT1JfUFJJVkFURV9ICisj
aWZuZGVmIFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZV9oCisjZGVmaW5lIFdl
YktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgIlRlc3ROYW1lZENvbnN0cnVjdG9yLmgi
Ci0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0
b3IgKgotICAgIHdyYXBUZXN0TmFtZWRDb25zdHJ1Y3RvcihXZWJDb3JlOjpUZXN0TmFtZWRDb25z
dHJ1Y3RvciAqY29yZU9iamVjdCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciAqCi0gICAgY29yZShXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvciAqcmVxdWVzdCk7Ci0K
LSAgICBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvcioKLSAgICBraXQoV2ViQ29yZTo6VGVz
dE5hbWVkQ29uc3RydWN0b3IqIG5vZGUpOwotCitXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rv
ciogd3JhcFRlc3ROYW1lZENvbnN0cnVjdG9yKFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9y
Kik7CitXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3RvciogY29yZShXZWJLaXRET01UZXN0TmFt
ZWRDb25zdHJ1Y3RvciogcmVxdWVzdCk7CitXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvciog
a2l0KFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKiBub2RlKTsKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLyogV0VCX0tJVF9ET01fVEVTVF9OQU1FRF9DT05TVFJVQ1RPUl9Q
UklWQVRFX0ggKi8KKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvclByaXZh
dGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCBjYTQyZDM4ZDBh
MTY5ZGUwMjYxMzlhZDQyOGExNjhjOWU4OTQxOTVkLi4xZGM5NGZmMmRkOTJmOTkwZGRmYzgzNTUz
YzAzMWI4Nzc3NTg0ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAt
MTgsMTEgKzE4LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YktpdERPTVRlc3RPYmouaCIKIAotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTQzLDcgKzQxLDYgQEAKICNp
bmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NU1ZHUG9pbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0L1dlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWVQcml2YXRlLmgiCi0jaW5jbHVkZSAid2Via2l0
L1dlYktpdERPTVRlc3RPYmouaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGVzdE9ialBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NYS5oIgogI2luY2x1ZGUgIndlYmtp
dC9XZWJLaXRET01hUHJpdmF0ZS5oIgpAQCAtNjAsNiArNTcsOSBAQAogI2luY2x1ZGUgIndlYmtp
dGRlZmluZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdG1hcnNoYWwuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC04NywxNCArODcsMTEgQEAgV2ViS2l0RE9NVGVzdE9iaiogd3JhcFRlc3RPYmooV2Vi
Q29yZTo6VGVzdE9iaiogY29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChj
b3JlT2JqZWN0LCAwKTsKIAotICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcg
YSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAot
ICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFs
aXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICAgKi8KKyAg
ICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIg
YmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAvLyBpbiBhIEMtYWxsb2Nh
dGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1h
dGNoaW5nIGRlcmVmKCkuCiAgICAgY29yZU9iamVjdC0+cmVmKCk7CiAKLSAgICByZXR1cm4gIFdF
QktJVF9ET01fVEVTVF9PQkooZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfT0JK
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosICJjb3JlLW9iamVjdCIsIGNv
cmVPYmplY3QsIE5VTEwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC0xNTgsNDE2
ICsxNTUsMzQ4IEBAIGVudW0gewogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9maW5h
bGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbV9vYmpl
Y3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOworICAgIFdlYktpdERPTU9iamVjdCogZG9t
T2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKICAgICAKLSAgICBpZiAoZG9tX29i
amVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb3JlT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaiAqPihkb21fb2JqZWN0LT5jb3JlT2JqZWN0
KTsKKyAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7CisgICAgICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T2JqKj4oZG9tT2Jq
ZWN0LT5jb3JlT2JqZWN0KTsKIAogICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQoY29yZU9iamVjdCk7CiAgICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CiAKLSAgICAgICAg
ZG9tX29iamVjdC0+Y29yZU9iamVjdCA9IE5VTEw7CisgICAgICAgIGRvbU9iamVjdC0+Y29yZU9i
amVjdCA9IDA7CiAgICAgfQogCiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBXZWJLaXRET01U
ZXN0T2JqKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX09CSihvYmplY3QpOwogICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIHN3aXRjaCAocHJv
cF9pZCkgewotICAgIGNhc2UgUFJPUF9VTlNJR05FRF9TSE9SVF9BVFRSOgotICAgIHsKKyAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfVU5TSUdORURfU0hPUlRfQVRUUjog
ewogICAgICAgICBjb3JlU2VsZi0+c2V0VW5zaWduZWRTaG9ydEF0dHIoKGdfdmFsdWVfZ2V0X3Vp
bnQodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfSU5UX0FU
VFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9JTlRfQVRUUjogewogICAgICAgICBjb3JlU2VsZi0+
c2V0SW50QXR0cigoZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgUFJPUF9VTlNJR05FRF9MT05HX0xPTkdfQVRUUjoKLSAgICB7CisgICAg
Y2FzZSBQUk9QX1VOU0lHTkVEX0xPTkdfTE9OR19BVFRSOiB7CiAgICAgICAgIGNvcmVTZWxmLT5z
ZXRVbnNpZ25lZExvbmdMb25nQXR0cigoZ192YWx1ZV9nZXRfdWludDY0KHZhbHVlKSkpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1NUUklOR19BVFRSOgotICAgIHsKKyAg
ICBjYXNlIFBST1BfU1RSSU5HX0FUVFI6IHsKICAgICAgICAgY29yZVNlbGYtPnNldFN0cmluZ0F0
dHIoV1RGOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9DUkVBVEU6Ci0gICAgeworICAgIGNh
c2UgUFJPUF9DUkVBVEU6IHsKICAgICAgICAgY29yZVNlbGYtPnNldENyZWF0ZSgoZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJP
UF9SRUZMRUNURURfU1RSSU5HX0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURf
U1RSSU5HX0FUVFI6IHsKICAgICAgICAgY29yZVNlbGYtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgo
Z192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBQUk9QX1JFRkxFQ1RFRF9JTlRFR1JBTF9BVFRSOgotICAgIHsKKyAgICBjYXNlIFBST1Bf
UkVGTEVDVEVEX0lOVEVHUkFMX0FUVFI6IHsKICAgICAgICAgY29yZVNlbGYtPnNldEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwg
KGdfdmFsdWVfZ2V0X2xvbmcodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBj
YXNlIFBST1BfUkVGTEVDVEVEX1VOU0lHTkVEX0lOVEVHUkFMX0FUVFI6Ci0gICAgeworICAgIGNh
c2UgUFJPUF9SRUZMRUNURURfVU5TSUdORURfSU5URUdSQUxfQVRUUjogewogICAgICAgICBjb3Jl
U2VsZi0+c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0ciwgKGdfdmFsdWVfZ2V0X3Vsb25nKHZhbHVl
KSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFRkxFQ1RFRF9CT09M
RUFOX0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfQk9PTEVBTl9BVFRSOiB7
CiAgICAgICAgIGNvcmVTZWxmLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyLCAoZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9SRUZMRUNURURfVVJMX0FU
VFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfVVJMX0FUVFI6IHsKICAgICAgICAg
Y29yZVNlbGYtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0
dHJBdHRyLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSkp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFRkxFQ1RFRF9TVFJJTkdf
QVRUUjoKLSAgICB7CisgICAgY2FzZSBQUk9QX1JFRkxFQ1RFRF9TVFJJTkdfQVRUUjogewogICAg
ICAgICBjb3JlU2VsZi0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29u
dGVudFN0cmluZ0F0dHJBdHRyLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1ZV9nZXRfc3Ry
aW5nKHZhbHVlKSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFRkxF
Q1RFRF9DVVNUT01fSU5URUdSQUxfQVRUUjoKLSAgICB7CisgICAgY2FzZSBQUk9QX1JFRkxFQ1RF
RF9DVVNUT01fSU5URUdSQUxfQVRUUjogewogICAgICAgICBjb3JlU2VsZi0+c2V0SW50ZWdyYWxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0
ciwgKGdfdmFsdWVfZ2V0X2xvbmcodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIFBST1BfUkVGTEVDVEVEX0NVU1RPTV9CT09MRUFOX0FUVFI6Ci0gICAgeworICAgIGNh
c2UgUFJPUF9SRUZMRUNURURfQ1VTVE9NX0JPT0xFQU5fQVRUUjogewogICAgICAgICBjb3JlU2Vs
Zi0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRC
b29sZWFuQXR0ckF0dHIsIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFRkxFQ1RFRF9DVVNUT01fVVJMX0FUVFI6Ci0g
ICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfQ1VTVE9NX1VSTF9BVFRSOiB7CiAgICAgICAg
IGNvcmVTZWxmLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50
VVJMQXR0ckF0dHIsIFdURjo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJpbmcodmFs
dWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfQVRUUl9XSVRIX0dF
VFRFUl9FWENFUFRJT046Ci0gICAgeworICAgIGNhc2UgUFJPUF9BVFRSX1dJVEhfR0VUVEVSX0VY
Q0VQVElPTjogewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAg
ICAgY29yZVNlbGYtPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKChnX3ZhbHVlX2dldF9sb25n
KHZhbHVlKSksIGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9BVFRS
X1dJVEhfU0VUVEVSX0VYQ0VQVElPTjoKLSAgICB7CisgICAgY2FzZSBQUk9QX0FUVFJfV0lUSF9T
RVRURVJfRVhDRVBUSU9OOiB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgICAgICBjb3JlU2VsZi0+c2V0QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKGdfdmFsdWVf
Z2V0X2xvbmcodmFsdWUpKSwgZWMpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
Uk9QX1NUUklOR19BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTjoKLSAgICB7CisgICAgY2FzZSBQ
Uk9QX1NUUklOR19BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTjogewogICAgICAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgY29yZVNlbGYtPnNldFN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKFdURjo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKSwgZWMpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1NU
UklOR19BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjoKLSAgICB7CisgICAgY2FzZSBQUk9QX1NU
UklOR19BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjogewogICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgY29yZVNlbGYtPnNldFN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKFdURjo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJpbmcodmFs
dWUpKSwgZWMpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1dJVEhfU0NS
SVBUX1NUQVRFX0FUVFJJQlVURToKLSAgICB7CisgICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX1NU
QVRFX0FUVFJJQlVURTogewogICAgICAgICBjb3JlU2VsZi0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlKChnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi0gICAgY2FzZSBQUk9QX0NPTkRJVElPTkFMX0FUVFIx
OgotICAgIHsKKyAgICBjYXNlIFBST1BfQ09ORElUSU9OQUxfQVRUUjE6IHsKICAgICAgICAgY29y
ZVNlbGYtPnNldENvbmRpdGlvbmFsQXR0cjEoKGdfdmFsdWVfZ2V0X2xvbmcodmFsdWUpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgKi8KICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgY2FzZSBQUk9Q
X0NPTkRJVElPTkFMX0FUVFIyOgotICAgIHsKKyAgICBjYXNlIFBST1BfQ09ORElUSU9OQUxfQVRU
UjI6IHsKICAgICAgICAgY29yZVNlbGYtPnNldENvbmRpdGlvbmFsQXR0cjIoKGdfdmFsdWVfZ2V0
X2xvbmcodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbmRpZiAvKiBFTkFCTEUo
Q29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpICovCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIGNhc2UgUFJPUF9DT05ESVRJT05BTF9BVFRS
MzoKLSAgICB7CisgICAgY2FzZSBQUk9QX0NPTkRJVElPTkFMX0FUVFIzOiB7CiAgICAgICAgIGNv
cmVTZWxmLT5zZXRDb25kaXRpb25hbEF0dHIzKChnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVO
QUJMRShDb25kaXRpb24yKSAqLwotICAgIGNhc2UgUFJPUF9TVFJJQ1RfRkxPQVQ6Ci0gICAgewor
ICAgIGNhc2UgUFJPUF9TVFJJQ1RfRkxPQVQ6IHsKICAgICAgICAgY29yZVNlbGYtPnNldFN0cmlj
dEZsb2F0KChnX3ZhbHVlX2dldF9mbG9hdCh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgUFJPUF9JRDoKLSAgICB7CisgICAgY2FzZSBQUk9QX0lEOiB7CiAgICAgICAg
IGNvcmVTZWxmLT5zZXRJZCgoZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CiAKIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIFdlYktpdERPTVRlc3RPYmoqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1Rf
T0JKKG9iamVjdCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29yZVNlbGYgPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1JFQURfT05M
WV9JTlRfQVRUUjoKLSAgICB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQ
Uk9QX1JFQURfT05MWV9JTlRfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVl
LCBjb3JlU2VsZi0+cmVhZE9ubHlJbnRBdHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgY2FzZSBQUk9QX1JFQURfT05MWV9TVFJJTkdfQVRUUjoKLSAgICB7CisgICAgY2FzZSBQUk9Q
X1JFQURfT05MWV9TVFJJTkdfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZh
bHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5yZWFkT25seVN0cmluZ0F0dHIoKSkp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFQURfT05MWV9URVNUX09C
Sl9BVFRSOgotICAgIHsKKyAgICBjYXNlIFBST1BfUkVBRF9PTkxZX1RFU1RfT0JKX0FUVFI6IHsK
ICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNvcmVTZWxmLT5yZWFkT25s
eVRlc3RPYmpBdHRyKCk7CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0
OjpraXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1Bf
U0hPUlRfQVRUUjoKLSAgICB7CisgICAgY2FzZSBQUk9QX1NIT1JUX0FUVFI6IHsKICAgICAgICAg
Z192YWx1ZV9zZXRfaW50KHZhbHVlLCBjb3JlU2VsZi0+c2hvcnRBdHRyKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFI6Ci0gICAgewor
ICAgIGNhc2UgUFJPUF9VTlNJR05FRF9TSE9SVF9BVFRSOiB7CiAgICAgICAgIGdfdmFsdWVfc2V0
X3VpbnQodmFsdWUsIGNvcmVTZWxmLT51bnNpZ25lZFNob3J0QXR0cigpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9JTlRfQVRUUjoKLSAgICB7CisgICAgY2FzZSBQUk9Q
X0lOVF9BVFRSOiB7CiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxmLT5p
bnRBdHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX0xPTkdfTE9O
R19BVFRSOgotICAgIHsKKyAgICBjYXNlIFBST1BfTE9OR19MT05HX0FUVFI6IHsKICAgICAgICAg
Z192YWx1ZV9zZXRfaW50NjQodmFsdWUsIGNvcmVTZWxmLT5sb25nTG9uZ0F0dHIoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfVU5TSUdORURfTE9OR19MT05HX0FUVFI6
Ci0gICAgeworICAgIGNhc2UgUFJPUF9VTlNJR05FRF9MT05HX0xPTkdfQVRUUjogewogICAgICAg
ICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIGNvcmVTZWxmLT51bnNpZ25lZExvbmdMb25nQXR0
cigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9TVFJJTkdfQVRUUjoK
LSAgICB7CisgICAgY2FzZSBQUk9QX1NUUklOR19BVFRSOiB7CiAgICAgICAgIGdfdmFsdWVfdGFr
ZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPnN0cmluZ0F0dHIo
KSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1RFU1RfT0JKX0FUVFI6
Ci0gICAgeworICAgIGNhc2UgUFJPUF9URVNUX09CSl9BVFRSOiB7CiAgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXN0T2JqPiBwdHIgPSBjb3JlU2VsZi0+dGVzdE9iakF0dHIoKTsKICAgICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9YTUxfT0JKX0FUVFI6Ci0gICAgeworICAg
IGNhc2UgUFJPUF9YTUxfT0JKX0FUVFI6IHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RP
Ymo+IHB0ciA9IGNvcmVTZWxmLT54bWxPYmpBdHRyKCk7CiAgICAgICAgIGdfdmFsdWVfc2V0X29i
amVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIFBST1BfQ1JFQVRFOgotICAgIHsKKyAgICBjYXNlIFBST1BfQ1JFQVRFOiB7
CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIGNvcmVTZWxmLT5pc0NyZWF0ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9SRUZMRUNURURfU1RSSU5H
X0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfU1RSSU5HX0FUVFI6IHsKICAg
ICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3Jl
U2VsZi0+Z2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0
ckF0dHIpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfUkVGTEVDVEVE
X0lOVEVHUkFMX0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfSU5URUdSQUxf
QVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+Z2V0SW50
ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJB
dHRyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfUkVGTEVDVEVEX1VO
U0lHTkVEX0lOVEVHUkFMX0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfVU5T
SUdORURfSU5URUdSQUxfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwg
Y29yZVNlbGYtPmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgUFJPUF9SRUZMRUNURURfQk9PTEVBTl9BVFRSOgotICAgIHsKKyAgICBj
YXNlIFBST1BfUkVGTEVDVEVEX0JPT0xFQU5fQVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCBjb3JlU2VsZi0+aGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBj
YXNlIFBST1BfUkVGTEVDVEVEX1VSTF9BVFRSOgotICAgIHsKKyAgICBjYXNlIFBST1BfUkVGTEVD
VEVEX1VSTF9BVFRSOiB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZl
cnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBQUk9QX1JFRkxFQ1RFRF9TVFJJTkdfQVRUUjoKLSAgICB7CisgICAgY2FzZSBQUk9QX1JF
RkxFQ1RFRF9TVFJJTkdfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVl
LCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRN
TE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBjYXNlIFBST1BfUkVGTEVDVEVEX0NVU1RPTV9JTlRFR1JBTF9BVFRSOgotICAg
IHsKKyAgICBjYXNlIFBST1BfUkVGTEVDVEVEX0NVU1RPTV9JTlRFR1JBTF9BVFRSOiB7CiAgICAg
ICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxmLT5nZXRJbnRlZ3JhbEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfUkVGTEVDVEVEX0NVU1RPTV9CT09M
RUFOX0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfQ1VTVE9NX0JPT0xFQU5f
QVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBjb3JlU2VsZi0+aGFz
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0
cikpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFRkxFQ1RFRF9DVVNU
T01fVVJMX0FUVFI6Ci0gICAgeworICAgIGNhc2UgUFJPUF9SRUZMRUNURURfQ1VTVE9NX1VSTF9B
VFRSOiB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhT
dHJpbmcoY29yZVNlbGYtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3Rv
bUNvbnRlbnRVUkxBdHRyQXR0cikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
UFJPUF9BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTjoKLSAgICB7CisgICAgY2FzZSBQUk9QX0FU
VFJfV0lUSF9HRVRURVJfRVhDRVBUSU9OOiB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+YXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNh
c2UgUFJPUF9BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjoKLSAgICB7CisgICAgY2FzZSBQUk9Q
X0FUVFJfV0lUSF9TRVRURVJfRVhDRVBUSU9OOiB7CiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmco
dmFsdWUsIGNvcmVTZWxmLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9TVFJJTkdfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJ
T046Ci0gICAgeworICAgIGNhc2UgUFJPUF9TVFJJTkdfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJ
T046IHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPnN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSkpOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBQUk9QX1NUUklOR19BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjoKLSAgICB7
CisgICAgY2FzZSBQUk9QX1NUUklOR19BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjogewogICAg
ICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVT
ZWxmLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBjYXNlIFBST1BfV0lUSF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFOgotICAgIHsK
KyAgICBjYXNlIFBST1BfV0lUSF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFOiB7CiAgICAgICAgIGdf
dmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxmLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfV0lUSF9TQ1JJUFRfRVhF
Q1VUSU9OX0NPTlRFWFRfQVRUUklCVVRFOgotICAgIHsKKyAgICBjYXNlIFBST1BfV0lUSF9TQ1JJ
UFRfRVhFQ1VUSU9OX0NPTlRFWFRfQVRUUklCVVRFOiB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0T2JqPiBwdHIgPSBjb3JlU2VsZi0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUoKTsKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChw
dHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9XSVRIX1ND
UklQVF9TVEFURV9BVFRSSUJVVEVfUkFJU0VTOgotICAgIHsKKyAgICBjYXNlIFBST1BfV0lUSF9T
Q1JJUFRfU1RBVEVfQVRUUklCVVRFX1JBSVNFUzogewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNv
cmVTZWxmLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpOwogICAgICAgICBnX3Zh
bHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhU
X0FUVFJJQlVURV9SQUlTRVM6Ci0gICAgeworICAgIGNhc2UgUFJPUF9XSVRIX1NDUklQVF9FWEVD
VVRJT05fQ09OVEVYVF9BVFRSSUJVVEVfUkFJU0VTOiB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gcHRyID0g
Y29yZVNlbGYtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGVjKTsK
ICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9XSVRIX1NDUklQVF9FWEVD
VVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX0FUVFJJQlVURToKLSAgICB7CisgICAgY2Fz
ZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FORF9TQ1JJUFRfU1RBVEVfQVRU
UklCVVRFOiB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBwdHIgPSBjb3JlU2Vs
Zi0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpOwog
ICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNV
VElPTl9DT05URVhUX0FORF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFX1JBSVNFUzoKLSAgICB7Cisg
ICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FORF9TQ1JJUFRfU1RB
VEVfQVRUUklCVVRFX1JBSVNFUzogewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNvcmVTZWxmLT53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGVj
KTsKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0
KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9XSVRIX1NDUklQVF9F
WEVDVVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX1dJVEhfU1BBQ0VTX0FUVFJJQlVURToK
LSAgICB7CisgICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FORF9T
Q1JJUFRfU1RBVEVfV0lUSF9TUEFDRVNfQVRUUklCVVRFOiB7CiAgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpUZXN0T2JqPiBwdHIgPSBjb3JlU2VsZi0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKTsKICAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgUFJPUF9XSVRIX1NDUklQVF9BUkdVTUVOVFNfQU5EX0NBTExfU1RBQ0tf
QVRUUklCVVRFOgotICAgIHsKKyAgICBjYXNlIFBST1BfV0lUSF9TQ1JJUFRfQVJHVU1FTlRTX0FO
RF9DQUxMX1NUQUNLX0FUVFJJQlVURTogewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9i
aj4gcHRyID0gY29yZVNlbGYtPndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoKTsKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIu
Z2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2lmIEVOQUJMRShDb25kaXRpb24xKQot
ICAgIGNhc2UgUFJPUF9DT05ESVRJT05BTF9BVFRSMToKLSAgICB7CisgICAgY2FzZSBQUk9QX0NP
TkRJVElPTkFMX0FUVFIxOiB7CiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVT
ZWxmLT5jb25kaXRpb25hbEF0dHIxKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYg
LyogRU5BQkxFKENvbmRpdGlvbjEpICovCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQotICAgIGNhc2UgUFJPUF9DT05ESVRJT05BTF9BVFRSMjoKLSAgICB7Cisg
ICAgY2FzZSBQUk9QX0NPTkRJVElPTkFMX0FUVFIyOiB7CiAgICAgICAgIGdfdmFsdWVfc2V0X2xv
bmcodmFsdWUsIGNvcmVTZWxmLT5jb25kaXRpb25hbEF0dHIyKCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24y
KSAqLwogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLSAgICBj
YXNlIFBST1BfQ09ORElUSU9OQUxfQVRUUjM6Ci0gICAgeworICAgIGNhc2UgUFJPUF9DT05ESVRJ
T05BTF9BVFRSMzogewogICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+
Y29uZGl0aW9uYWxBdHRyMygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlmIC8qIEVO
QUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KLSAgICBjYXNlIFBST1Bf
Q09OVEVOVF9ET0NVTUVOVDoKLSAgICB7CisgICAgY2FzZSBQUk9QX0NPTlRFTlRfRE9DVU1FTlQ6
IHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50PiBwdHIgPSBjb3JlU2VsZi0+Y29u
dGVudERvY3VtZW50KCk7CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0
OjpraXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1Bf
TVVUQUJMRV9QT0lOVDoKLSAgICB7CisgICAgY2FzZSBQUk9QX01VVEFCTEVfUE9JTlQ6IHsKICAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlNWR1BvaW50PiBwdHIgPSBjb3JlU2VsZi0+bXV0YWJsZVBv
aW50KCk7CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRy
LmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfSU1NVVRBQkxF
X1BPSU5UOgotICAgIHsKKyAgICBjYXNlIFBST1BfSU1NVVRBQkxFX1BPSU5UOiB7CiAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTVkdQb2ludD4gcHRyID0gY29yZVNlbGYtPmltbXV0YWJsZVBvaW50
KCk7CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdl
dCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfU1RSQVdCRVJSWToK
LSAgICB7CisgICAgY2FzZSBQUk9QX1NUUkFXQkVSUlk6IHsKICAgICAgICAgZ192YWx1ZV9zZXRf
aW50KHZhbHVlLCBjb3JlU2VsZi0+Ymx1ZWJlcnJ5KCkpOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBQUk9QX1NUUklDVF9GTE9BVDoKLSAgICB7CisgICAgY2FzZSBQUk9QX1NUUklD
VF9GTE9BVDogewogICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCh2YWx1ZSwgY29yZVNlbGYtPnN0
cmljdEZsb2F0KCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX0RFU0NS
SVBUSU9OOgotICAgIHsKKyAgICBjYXNlIFBST1BfREVTQ1JJUFRJT046IHsKICAgICAgICAgZ192
YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgY29yZVNlbGYtPmRlc2NyaXB0aW9uKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX0lEOgotICAgIHsKKyAgICBjYXNlIFBST1BfSUQ6
IHsKICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgY29yZVNlbGYtPmlkKCkpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX0hBU0g6Ci0gICAgeworICAgIGNhc2Ug
UFJPUF9IQVNIOiB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRU
b1VURjhTdHJpbmcoY29yZVNlbGYtPmhhc2goKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KQEAgLTU4Miw3ICs1MTEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9jbGFzc19pbml0KFdlYktpdERPTVRlc3RPYmpDbGFzcyogcmVxdWVzdENsYXNzKQog
ewotICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVz
dENsYXNzKTsKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KHJlcXVlc3RDbGFzcyk7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21f
dGVzdF9vYmpfZmluYWxpemU7CiAgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5OwpAQCAtOTUzLDI1ICs4ODIs
MjUgQEAgd2Via2l0X2RvbV90ZXN0X29ial92b2lkX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgaXRlbS0+dm9pZE1ldGhvZCgpOwogfQogCiB2b2lkCi13ZWJraXRfZG9t
X3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBn
bG9uZyBpbnRfYXJnLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogb2Jq
X2FyZykKK3dlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGdsb25nIGludEFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0
RE9NVGVzdE9iaiogb2JqQXJnKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RP
YmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3Ry
X2FyZyk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChvYmpfYXJnKTsKLSAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRfc3RyX2FyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJfYXJnKTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVkX29ial9hcmcgPSBOVUxMOwotICAgIGlmIChvYmpf
YXJnICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX29ial9hcmcgPSBXZWJLaXQ6OmNvcmUo
b2JqX2FyZyk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX29ial9hcmcpOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChzdHJBcmcpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwob2JqQXJnKTsKKyAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3Ry
QXJnKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSAwOworICAgIGlm
IChvYmpBcmcpIHsKKyAgICAgICAgY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFy
Zyk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkT2JqQXJnKTsKICAgICB9Ci0g
ICAgaXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGludF9hcmcsIGNvbnZlcnRlZF9zdHJfYXJnLCBj
b252ZXJ0ZWRfb2JqX2FyZyk7CisgICAgaXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGludEFyZywg
Y29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOwogfQogCiBnbG9uZwpAQCAtOTc5LDI3
ICs5MDgsMjcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9pbnRfbWV0aG9kKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmog
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJlcyA9IGl0ZW0tPmludE1l
dGhvZCgpOwotICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKyAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5pbnRNZXRob2QoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBnbG9uZwotd2Via2l0X2RvbV90ZXN0X29ial9pbnRf
bWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBj
b25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqX2FyZykKK3dlYmtpdF9k
b21fdGVzdF9vYmpfaW50X21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
Z2xvbmcgaW50QXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpB
cmcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0cl9hcmcs
IDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9ial9hcmcsIDApOwotICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZF9zdHJfYXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cl9hcmcpOwot
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfb2JqX2FyZyA9IE5VTEw7Ci0gICAgaWYg
KG9ial9hcmcgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfb2JqX2FyZyA9IFdlYktpdDo6
Y29yZShvYmpfYXJnKTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkX29i
al9hcmcsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAwKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChvYmpBcmcsIDApOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNv
bnZlcnRlZE9iakFyZyA9IDA7CisgICAgaWYgKG9iakFyZykgeworICAgICAgICBjb252ZXJ0ZWRP
YmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoY29udmVydGVkT2JqQXJnLCAwKTsKICAgICB9Ci0gICAgZ2xvbmcgcmVzID0gaXRlbS0+aW50
TWV0aG9kV2l0aEFyZ3MoaW50X2FyZywgY29udmVydGVkX3N0cl9hcmcsIGNvbnZlcnRlZF9vYmpf
YXJnKTsKLSAgICByZXR1cm4gcmVzOworICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmludE1ldGhv
ZFdpdGhBcmdzKGludEFyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIFdlYktpdERPTVRlc3RPYmoqCkBAIC0xMDA3LDY4ICs5MzYs
NjggQEAgd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4g
Z19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT5vYmpNZXRob2QoKSk7Ci0gICAgV2ViS2l0RE9NVGVz
dE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPm9i
ak1ldGhvZCgpKTsKKyAgICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChn
b2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBXZWJLaXRET01U
ZXN0T2JqKgotd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2Vi
S2l0RE9NVGVzdE9iaiogb2JqX2FyZykKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93
aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgaW50QXJnLCBjb25zdCBnY2hh
ciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpCiB7CiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0cl9hcmcsIDApOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKG9ial9hcmcsIDApOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZF9zdHJfYXJnID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cl9hcmcpOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBj
b252ZXJ0ZWRfb2JqX2FyZyA9IE5VTEw7Ci0gICAgaWYgKG9ial9hcmcgIT0gTlVMTCkgewotICAg
ICAgICBjb252ZXJ0ZWRfb2JqX2FyZyA9IFdlYktpdDo6Y29yZShvYmpfYXJnKTsKLSAgICAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkX29ial9hcmcsIDApOworICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc3RyQXJnLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmpBcmcsIDApOwor
ICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChz
dHJBcmcpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IDA7CisgICAg
aWYgKG9iakFyZykgeworICAgICAgICBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2Jq
QXJnKTsKKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkT2JqQXJnLCAwKTsK
ICAgICB9Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0
UHRyKGl0ZW0tPm9iak1ldGhvZFdpdGhBcmdzKGludF9hcmcsIGNvbnZlcnRlZF9zdHJfYXJnLCBj
b252ZXJ0ZWRfb2JqX2FyZykpOwotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6
a2l0KGdfcmVzLmdldCgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFJlZlB0cjxXZWJDb3JlOjpU
ZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+b2JqTWV0aG9kV2l0aEFy
Z3MoaW50QXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZykpOworICAgIFdlYktp
dERPTVRlc3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFdlYktpdERPTVRlc3RPYmoqCi13ZWJraXRfZG9tX3Rl
c3Rfb2JqX21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJvd3MoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHN0cl9hcmcsIFdlYktpdERPTVRlc3RPYmoqIG9i
al9hcmcsIEdFcnJvciAqKmVycm9yKQord2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9y
ZXF1aXJlc19hbGxfYXJnc19hbmRfdGhyb3dzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0
IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZywgR0Vycm9yKiogZXJyb3Ip
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0cl9hcmcsIDAp
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9ial9hcmcsIDApOwotICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZF9zdHJfYXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cl9hcmcpOwotICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfb2JqX2FyZyA9IE5VTEw7Ci0gICAgaWYgKG9i
al9hcmcgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfb2JqX2FyZyA9IFdlYktpdDo6Y29y
ZShvYmpfYXJnKTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkX29ial9h
cmcsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAwKTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvYmpBcmcsIDApOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZl
cnRlZE9iakFyZyA9IDA7CisgICAgaWYgKG9iakFyZykgeworICAgICAgICBjb252ZXJ0ZWRPYmpB
cmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y29udmVydGVkT2JqQXJnLCAwKTsKICAgICB9CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0
UHRyKGl0ZW0tPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoY29udmVydGVkX3N0
cl9hcmcsIGNvbnZlcnRlZF9vYmpfYXJnLCBlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0
T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93cyhjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZywgZWMpKTsK
ICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
IGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAg
ICB9Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkp
OwotICAgIHJldHVybiByZXM7CisgICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2ViS2l0
OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9p
ZAotd2Via2l0X2RvbV90ZXN0X29ial9zZXJpYWxpemVkX3ZhbHVlKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIFdlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZF9hcmcpCit3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3NlcmlhbGl6ZWRfdmFsdWUoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkQXJnKQogewogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VyaWFsaXplZF9hcmcpOwotICAgIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSAqIGNvbnZlcnRlZF9zZXJpYWxpemVkX2FyZyA9IE5VTEw7
Ci0gICAgaWYgKHNlcmlhbGl6ZWRfYXJnICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX3Nl
cmlhbGl6ZWRfYXJnID0gV2ViS2l0Ojpjb3JlKHNlcmlhbGl6ZWRfYXJnKTsKLSAgICAgICAgZ19y
ZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfc2VyaWFsaXplZF9hcmcpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5faWZfZmFpbChz
ZXJpYWxpemVkQXJnKTsKKyAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGNvbnZl
cnRlZFNlcmlhbGl6ZWRBcmcgPSAwOworICAgIGlmIChzZXJpYWxpemVkQXJnKSB7CisgICAgICAg
IGNvbnZlcnRlZFNlcmlhbGl6ZWRBcmcgPSBXZWJLaXQ6OmNvcmUoc2VyaWFsaXplZEFyZyk7Cisg
ICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkU2VyaWFsaXplZEFyZyk7CiAgICAgfQot
ICAgIGl0ZW0tPnNlcmlhbGl6ZWRWYWx1ZShjb252ZXJ0ZWRfc2VyaWFsaXplZF9hcmcpOworICAg
IGl0ZW0tPnNlcmlhbGl6ZWRWYWx1ZShjb252ZXJ0ZWRTZXJpYWxpemVkQXJnKTsKIH0KIAogdm9p
ZApAQCAtMTA3NiwxNCArMTAwNSwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2lkYl9rZXkoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NSURCS2V5KiBrZXkpCiB7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKGtleSk7Ci0gICAgV2ViQ29yZTo6SURCS2V5ICogY29udmVydGVkX2tleSA9
IE5VTEw7Ci0gICAgaWYgKGtleSAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF9rZXkgPSBX
ZWJLaXQ6OmNvcmUoa2V5KTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfa2V5
KTsKKyAgICBXZWJDb3JlOjpJREJLZXkqIGNvbnZlcnRlZEtleSA9IDA7CisgICAgaWYgKGtleSkg
eworICAgICAgICBjb252ZXJ0ZWRLZXkgPSBXZWJLaXQ6OmNvcmUoa2V5KTsKKyAgICAgICAgZ19y
ZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRLZXkpOwogICAgIH0KLSAgICBpdGVtLT5pZGJLZXkoY29u
dmVydGVkX2tleSk7CisgICAgaXRlbS0+aWRiS2V5KGNvbnZlcnRlZEtleSk7CiB9CiAKIHZvaWQK
QEAgLTEwOTEsMjggKzEwMjAsMjggQEAgd2Via2l0X2RvbV90ZXN0X29ial9vcHRpb25zX29iamVj
dChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01EaWN0aW9uYXJ5KgogewogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChvbyk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChvb28pOwotICAgIFdl
YkNvcmU6OkRpY3Rpb25hcnkgKiBjb252ZXJ0ZWRfb28gPSBOVUxMOwotICAgIGlmIChvbyAhPSBO
VUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF9vbyA9IFdlYktpdDo6Y29yZShvbyk7Ci0gICAgICAg
IGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX29vKTsKKyAgICBXZWJDb3JlOjpEaWN0aW9uYXJ5
KiBjb252ZXJ0ZWRPbyA9IDA7CisgICAgaWYgKG9vKSB7CisgICAgICAgIGNvbnZlcnRlZE9vID0g
V2ViS2l0Ojpjb3JlKG9vKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRPbyk7
CiAgICAgfQotICAgIFdlYkNvcmU6OkRpY3Rpb25hcnkgKiBjb252ZXJ0ZWRfb29vID0gTlVMTDsK
LSAgICBpZiAob29vICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX29vbyA9IFdlYktpdDo6
Y29yZShvb28pOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF9vb28pOworICAg
IFdlYkNvcmU6OkRpY3Rpb25hcnkqIGNvbnZlcnRlZE9vbyA9IDA7CisgICAgaWYgKG9vbykgewor
ICAgICAgICBjb252ZXJ0ZWRPb28gPSBXZWJLaXQ6OmNvcmUob29vKTsKKyAgICAgICAgZ19yZXR1
cm5faWZfZmFpbChjb252ZXJ0ZWRPb28pOwogICAgIH0KLSAgICBpdGVtLT5vcHRpb25zT2JqZWN0
KGNvbnZlcnRlZF9vbywgY29udmVydGVkX29vbyk7CisgICAgaXRlbS0+b3B0aW9uc09iamVjdChj
b252ZXJ0ZWRPbywgY29udmVydGVkT29vKTsKIH0KIAogdm9pZAotd2Via2l0X2RvbV90ZXN0X29i
al9tZXRob2Rfd2l0aF9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoq
ZXJyb3IpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX2V4Y2VwdGlvbihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl9pZl9mYWls
KHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGl0ZW0tPm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAg
IGlmIChlYykgewpAQCAtMTEyNiw3ICsxMDU1LDcgQEAgd2Via2l0X2RvbV90ZXN0X29ial93aXRo
X3NjcmlwdF9zdGF0ZV92b2lkKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVt
LT53aXRoU2NyaXB0U3RhdGVWb2lkKCk7CiB9CiAKQEAgLTExMzUsMTggKzEwNjQsMTggQEAgd2Vi
a2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9zdGF0ZV9vYmooV2ViS2l0RE9NVGVzdE9iaiog
c2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2Jq
PiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRTdGF0ZU9iaigpKTsKLSAgICBX
ZWJLaXRET01UZXN0T2JqKiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+d2l0aFNjcmlwdFN0YXRlT2JqKCkpOworICAgIFdlYktpdERPTVRlc3RPYmoqIHJl
c3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfc3RhdGVfdm9p
ZF9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpCit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX3ZvaWRfZXhjZXB0aW9uKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9yKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
c2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdl
YkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgaXRlbS0+d2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihl
Yyk7CiAgICAgaWYgKGVjKSB7CkBAIC0xMTU2LDE5ICsxMDg1LDE5IEBAIHdlYmtpdF9kb21fdGVz
dF9vYmpfd2l0aF9zY3JpcHRfc3RhdGVfdm9pZF9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgR0VyCiB9CiAKIFdlYktpdERPTVRlc3RPYmoqCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3dp
dGhfc2NyaXB0X3N0YXRlX29ial9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vy
cm9yICoqZXJyb3IpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX29ial9l
eGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRTdGF0
ZU9iakV4Y2VwdGlvbihlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0
UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGVj
KSk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
CiAgICAgfQotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdl
dCgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYktpdERPTVRlc3RPYmoqIHJlc3VsdCA9IFdl
YktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IHZvaWQKQEAgLTExNzYsNyArMTEwNSw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3Jp
cHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0
ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKQEAgLTExODUsMjQgKzExMTQs
MjQgQEAgd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9h
bmRfc2NyaXB0X3N0YXRlKFdlYktpdERPTVRlc3QKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNl
bGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKTsKIH0KIAogV2ViS2l0RE9NVGVzdE9iaioK
LXdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3Nj
cmlwdF9zdGF0ZV9vYmpfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAq
KmVycm9yKQord2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4
dF9hbmRfc2NyaXB0X3N0YXRlX29ial9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
R0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRl
c3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0
UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNl
cHRpb24oZWMpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9
IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24oZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xp
dGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNv
ZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzID0gV2Vi
S2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7CisgICAgV2ViS2l0RE9NVGVz
dE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogV2ViS2l0RE9NVGVzdE9iaioKQEAgLTEyMTAsMTAgKzExMzksMTAg
QEAgd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRf
c2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzKFcKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChz
ZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
V2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKCkpOwotICAgIFdlYktp
dERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKLSAgICByZXR1cm4g
cmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihp
dGVtLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygp
KTsKKyAgICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVz
dWx0LmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xMjIxLDI2ICsx
MTUwLDI2IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0aW9uYWxfYXJnKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG9wdCkKIHsKICAgICBnX3JldHVybl9pZl9mYWls
KHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPm1ldGhvZFdp
dGhPcHRpb25hbEFyZyhvcHQpOwogfQogCiB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhv
ZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnbG9uZyBub25fb3B0LCBnbG9uZyBvcHQpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX21l
dGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnbG9uZyBub25PcHQsIGdsb25nIG9wdCkKIHsKICAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVt
LT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhub25fb3B0LCBvcHQpOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRl
bS0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcobm9uT3B0LCBvcHQpOwog
fQogCiB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9h
cmdfYW5kX3R3b19vcHRpb25hbF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG5v
bl9vcHQsIGdsb25nIG9wdDEsIGdsb25nIG9wdDIpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhv
ZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX3R3b19vcHRpb25hbF9hcmdzKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIG5vbk9wdCwgZ2xvbmcgb3B0MSwgZ2xvbmcgb3B0MikKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBpdGVtLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3Mobm9uX29wdCwgb3B0MSwgb3B0Mik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3Mobm9uT3B0LCBvcHQxLCBvcHQyKTsKIH0KIAogdm9pZApAQCAtMTI0OCwx
MCArMTE3NywxMCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX29wdGlvbmFsX3N0
cmluZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnYwogewogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChzdHIpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZF9zdHIgPSBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgoc3RyKTsKLSAgICBpdGVtLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoY29u
dmVydGVkX3N0cik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyID0gV1RGOjpTdHJpbmc6
OmZyb21VVEY4KHN0cik7CisgICAgaXRlbS0+bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKGNvbnZl
cnRlZFN0cik7CiB9CiAKIHZvaWQKQEAgLTEyNTksMTAgKzExODgsMTAgQEAgd2Via2l0X2RvbV90
ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9zdHJpbmdfaXNfdW5kZWZpbmVkKFdlYktpdERP
TVRlc3RPYmoqIHMKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3RyKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRfc3RyID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cik7Ci0gICAgaXRl
bS0+bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoY29udmVydGVkX3N0cik7Cisg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cik7
CisgICAgaXRlbS0+bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoY29udmVydGVk
U3RyKTsKIH0KIAogdm9pZApAQCAtMTI3MCwxMCArMTE5OSwxMCBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX21ldGhvZF93aXRoX29wdGlvbmFsX3N0cmluZ19pc19udWxsX3N0cmluZyhXZWJLaXRET01U
ZXN0T2JqKgogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzdHIpOwotICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZF9zdHIgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyKTsKLSAgICBpdGVtLT5t
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmcoY29udmVydGVkX3N0cik7CisgICAg
V1RGOjpTdHJpbmcgY29udmVydGVkU3RyID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cik7Cisg
ICAgaXRlbS0+bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nKGNvbnZlcnRlZFN0
cik7CiB9CiAKIGdjaGFyKgpAQCAtMTI4MiwxMiArMTIxMSwxMiBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2NvbmRpdGlvbmFsX21ldGhvZDEoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9i
aiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlcyA9IGNvbnZlcnRU
b1VURjhTdHJpbmcoaXRlbS0+Y29uZGl0aW9uYWxNZXRob2QxKCkpOwotICAgIHJldHVybiByZXM7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
Y2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5jb25kaXRpb25hbE1ldGhv
ZDEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJu
IDA7CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpICovCiB9CiAKQEAgLTEyOTcsNyArMTIy
Niw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfY29uZGl0aW9uYWxfbWV0aG9kMihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKQogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9u
MikKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIGl0ZW0tPmNvbmRpdGlvbmFsTWV0aG9kMigpOwogI2Vsc2UKICNpZiAhRU5BQkxF
KENvbmRpdGlvbjEpCkBAIC0xMzE1LDcgKzEyNDQsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2Nv
bmRpdGlvbmFsX21ldGhvZDMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxm
KTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5jb25kaXRpb25hbE1l
dGhvZDMoKTsKICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29u
ZGl0aW9uMSIpCkBAIC0xMzI4LDcgKzEyNTcsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NsYXNz
X21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
c2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdl
YkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+Y2xhc3NNZXRo
b2QoKTsKIH0KIApAQCAtMTMzNyw5ICsxMjY2LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9jbGFz
c19tZXRob2Rfd2l0aF9vcHRpb25hbChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzID0gaXRlbS0+Y2xhc3NNZXRob2RXaXRo
T3B0aW9uYWwoYXJnKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+Y2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwoYXJnKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBA
IC0xMzQ4LDcgKzEyNzcsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9k
MShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpCiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBpdGVtLT5vdmVybG9hZGVkTWV0aG9kMShhcmcpOwogI2Vsc2UKICAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKQEAgLTEzNjEsMTAgKzEy
OTAsMTAgQEAgd2Via2l0X2RvbV90ZXN0X29ial9vdmVybG9hZGVkX21ldGhvZDEoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHR5cGUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkK
ICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodHlwZSk7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVk
X3R5cGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodHlwZSk7Ci0gICAgaXRlbS0+b3ZlcmxvYWRl
ZE1ldGhvZDEoY29udmVydGVkX3R5cGUpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUg
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodHlwZSk7CisgICAgaXRlbS0+b3ZlcmxvYWRlZE1ldGhv
ZDEoY29udmVydGVkVHlwZSk7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIkNvbmRpdGlvbjEiKQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSAqLwpAQCAt
MTM3NSwxNCArMTMwNCwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQxKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTWEqICkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNl
bGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
KTsKLSAgICBXZWJDb3JlOjphICogY29udmVydGVkXyA9IE5VTEw7Ci0gICAgaWYgKCAhPSBOVUxM
KSB7Ci0gICAgICAgIGNvbnZlcnRlZF8gPSBXZWJLaXQ6OmNvcmUoKTsKLSAgICAgICAgZ19yZXR1
cm5faWZfZmFpbChjb252ZXJ0ZWRfKTsKKyAgICBXZWJDb3JlOjphKiBjb252ZXJ0ZWQgPSAwOwor
ICAgIGlmICgpIHsKKyAgICAgICAgY29udmVydGVkID0gV2ViS2l0Ojpjb3JlKCk7CisgICAgICAg
IGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkKTsKICAgICB9Ci0gICAgaXRlbS0+Y29udmVydDEo
Y29udmVydGVkXyk7CisgICAgaXRlbS0+Y29udmVydDEoY29udmVydGVkKTsKIH0KIAogdm9pZApA
QCAtMTM5MCwxNCArMTMxOSwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQyKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTWIqICkKIHsKICAgICBnX3JldHVybl9pZl9mYWls
KHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoKTsKLSAgICBXZWJDb3JlOjpiICogY29udmVydGVkXyA9IE5VTEw7Ci0gICAgaWYgKCAhPSBO
VUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF8gPSBXZWJLaXQ6OmNvcmUoKTsKLSAgICAgICAgZ19y
ZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfKTsKKyAgICBXZWJDb3JlOjpiKiBjb252ZXJ0ZWQgPSAw
OworICAgIGlmICgpIHsKKyAgICAgICAgY29udmVydGVkID0gV2ViS2l0Ojpjb3JlKCk7CisgICAg
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkKTsKICAgICB9Ci0gICAgaXRlbS0+Y29udmVy
dDIoY29udmVydGVkXyk7CisgICAgaXRlbS0+Y29udmVydDIoY29udmVydGVkKTsKIH0KIAogdm9p
ZApAQCAtMTQwNSwxNCArMTMzNCwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQzKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTWMqICkKIHsKICAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoKTsKLSAgICBXZWJDb3JlOjpjICogY29udmVydGVkXyA9IE5VTEw7Ci0gICAgaWYgKCAh
PSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF8gPSBXZWJLaXQ6OmNvcmUoKTsKLSAgICAgICAg
Z19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfKTsKKyAgICBXZWJDb3JlOjpjKiBjb252ZXJ0ZWQg
PSAwOworICAgIGlmICgpIHsKKyAgICAgICAgY29udmVydGVkID0gV2ViS2l0Ojpjb3JlKCk7Cisg
ICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkKTsKICAgICB9Ci0gICAgaXRlbS0+Y29u
dmVydDMoY29udmVydGVkXyk7CisgICAgaXRlbS0+Y29udmVydDMoY29udmVydGVkKTsKIH0KIAog
dm9pZApAQCAtMTQyMCwxNCArMTM0OSwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQ0
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTWQqICkKIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBX
ZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoKTsKLSAgICBXZWJDb3JlOjpkICogY29udmVydGVkXyA9IE5VTEw7Ci0gICAgaWYg
KCAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF8gPSBXZWJLaXQ6OmNvcmUoKTsKLSAgICAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfKTsKKyAgICBXZWJDb3JlOjpkKiBjb252ZXJ0
ZWQgPSAwOworICAgIGlmICgpIHsKKyAgICAgICAgY29udmVydGVkID0gV2ViS2l0Ojpjb3JlKCk7
CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkKTsKICAgICB9Ci0gICAgaXRlbS0+
Y29udmVydDQoY29udmVydGVkXyk7CisgICAgaXRlbS0+Y29udmVydDQoY29udmVydGVkKTsKIH0K
IAogdm9pZApAQCAtMTQzNSwxNCArMTM2NCwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZl
cnQ1KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTWUqICkKIHsKICAgICBnX3JldHVy
bl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoKTsKLSAgICBXZWJDb3JlOjplICogY29udmVydGVkXyA9IE5VTEw7Ci0gICAg
aWYgKCAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF8gPSBXZWJLaXQ6OmNvcmUoKTsKLSAg
ICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfKTsKKyAgICBXZWJDb3JlOjplKiBjb252
ZXJ0ZWQgPSAwOworICAgIGlmICgpIHsKKyAgICAgICAgY29udmVydGVkID0gV2ViS2l0Ojpjb3Jl
KCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkKTsKICAgICB9Ci0gICAgaXRl
bS0+Y29udmVydDUoY29udmVydGVkXyk7CisgICAgaXRlbS0+Y29udmVydDUoY29udmVydGVkKTsK
IH0KIAogV2ViS2l0RE9NU1ZHUG9pbnQqCkBAIC0xNDUwLDEwICsxMzc5LDEwIEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfbXV0YWJsZV9wb2ludF9mdW5jdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxm
KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNWR1BvaW50PiBn
X3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPm11dGFibGVQb2ludEZ1bmN0aW9uKCkpOwotICAgIFdl
YktpdERPTVNWR1BvaW50KiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpTVkdQb2ludD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPm11dGFibGVQb2ludEZ1bmN0aW9uKCkpOworICAgIFdlYktpdERPTVNWR1BvaW50
KiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBXZWJLaXRET01TVkdQb2ludCoKQEAgLTE0NjEsMTAgKzEzOTAsMTAgQEAg
d2Via2l0X2RvbV90ZXN0X29ial9pbW11dGFibGVfcG9pbnRfZnVuY3Rpb24oV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9i
aiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
VkdQb2ludD4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT5pbW11dGFibGVQb2ludEZ1bmN0aW9u
KCkpOwotICAgIFdlYktpdERPTVNWR1BvaW50KiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQo
KSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTVkdQb2ludD4gZ29iamVjdFJlc3Vs
dCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSk7CisgICAgV2Vi
S2l0RE9NU1ZHUG9pbnQqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAgLTE0NzIsMjYgKzE0MDEsMjYgQEAg
d2Via2l0X2RvbV90ZXN0X29ial9vcmFuZ2UoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwog
ICAgIGl0ZW0tPm9yYW5nZSgpOwogfQogCiBXZWJLaXRET01ib29sKgotd2Via2l0X2RvbV90ZXN0
X29ial9zdHJpY3RfZnVuY3Rpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIq
IHN0ciwgZ2Zsb2F0IGEsIGdpbnQgYiwgR0Vycm9yICoqZXJyb3IpCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3N0cmljdF9mdW5jdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciog
c3RyLCBnZmxvYXQgYSwgZ2ludCBiLCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChzdHIsIDApOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZF9z
dHIgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRTdHIgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyKTsKICAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OmJvb2w+IGdfcmVzID0gV1RG
OjpnZXRQdHIoaXRlbS0+c3RyaWN0RnVuY3Rpb24oY29udmVydGVkX3N0ciwgYSwgYiwgZWMpKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Ym9vbD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0
ZW0tPnN0cmljdEZ1bmN0aW9uKGNvbnZlcnRlZFN0ciwgYSwgYiwgZWMpKTsKICAgICBpZiAoZWMp
IHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7
CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmco
IldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAgV2Vi
S2l0RE9NYm9vbCogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiBy
ZXM7CisgICAgV2ViS2l0RE9NYm9vbCogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogZ2xvbmcKQEAgLTE0OTksOSArMTQy
OCw5IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9pbnRfYXR0cihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpU
ZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnbG9uZyByZXMgPSBpdGVt
LT5yZWFkT25seUludEF0dHIoKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+
cmVhZE9ubHlJbnRBdHRyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogZ2NoYXIqCkBAIC0x
NTA5LDkgKzE0MzgsOSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfc3RyaW5n
X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2No
YXIqIHJlcyA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+cmVhZE9ubHlTdHJpbmdBdHRyKCkp
OwotICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVt
LT5yZWFkT25seVN0cmluZ0F0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogV2ViS2l0
RE9NVGVzdE9iaioKQEAgLTE1MTksMTAgKzE0NDgsMTAgQEAgd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfcmVhZF9vbmx5X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdU
Rjo6Z2V0UHRyKGl0ZW0tPnJlYWRPbmx5VGVzdE9iakF0dHIoKSk7Ci0gICAgV2ViS2l0RE9NVGVz
dE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnJl
YWRPbmx5VGVzdE9iakF0dHIoKSk7CisgICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2Vi
S2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
Z3Nob3J0CkBAIC0xNTMwLDkgKzE0NTksOSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zaG9y
dF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdz
aG9ydCByZXMgPSBpdGVtLT5zaG9ydEF0dHIoKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ3Nob3J0IHJlc3Vs
dCA9IGl0ZW0tPnNob3J0QXR0cigpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAg
LTE1NDAsNyArMTQ2OSw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Nob3J0X2F0dHIoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgZ3Nob3J0IHZhbHVlKQogewogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0U2hv
cnRBdHRyKHZhbHVlKTsKIH0KIApAQCAtMTU0OSw5ICsxNDc4LDkgQEAgd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfdW5zaWduZWRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBndXNob3J0IHJlcyA9IGl0ZW0tPnVuc2lnbmVkU2hvcnRBdHRy
KCk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGd1c2hvcnQgcmVzdWx0ID0gaXRlbS0+dW5zaWduZWRTaG9ydEF0
dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xNTU5LDcgKzE0ODgsNyBA
QCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF91bnNpZ25lZF9zaG9ydF9hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGd1c2hvcnQgdmFsdQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0VW5zaWduZWRTaG9y
dEF0dHIodmFsdWUpOwogfQogCkBAIC0xNTY4LDkgKzE0OTcsOSBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9pbnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBnbG9uZyByZXMgPSBpdGVtLT5pbnRBdHRyKCk7Ci0gICAgcmV0dXJuIHJlczsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdsb25n
IHJlc3VsdCA9IGl0ZW0tPmludEF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
CkBAIC0xNTc4LDcgKzE1MDcsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9pbnRfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSkKIHsKICAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldElu
dEF0dHIodmFsdWUpOwogfQogCkBAIC0xNTg3LDkgKzE1MTYsOSBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9sb25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnaW50NjQgcmVzID0gaXRlbS0+bG9uZ0xvbmdBdHRyKCk7Ci0gICAgcmV0
dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIGdpbnQ2NCByZXN1bHQgPSBpdGVtLT5sb25nTG9uZ0F0dHIoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB2b2lkCkBAIC0xNTk3LDcgKzE1MjYsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF9sb25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50NjQgdmFs
dWUpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBpdGVtLT5zZXRMb25nTG9uZ0F0dHIodmFsdWUpOwogfQogCkBAIC0xNjA2
LDkgKzE1MzUsOSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF91bnNpZ25lZF9sb25nX2xvbmdf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWlu
dDY0IHJlcyA9IGl0ZW0tPnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCk7Ci0gICAgcmV0dXJuIHJlczsK
KyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGd1
aW50NjQgcmVzdWx0ID0gaXRlbS0+dW5zaWduZWRMb25nTG9uZ0F0dHIoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB2b2lkCkBAIC0xNjE2LDcgKzE1NDUsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBn
dWludDY0CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRVbnNpZ25lZExvbmdMb25nQXR0cih2YWx1ZSk7CiB9
CiAKQEAgLTE2MjUsOSArMTU1NCw5IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmluZ19h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFy
KiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cmluZ0F0dHIoKSk7Ci0gICAgcmV0
dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cmluZ0F0
dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTYzNSwxMCArMTU2NCwx
MCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxm
KTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZh
bHVlKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRfdmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldFN0cmluZ0F0dHIoY29udmVydGVkX3ZhbHVlKTsK
KyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2
YWx1ZSk7CisgICAgaXRlbS0+c2V0U3RyaW5nQXR0cihjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIFdl
YktpdERPTVRlc3RPYmoqCkBAIC0xNjQ2LDEwICsxNTc1LDEwIEBAIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0
UHRyKGl0ZW0tPnRlc3RPYmpBdHRyKCkpOwotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdl
YktpdDo6a2l0KGdfcmVzLmdldCgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRl
c3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT50ZXN0T2JqQXR0cigpKTsK
KyAgICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0
LmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xNjU3LDE0ICsxNTg2
LDE0IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaioKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNl
bGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
dmFsdWUpOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfdmFsdWUgPSBOVUxMOwot
ICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IFdlYktp
dDo6Y29yZSh2YWx1ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX3ZhbHVl
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7CisgICAgaWYgKHZh
bHVlKSB7CisgICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAg
ICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7CiAgICAgfQotICAgIGl0ZW0t
PnNldFRlc3RPYmpBdHRyKGNvbnZlcnRlZF92YWx1ZSk7CisgICAgaXRlbS0+c2V0VGVzdE9iakF0
dHIoY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKgpAQCAtMTY3MiwxMCAr
MTYwMSwxMCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF94bWxfb2JqX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVz
dE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPnhtbE9iakF0dHIoKSk7Ci0gICAg
V2ViS2l0RE9NVGVzdE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJl
dHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPnhtbE9iakF0dHIoKSk7CisgICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0g
V2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogdm9pZApAQCAtMTY4MywxNCArMTYxMiwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF94
bWxfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdgog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGNvbnZlcnRlZF92YWx1ZSA9IE5VTEw7Ci0gICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKLSAgICAg
ICAgY29udmVydGVkX3ZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICAgICAgZ19yZXR1
cm5faWZfZmFpbChjb252ZXJ0ZWRfdmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZl
cnRlZFZhbHVlID0gMDsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgY29udmVydGVkVmFsdWUg
PSBXZWJLaXQ6OmNvcmUodmFsdWUpOworICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRl
ZFZhbHVlKTsKICAgICB9Ci0gICAgaXRlbS0+c2V0WE1MT2JqQXR0cihjb252ZXJ0ZWRfdmFsdWUp
OworICAgIGl0ZW0tPnNldFhNTE9iakF0dHIoY29udmVydGVkVmFsdWUpOwogfQogCiBnYm9vbGVh
bgpAQCAtMTY5OCw5ICsxNjI3LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY3JlYXRlKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwg
MCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNv
cmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJl
cyA9IGl0ZW0tPmlzQ3JlYXRlKCk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPmlzQ3JlYXRlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTcwOCw3
ICsxNjM3LDcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY3JlYXRlKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGdib29sZWFuIHZhbHVlKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0Q3JlYXRlKHZhbHVl
KTsKIH0KIApAQCAtMTcxNyw5ICsxNjQ2LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVm
bGVjdGVkX3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdjaGFyKiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmdldEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7Ci0gICAg
cmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmdldEF0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTcyNywxMCArMTY1NiwxMCBAQCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfc3RyaW5nX2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgY29uc3QgZ2NoYQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RP
YmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0g
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkX3ZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZh
bHVlKTsKLSAgICBpdGVtLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRzdHJpbmdhdHRyQXR0ciwgY29udmVydGVkX3ZhbHVlKTsKKyAgICBXVEY6OlN0cmluZyBjb252
ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CisgICAgaXRlbS0+c2V0
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIsIGNv
bnZlcnRlZFZhbHVlKTsKIH0KIAogZ2xvbmcKQEAgLTE3MzgsOSArMTY2Nyw5IEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9pbnRlZ3JhbF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJlcyA9IGl0ZW0tPmdldEludGVn
cmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0
cik7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmdldEludGVncmFsQXR0cmli
dXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0cik7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTc0OCw3ICsxNjc3LDcgQEAgd2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2xvbmcgdmEKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgdmFsdWUpOwogfQogCkBA
IC0xNzU3LDkgKzE2ODYsOSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfdW5z
aWduZWRfaW50ZWdyYWxfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBndWxvbmcgcmVzID0gaXRlbS0+Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cik7
Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT5nZXRVbnNpZ25lZEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0
dHJBdHRyKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xNzY3LDcgKzE2OTYs
NyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfdW5zaWduZWRfaW50ZWdyYWxf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2Vs
Zik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNv
cmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0VW5zaWduZWRJ
bnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50
ZWdyYWxhdHRyQXR0ciwgdmFsdWUpOwogfQogCkBAIC0xNzc2LDkgKzE3MDUsOSBAQCB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfYm9vbGVhbl9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmhhc0F0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cik7Ci0g
ICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmhhc0F0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cik7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogdm9pZApAQCAtMTc4Niw3ICsxNzE1LDcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfcmVmbGVjdGVkX2Jvb2xlYW5fYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnYm9vbGVh
bgogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciwgdmFsdWUpOwogfQogCkBAIC0xNzk1LDkgKzE3MjQs
OSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfdXJsX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVz
dE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlcyA9IGNvbnZl
cnRUb1VURjhTdHJpbmcoaXRlbS0+Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNv
bnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
CkBAIC0xODA1LDEwICsxNzM0LDEwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3Rl
ZF91cmxfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhcioKIHsKICAgICBn
X3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZF92YWx1
ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRl
KFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIsIGNvbnZlcnRlZF92YWx1
ZSk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgodmFsdWUpOworICAgIGl0ZW0tPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZHVybGF0dHJBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdjaGFyKgpAQCAtMTgx
Niw5ICsxNzQ1LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3N0cmluZ19h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFy
KiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpOwotICAgIHJldHVybiByZXM7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
Y2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5nZXRBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xODI2LDEwICsxNzU1LDEwIEBAIHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBjb25zdCBnY2hhCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRfdmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwot
ICAgIGl0ZW0tPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRT
dHJpbmdBdHRyQXR0ciwgY29udmVydGVkX3ZhbHVlKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CisgICAgaXRlbS0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyLCBj
b252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdsb25nCkBAIC0xODM3LDkgKzE3NjYsOSBAQCB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX2ludGVncmFsX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVz
dE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzID0gaXRlbS0+
Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50
ZWdyYWxBdHRyQXR0cik7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmdldElu
dGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFs
QXR0ckF0dHIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAgLTE4NDcsNyArMTc3
Niw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21faW50ZWdyYWxf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2Vi
Q29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRJbnRlZ3Jh
bEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJB
dHRyLCB2YWx1ZSk7CiB9CiAKQEAgLTE4NTYsOSArMTc4NSw5IEBAIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X3JlZmxlY3RlZF9jdXN0b21fYm9vbGVhbl9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmhhc0F0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpOwot
ICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB2b2lkCkBAIC0xODY2LDcgKzE3OTUsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tX2Jvb2xlYW5fYXR0cihXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBnYgogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIHZhbHVlKTsKIH0KIApAQCAtMTg3
NSw5ICsxODA0LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX2N1c3RvbV91
cmxfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
Y2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5nZXRVUkxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsKLSAgICByZXR1cm4g
cmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+Z2V0VVJMQXR0cmli
dXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTg4NSwzMyArMTgxNCwzMyBAQCB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tX3VybF9hdHRyKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGNvbnN0CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRfdmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
OwotICAgIGl0ZW0tPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRl
bnRVUkxBdHRyQXR0ciwgY29udmVydGVkX3ZhbHVlKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CisgICAgaXRlbS0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBjb252
ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdsb25nCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyX3dp
dGhfZ2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IgKiplcnJv
cikKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9yKQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGdsb25nIHJlcyA9IGl0ZW0tPmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5hdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9s
aXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5j
b2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogdm9pZAotd2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX2dldHRl
cl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvciAq
KmVycm9yKQord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX2dldHRlcl9leGNlcHRp
b24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvcioqIGVycm9yKQog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaXRlbS0+c2V0QXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24odmFsdWUsIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTE5MjUs
MTcgKzE4NTQsMTcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX3NldHRlcl9l
eGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z2xvbmcgcmVzID0gaXRlbS0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKTsKLSAgICByZXR1cm4g
cmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dp
dGhfc2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSwg
R0Vycm9yICoqZXJyb3IpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhfc2V0dGVy
X2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSwgR0Vycm9yKiog
ZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpdGVt
LT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2YWx1ZSwgZWMpOwogICAgIGlmIChlYykgewpA
QCAtMTk0NSwyNiArMTg3NCwyNiBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhf
c2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZwogfQogCiBnY2hh
cioKLXdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmluZ19hdHRyX3dpdGhfZ2V0dGVyX2V4Y2Vw
dGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IgKiplcnJvcikKK3dlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X3N0cmluZ19hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnY2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmlu
ZyhpdGVtLT5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwotICAgIHJldHVybiBy
ZXM7CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+c3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2
b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cl93aXRoX2dldHRlcl9leGNl
cHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3Ig
KiplcnJvcikKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19hdHRyX3dpdGhfZ2V0dGVy
X2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUsIEdF
cnJvcioqIGVycm9yKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV1RG
OjpTdHJpbmcgY29udmVydGVkX3ZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsK
KyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2
YWx1ZSk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+c2V0
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oY29udmVydGVkX3ZhbHVlLCBlYyk7CisgICAg
aXRlbS0+c2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oY29udmVydGVkVmFsdWUsIGVj
KTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVh
cmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsK
QEAgLTE5NzYsMjEgKzE5MDUsMjEgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyaW5nX2F0
dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlcyA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+c3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFyKiByZXN1
bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9v
Ympfc2V0X3N0cmluZ19hdHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUsIEdFcnJvciAqKmVycm9yKQord2Via2l0X2RvbV90
ZXN0X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRfdmFs
dWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOworICAgIFdURjo6U3RyaW5nIGNvbnZl
cnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihjb252ZXJ0ZWRfdmFsdWUsIGVjKTsKKyAgICBpdGVtLT5zZXRTdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbihjb252ZXJ0ZWRWYWx1ZSwgZWMpOwogICAgIGlmIChlYykgewogICAg
ICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAg
ICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lU
X0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtMjAwMiw5ICsxOTMxLDkgQEAg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJlcyA9IGl0
ZW0tPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpOwotICAgIHJldHVybiByZXM7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnbG9uZyByZXN1
bHQgPSBpdGVtLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB2b2lkCkBAIC0yMDEyLDcgKzE5NDEsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xv
bgogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgaXRlbS0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKHZhbHVlKTsKIH0K
IApAQCAtMjAyMSwxMCArMTk1MCwxMCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3Nj
cmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iagogewogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVzID0gV1RG
OjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKSk7Ci0g
ICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAg
IHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6
Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCkpOworICAg
IFdlYktpdERPTVRlc3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0
KCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAgLTIwMzIsNDYgKzE5NjEsNDYg
QEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYp
OwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3Jl
OjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFs
dWUpOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfdmFsdWUgPSBOVUxMOwotICAg
IGlmICh2YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IFdlYktpdDo6
Y29yZSh2YWx1ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX3ZhbHVlKTsK
KyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7CisgICAgaWYgKHZhbHVl
KSB7CisgICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7CiAgICAgfQotICAgIGl0ZW0tPnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKGNvbnZlcnRlZF92YWx1ZSk7Cisg
ICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29udmVydGVk
VmFsdWUpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKgotd2Via2l0X2RvbV90ZXN0X29ial9nZXRf
d2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBHRXJyb3IgKiplcnJvcikKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X3N0
YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yKiogZXJy
b3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpU
ZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKGVjKSk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9s
aXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5j
b2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdl
YktpdDo6a2l0KGdfcmVzLmdldCgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYktpdERPTVRl
c3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2Ny
aXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0
RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKQord2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVk
X3ZhbHVlID0gTlVMTDsKLSAgICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0
ZWRfdmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWls
KGNvbnZlcnRlZF92YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUg
PSAwOworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6
Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwog
ICAgIH0KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29udmVydGVkX3ZhbHVlLCBlYyk7CisgICAg
aXRlbS0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGNvbnZlcnRlZFZhbHVlLCBl
Yyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
CkBAIC0yMDc5LDM1ICsyMDA4LDM1IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2Ny
aXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsCiB9CiAKIFdl
YktpdERPTVRlc3RPYmoqCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVj
dXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdF
cnJvciAqKmVycm9yKQord2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0
aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJy
b3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9i
aiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIo
aXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoZWMpKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0
ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGVjKSk7CiAgICAg
aWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rl
c2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21f
c3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQot
ICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKLSAg
ICByZXR1cm4gcmVzOworICAgIFdlYktpdERPTVRlc3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0
KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKLXdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJp
YnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFs
dWUsIEdFcnJvciAqKmVycm9yKQord2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRf
ZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVkX3Zh
bHVlID0gTlVMTDsKLSAgICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRf
dmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNv
bnZlcnRlZF92YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSAw
OworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29y
ZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwogICAg
IH0KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhjb252ZXJ0ZWRfdmFsdWUsIGVj
KTsKKyAgICBpdGVtLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyhjb252ZXJ0ZWRWYWx1ZSwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAgZ19zZXRfZXJyb3Jf
bGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2Mu
Y29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtMjExOSwxMCArMjA0OCwxMCBAQCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRl
X2F0dHJpYnV0ZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2Jq
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRl
c3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpKTsKLSAgICBXZWJLaXRET01UZXN0T2JqKiByZXMg
PSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpKTsKKyAgICBXZWJLaXRET01U
ZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0yMTMwLDQ2ICsyMDU5LDQ2IEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRf
c3RhdGVfYXR0cmlidXRlCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVkX3ZhbHVlID0gTlVMTDsKLSAgICBpZiAodmFsdWUg
IT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUp
OwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF92YWx1ZSk7CisgICAgV2ViQ29y
ZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSAwOworICAgIGlmICh2YWx1ZSkgeworICAgICAg
ICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwogICAgIH0KLSAgICBpdGVtLT5zZXRXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGNvbnZlcnRlZF92YWx1ZSk7
CisgICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIFdlYktpdERPTVRlc3RPYmoqCi13ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0
X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoq
ZXJyb3IpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29u
dGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwg
MCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNv
cmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdU
Rjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMoZWMpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVj
dFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00i
KSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAgV2ViS2l0RE9NVGVzdE9i
aiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7CisgICAg
V2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZAotd2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1
dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVl
LCBHRXJyb3IgKiplcnJvcikKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4
ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3Ip
CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0T2Jq
ICogY29udmVydGVkX3ZhbHVlID0gTlVMTDsKLSAgICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAg
ICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBnX3Jl
dHVybl9pZl9mYWlsKGNvbnZlcnRlZF92YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29u
dmVydGVkVmFsdWUgPSAwOworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBjb252ZXJ0ZWRWYWx1
ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVy
dGVkVmFsdWUpOwogICAgIH0KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpdGVtLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKGNvbnZlcnRlZF92YWx1ZSwgZWMpOworICAgIGl0ZW0tPnNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29udmVydGVkVmFs
dWUsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3Is
IGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5u
YW1lKTsKQEAgLTIxODEsMTAgKzIxMTAsMTAgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0
aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWMKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9
IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlKCkpOwotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdl
YktpdDo6a2l0KGdfcmVzLmdldCgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRl
c3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgpKTsKKyAgICBXZWJL
aXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0yMTkyLDE0ICsyMTIxLDE0IEBAIHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9z
Y3JpcHRfc3RhdGVfd2l0aF9zcGFjCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVz
dE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsK
LSAgICBXZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVkX3ZhbHVlID0gTlVMTDsKLSAgICBpZiAo
dmFsdWUgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBXZWJLaXQ6OmNvcmUo
dmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF92YWx1ZSk7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSAwOworICAgIGlmICh2YWx1ZSkgewor
ICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdf
cmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwogICAgIH0KLSAgICBpdGVtLT5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShj
b252ZXJ0ZWRfdmFsdWUpOworICAgIGl0ZW0tPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGNvbnZlcnRlZFZhbHVlKTsKIH0KIAog
Z2xvbmcKQEAgLTIyMDgsOSArMjEzNyw5IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NvbmRp
dGlvbmFsX2F0dHIxKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJlcyA9IGl0ZW0tPmNvbmRpdGlvbmFsQXR0
cjEoKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+Y29uZGl0aW9uYWxBdHRy
MSgpOworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxnbG9uZz4o
MCk7CkBAIC0yMjIzLDcgKzIxNTIsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9jb25kaXRp
b25hbF9hdHRyMShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSkKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldENvbmRpdGlvbmFsQXR0cjEodmFsdWUpOwog
I2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikK
QEAgLTIyMzYsOSArMjE2NSw5IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NvbmRpdGlvbmFs
X2F0dHIyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYm
IEVOQUJMRShDb25kaXRpb24yKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpU
ZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnbG9uZyByZXMgPSBpdGVt
LT5jb25kaXRpb25hbEF0dHIyKCk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0t
PmNvbmRpdGlvbmFsQXR0cjIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICNpZiAhRU5B
QkxFKENvbmRpdGlvbjEpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29u
ZGl0aW9uMSIpCkBAIC0yMjU2LDcgKzIxODUsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9j
b25kaXRpb25hbF9hdHRyMihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSkKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5z
ZXRDb25kaXRpb25hbEF0dHIyKHZhbHVlKTsKICNlbHNlCiAjaWYgIUVOQUJMRShDb25kaXRpb24x
KQpAQCAtMjI3NCw5ICsyMjAzLDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9u
YWxfYXR0cjMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJlcyA9IGl0
ZW0tPmNvbmRpdGlvbmFsQXR0cjMoKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRl
bS0+Y29uZGl0aW9uYWxBdHRyMygpOworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQpAQCAtMjI5MCw3ICsyMjE5LDcg
QEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0cjMoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJM
RShDb25kaXRpb24yKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0Q29uZGl0aW9uYWxBdHRyMyh2YWx1ZSk7CiAj
ZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQpA
QCAtMjMwMywxMCArMjIzMiwxMCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jb250ZW50X2Rv
Y3VtZW50KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnQ+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+Y29u
dGVudERvY3VtZW50KCkpOwotICAgIFdlYktpdERPTURvY3VtZW50KiByZXMgPSBXZWJLaXQ6Omtp
dChnX3Jlcy5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEb2N1bWVudD4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNvbnRlbnREb2N1bWVudCgpKTsKKyAg
ICBXZWJLaXRET01Eb2N1bWVudCogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5n
ZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogV2ViS2l0RE9NU1ZHUG9pbnQqCkBAIC0y
MzE0LDEwICsyMjQzLDEwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X211dGFibGVfcG9pbnQo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxm
LCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2Vi
Q29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTVkdQb2ludD4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT5tdXRhYmxlUG9p
bnQoKSk7Ci0gICAgV2ViS2l0RE9NU1ZHUG9pbnQqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdl
dCgpKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNWR1BvaW50PiBnb2JqZWN0UmVz
dWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bXV0YWJsZVBvaW50KCkpOworICAgIFdlYktpdERPTVNW
R1BvaW50KiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0yMzI1LDE0ICsyMjU0LDE0IEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X211dGFibGVfcG9pbnQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2Vi
S2l0RE9NU1ZHUG9pbnQqCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBX
ZWJDb3JlOjpTVkdQb2ludCAqIGNvbnZlcnRlZF92YWx1ZSA9IE5VTEw7Ci0gICAgaWYgKHZhbHVl
ICE9IE5VTEwpIHsKLSAgICAgICAgY29udmVydGVkX3ZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVl
KTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfdmFsdWUpOworICAgIFdlYkNv
cmU6OlNWR1BvaW50KiBjb252ZXJ0ZWRWYWx1ZSA9IDA7CisgICAgaWYgKHZhbHVlKSB7CisgICAg
ICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICAgICAgZ19yZXR1
cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7CiAgICAgfQotICAgIGl0ZW0tPnNldE11dGFibGVQ
b2ludChjb252ZXJ0ZWRfdmFsdWUpOworICAgIGl0ZW0tPnNldE11dGFibGVQb2ludChjb252ZXJ0
ZWRWYWx1ZSk7CiB9CiAKIFdlYktpdERPTVNWR1BvaW50KgpAQCAtMjM0MCwxMCArMjI2OSwxMCBA
QCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9pbW11dGFibGVfcG9pbnQoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTVkdQ
b2ludD4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT5pbW11dGFibGVQb2ludCgpKTsKLSAgICBX
ZWJLaXRET01TVkdQb2ludCogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJl
dHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U1ZHUG9pbnQ+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT5pbW11dGFibGVQb2ludCgpKTsKKyAgICBXZWJLaXRET01TVkdQb2ludCogcmVz
dWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogdm9pZApAQCAtMjM1MSwxNCArMjI4MCwxNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF9pbW11dGFibGVfcG9pbnQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NU1ZH
UG9pbgogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6U1ZH
UG9pbnQgKiBjb252ZXJ0ZWRfdmFsdWUgPSBOVUxMOwotICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7
Ci0gICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgICAg
IGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX3ZhbHVlKTsKKyAgICBXZWJDb3JlOjpTVkdQb2lu
dCogY29udmVydGVkVmFsdWUgPSAwOworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBjb252ZXJ0
ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwo
Y29udmVydGVkVmFsdWUpOwogICAgIH0KLSAgICBpdGVtLT5zZXRJbW11dGFibGVQb2ludChjb252
ZXJ0ZWRfdmFsdWUpOworICAgIGl0ZW0tPnNldEltbXV0YWJsZVBvaW50KGNvbnZlcnRlZFZhbHVl
KTsKIH0KIAogZ2ludApAQCAtMjM2Niw5ICsyMjk1LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfc3RyYXdiZXJyeShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnaW50IHJlcyA9IGl0ZW0tPmJsdWViZXJyeSgpOwotICAgIHJldHVybiByZXM7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnaW50IHJl
c3VsdCA9IGl0ZW0tPmJsdWViZXJyeSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQK
QEAgLTIzNzYsNyArMjMwNSw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmF3YmVycnko
V2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludCB2YWx1ZSkKIHsKICAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldEJs
dWViZXJyeSh2YWx1ZSk7CiB9CiAKQEAgLTIzODUsOSArMjMxNCw5IEBAIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3N0cmljdF9mbG9hdChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnZmxvYXQgcmVzID0gaXRlbS0+c3RyaWN0RmxvYXQoKTsKLSAgICByZXR1
cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ2Zsb2F0IHJlc3VsdCA9IGl0ZW0tPnN0cmljdEZsb2F0KCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogdm9pZApAQCAtMjM5NSw3ICsyMzI0LDcgQEAgd2Via2l0X2RvbV90ZXN0X29i
al9zZXRfc3RyaWN0X2Zsb2F0KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdmbG9hdCB2YWx1ZSkK
IHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIGl0ZW0tPnNldFN0cmljdEZsb2F0KHZhbHVlKTsKIH0KIApAQCAtMjQwNCw5ICsy
MzMzLDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfZGVzY3JpcHRpb24oV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9i
aiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzID0gaXRlbS0+ZGVz
Y3JpcHRpb24oKTsKLSAgICByZXR1cm4gcmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+ZGVzY3JpcHRp
b24oKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBnbG9uZwpAQCAtMjQxNCw5ICsyMzQzLDkg
QEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfaWQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzID0gaXRlbS0+aWQoKTsKLSAgICByZXR1cm4g
cmVzOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+aWQoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2
b2lkCkBAIC0yNDI0LDcgKzIzNTMsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9pZChXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSkKIHsKICAgICBnX3JldHVybl9pZl9mYWls
KHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldElkKHZh
bHVlKTsKIH0KIApAQCAtMjQzMyw4ICsyMzYyLDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRf
aGFzaChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hh
ciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5oYXNoKCkpOwotICAgIHJldHVybiBy
ZXM7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5oYXNoKCkpOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCAx
MWZhYmE3MGRiMTcwNGNhNDlkYjBlNTU1ZWRhY2FhMjU1NzVlZjQwLi45ZmE5YWFkZWUzZmRmNzAx
OTUzZTJlZmQwNWZlY2YxZmE4YjA2MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5o
CkBAIC0yMSwxMSArMjEsMTAgQEAKICNpZm5kZWYgV2ViS2l0RE9NVGVzdE9ial9oCiAjZGVmaW5l
IFdlYktpdERPTVRlc3RPYmpfaAogCi0jaW5jbHVkZSAid2Via2l0L3dlYmtpdGRvbWRlZmluZXMu
aCIKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01P
YmplY3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgotI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01PYmplY3QuaCIKLQorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkb21kZWZp
bmVzLmg+CiAKIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JK
ICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3R5cGUoKSkKQEAgLTU5LDE1ICs1
OCwxNSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpOwogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJn
czoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCi0gKiBAaW50X2FyZzogQSAjZ2xvbmcK
LSAqIEBzdHJfYXJnOiBBICNnY2hhcgotICogQG9ial9hcmc6IEEgI1dlYktpdERPTVRlc3RPYmoK
KyAqIEBpbnRBcmc6IEEgI2dsb25nCisgKiBAc3RyQXJnOiBBICNnY2hhcgorICogQG9iakFyZzog
QSAjV2ViS2l0RE9NVGVzdE9iagogICoKICAqIFJldHVybnM6CiAgKgogKiovCiBXRUJLSVRfQVBJ
IHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGdsb25nIGludF9hcmcsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBXZWJL
aXRET01UZXN0T2JqKiBvYmpfYXJnKTsKK3dlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rf
d2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGludEFyZywgY29uc3QgZ2No
YXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKTsKIAogLyoqCiAgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2ludF9tZXRob2Q6CkBAIC04MiwxNSArODEsMTUgQEAgd2Via2l0X2RvbV90
ZXN0X29ial9pbnRfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogLyoqCiAgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2ludF9tZXRob2Rfd2l0aF9hcmdzOgogICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKLSAqIEBpbnRfYXJnOiBBICNnbG9uZwotICogQHN0cl9hcmc6IEEgI2djaGFy
Ci0gKiBAb2JqX2FyZzogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGludEFyZzogQSAjZ2xvbmcK
KyAqIEBzdHJBcmc6IEEgI2djaGFyCisgKiBAb2JqQXJnOiBBICNXZWJLaXRET01UZXN0T2JqCiAg
KgogICogUmV0dXJuczoKICAqCiAqKi8KIFdFQktJVF9BUEkgZ2xvbmcKLXdlYmtpdF9kb21fdGVz
dF9vYmpfaW50X21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcg
aW50X2FyZywgY29uc3QgZ2NoYXIqIHN0cl9hcmcsIFdlYktpdERPTVRlc3RPYmoqIG9ial9hcmcp
Oword2Via2l0X2RvbV90ZXN0X29ial9pbnRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnbG9uZyBpbnRBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRl
c3RPYmoqIG9iakFyZyk7CiAKIC8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9k
OgpAQCAtMTA1LDM5ICsxMDQsMzkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYpOwogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29ial9t
ZXRob2Rfd2l0aF9hcmdzOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKLSAqIEBpbnRf
YXJnOiBBICNnbG9uZwotICogQHN0cl9hcmc6IEEgI2djaGFyCi0gKiBAb2JqX2FyZzogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICogQGludEFyZzogQSAjZ2xvbmcKKyAqIEBzdHJBcmc6IEEgI2djaGFy
CisgKiBAb2JqQXJnOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKgogICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOgogICoKICoqLwogV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgotd2Via2l0
X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBnbG9uZyBpbnRfYXJnLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiog
b2JqX2FyZyk7Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29ial9tZXRob2Rfd2l0aF9hcmdzKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGludEFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2Vi
S2l0RE9NVGVzdE9iaiogb2JqQXJnKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21l
dGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJvd3M6CiAgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagotICogQHN0cl9hcmc6IEEgI2djaGFyCi0gKiBAb2JqX2FyZzogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICogQHN0ckFyZzogQSAjZ2NoYXIKKyAqIEBvYmpBcmc6IEEgI1dlYktp
dERPTVRlc3RPYmoKICAqIEBlcnJvcjogI0dFcnJvcgogICoKICAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKToKICAqCiAqKi8KIFdFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKLXdlYmtpdF9k
b21fdGVzdF9vYmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3NfYW5kX3Rocm93cyhXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9i
aiogb2JqX2FyZywgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rf
dGhhdF9yZXF1aXJlc19hbGxfYXJnc19hbmRfdGhyb3dzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZywgR0Vycm9yKiog
ZXJyb3IpOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2VyaWFsaXplZF92YWx1ZToK
ICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCi0gKiBAc2VyaWFsaXplZF9hcmc6IEEgI1dl
YktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQorICogQHNlcmlhbGl6ZWRBcmc6IEEgI1dlYktp
dERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQogICoKICAqIFJldHVybnM6CiAgKgogKiovCiBXRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2VyaWFsaXplZF92YWx1ZShXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6
ZWRfYXJnKTsKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2VyaWFsaXplZF92YWx1ZShXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRB
cmcpOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfaWRiX2tleToKQEAgLTE3MSw3ICsx
NzAsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29wdGlvbnNfb2JqZWN0KFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIFdlYktpdERPTURpY3Rpb25hcnkqCiAgKgogKiovCiBXRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIEdFcnJvciAqKmVycm9yKTsKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dp
dGhfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9yKTsKIAog
LyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX3ZvaWQ6CkBAIC0y
MDIsNyArMjAxLDcgQEAgd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9zdGF0ZV9vYmoo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAgKgogKiovCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfc3RhdGVfdm9pZF9leGNlcHRpb24oV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial93aXRo
X3NjcmlwdF9zdGF0ZV92b2lkX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJy
b3IqKiBlcnJvcik7CiAKIC8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9z
dGF0ZV9vYmpfZXhjZXB0aW9uOgpAQCAtMjEzLDcgKzIxMiw3IEBAIHdlYmtpdF9kb21fdGVzdF9v
Ympfd2l0aF9zY3JpcHRfc3RhdGVfdm9pZF9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgR0VyCiAgKgogKiovCiBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCi13ZWJraXRfZG9t
X3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX29ial9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial93aXRoX3Njcmlw
dF9zdGF0ZV9vYmpfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVy
cm9yKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlv
bl9jb250ZXh0OgpAQCAtMjQ0LDcgKzI0Myw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9z
Y3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZShXZWJLaXRET01UZXN0CiAg
KgogKiovCiBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCi13ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfb2JqX2V4Y2Vw
dGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IgKiplcnJvcik7Cit3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVf
b2JqX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcik7CiAK
IC8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4
dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzOgpAQCAtMjcwLDE5ICsyNjksMTkgQEAgd2Vi
a2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9hcmcoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgZ2xvbmcgb3B0KTsKIC8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rf
d2l0aF9ub25fb3B0aW9uYWxfYXJnX2FuZF9vcHRpb25hbF9hcmc6CiAgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagotICogQG5vbl9vcHQ6IEEgI2dsb25nCisgKiBAbm9uT3B0OiBBICNnbG9u
ZwogICogQG9wdDogQSAjZ2xvbmcKICAqCiAgKiBSZXR1cm5zOgogICoKICoqLwogV0VCS0lUX0FQ
SSB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdf
YW5kX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBub25fb3B0LCBn
bG9uZyBvcHQpOword2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxf
YXJnX2FuZF9vcHRpb25hbF9hcmcoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbm9uT3B0
LCBnbG9uZyBvcHQpOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhf
bm9uX29wdGlvbmFsX2FyZ19hbmRfdHdvX29wdGlvbmFsX2FyZ3M6CiAgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagotICogQG5vbl9vcHQ6IEEgI2dsb25nCisgKiBAbm9uT3B0OiBBICNnbG9u
ZwogICogQG9wdDE6IEEgI2dsb25nCiAgKiBAb3B0MjogQSAjZ2xvbmcKICAqCkBAIC0yOTAsNyAr
Mjg5LDcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJn
X2FuZF9vcHRpb25hbF9hcmcoV2ViS2l0RE9NVGVzdE8KICAqCiAqKi8KIFdFQktJVF9BUEkgdm9p
ZAotd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJnX2FuZF90
d29fb3B0aW9uYWxfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBub25fb3B0LCBn
bG9uZyBvcHQxLCBnbG9uZyBvcHQyKTsKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhf
bm9uX29wdGlvbmFsX2FyZ19hbmRfdHdvX29wdGlvbmFsX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2xvbmcgbm9uT3B0LCBnbG9uZyBvcHQxLCBnbG9uZyBvcHQyKTsKIAogLyoqCiAgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX29wdGlvbmFsX3N0cmluZzoKQEAgLTQ5NSw3
ICs0OTQsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29yYW5nZShXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKTsKICAqCiAqKi8KIFdFQktJVF9BUEkgV2ViS2l0RE9NYm9vbCoKLXdlYmtpdF9kb21fdGVz
dF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFy
KiBzdHIsIGdmbG9hdCBhLCBnaW50IGIsIEdFcnJvciAqKmVycm9yKTsKK3dlYmtpdF9kb21fdGVz
dF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFy
KiBzdHIsIGdmbG9hdCBhLCBnaW50IGIsIEdFcnJvcioqIGVycm9yKTsKIAogLyoqCiAgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfaW50X2F0dHI6CkBAIC05MTQsNyArOTEzLDcg
QEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX2N1c3RvbV91cmxfYXR0cihXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBjb25zdAogICoKICoqLwogV0VCS0lUX0FQSSBnbG9uZwotd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24oV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial9nZXRf
YXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9y
KiogZXJyb3IpOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9n
ZXR0ZXJfZXhjZXB0aW9uOgpAQCAtOTI2LDcgKzkyNSw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdF
cnJvCiAgKgogKiovCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0
dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZh
bHVlLCBHRXJyb3IgKiplcnJvcik7Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhf
Z2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSwgR0Vy
cm9yKiogZXJyb3IpOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0
aF9zZXR0ZXJfZXhjZXB0aW9uOgpAQCAtOTQ4LDcgKzk0Nyw3IEBAIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X2F0dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYp
OwogICoKICoqLwogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRy
X3dpdGhfc2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1
ZSwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX3Nl
dHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJv
cioqIGVycm9yKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0
cl93aXRoX2dldHRlcl9leGNlcHRpb246CkBAIC05NTksNyArOTU4LDcgQEAgd2Via2l0X2RvbV90
ZXN0X29ial9zZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2xvbmcKICAqCiAqKi8KIFdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9zdHJpbmdfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyaW5n
X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJv
cioqIGVycm9yKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0
cl93aXRoX2dldHRlcl9leGNlcHRpb246CkBAIC05NzEsNyArOTcwLDcgQEAgd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfc3RyaW5nX2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYKICAqCiAqKi8KIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV90ZXN0X29i
al9zZXRfc3RyaW5nX2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90
ZXN0X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpOwogCiAvKioK
ICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmluZ19hdHRyX3dpdGhfc2V0dGVyX2V4Y2Vw
dGlvbjoKQEAgLTk5Myw3ICs5OTIsNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdf
YXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZgogICoKICoq
LwogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cl93
aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIq
IHZhbHVlLCBHRXJyb3IgKiplcnJvcik7Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdf
YXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3Qg
Z2NoYXIqIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7CiAKIC8qKgogICogd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlOgpAQCAtMTA0Niw3ICsxMDQ1LDcg
QEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoKICAqCiAqKi8KIFdFQktJVF9BUEkgV2ViS2l0RE9N
VGVzdE9iaioKLXdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJp
YnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcik7CiAKIC8qKgogICogd2Via2l0
X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlczoKQEAg
LTEwNTgsNyArMTA1Nyw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X3N0
YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsCiAgKgogKiovCiBXRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0
dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiog
dmFsdWUsIEdFcnJvciAqKmVycm9yKTsKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2Ny
aXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0
RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvcioqIGVycm9yKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFp
c2VzOgpAQCAtMTA2OSw3ICsxMDY4LDcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9z
Y3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWwKICAqCiAq
Ki8KIFdFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKLXdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial9nZXRf
d2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcik7CiAKIC8qKgogICogd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlczoK
QEAgLTEwODEsNyArMTA4MCw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0
X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NCiAgKgogKiovCiBX
RUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1
dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2Vi
S2l0RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKK3dlYmtpdF9kb21fdGVzdF9v
Ympfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvcioqIGVy
cm9yKTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVj
dXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZToKQEAgLTExMTMsNyArMTEx
Miw3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250
ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlCiAgKgogKiovCiBXRUJLSVRfQVBJIFdlYktp
dERPTVRlc3RPYmoqCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRp
b25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOword2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0
aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFp
c2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9yKTsKIAogLyoqCiAgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRf
c2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXM6CkBAIC0xMTI1LDcgKzExMjQsNyBAQCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2Ny
aXB0X3N0YXRlX2F0dHJpYnV0ZQogICoKICoqLwogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0
YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVz
dE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dp
dGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3Jh
aXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vy
cm9yKiogZXJyb3IpOwogCiAvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2Ny
aXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFjZXNfYXR0cmli
dXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9ialByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmpQcml2YXRlLmgKaW5kZXggMmY3
YWUyYWVhODdlOGYxNzA1NmIyZmQ2OGVjNTk1NGRlZWY1NGI2YS4uOThlNGEzMTQ5YTY1ZDcxMDUx
OTM1ZDllZTNhMGIyYzI5Mzc4NGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9ialByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqUHJpdmF0ZS5oCkBAIC0xOCwyNCArMTgsMTcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICovCiAKLSNpZm5kZWYgV0VCX0tJVF9ET01fVEVTVF9PQkpfUFJJVkFURV9ICi0j
ZGVmaW5lIFdFQl9LSVRfRE9NX1RFU1RfT0JKX1BSSVZBVEVfSAorI2lmbmRlZiBXZWJLaXRET01U
ZXN0T2JqUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RPYmpQcml2YXRlX2gKIAorI2lu
Y2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdl
YmtpdC9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlICJUZXN0T2JqLmgiCi0KIAogbmFtZXNw
YWNlIFdlYktpdCB7Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiAqCi0gICAgd3JhcFRlc3RPYmooV2Vi
Q29yZTo6VGVzdE9iaiAqY29yZU9iamVjdCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0T2JqICoKLSAg
ICBjb3JlKFdlYktpdERPTVRlc3RPYmogKnJlcXVlc3QpOwotCi0gICAgV2ViS2l0RE9NVGVzdE9i
aioKLSAgICBraXQoV2ViQ29yZTo6VGVzdE9iaiogbm9kZSk7Ci0KK1dlYktpdERPTVRlc3RPYmoq
IHdyYXBUZXN0T2JqKFdlYkNvcmU6OlRlc3RPYmoqKTsKK1dlYkNvcmU6OlRlc3RPYmoqIGNvcmUo
V2ViS2l0RE9NVGVzdE9iaiogcmVxdWVzdCk7CitXZWJLaXRET01UZXN0T2JqKiBraXQoV2ViQ29y
ZTo6VGVzdE9iaiogbm9kZSk7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8qIFdF
Ql9LSVRfRE9NX1RFU1RfT0JKX1BSSVZBVEVfSCAqLworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RP
YmpQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggZGE5NTlk
ZGRiOGNkMjM3MzU0MzY4NGEyMjZmODEyNzM4NzQyZTViMy4uYmU2YTM4MTM5OWE3NjFhMDNkYjYw
NmQyZDM2MzU5MDY0OTA2ZjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAg
LTE4LDExICsxOCwxMSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAot
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIgorCisjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi0jaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlICJET01PYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCIKQEAgLTM0LDEzICszNCwxMyBAQAogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01BcnJheVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVByaXZhdGUuaCIKLSNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGRl
ZmluZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndl
YmtpdG1hcnNoYWwuaCIKLQotI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02OCwx
NCArNjgsMTEgQEAgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSog
d3JhcFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmYKIHsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKIAotICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRo
YW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysr
IG9iamVjdAotICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUg
dGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KLSAg
ICAgKi8KKyAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0
IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAvLyBpbiBh
IEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBm
b3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCiAgICAgY29yZU9iamVjdC0+cmVmKCk7CiAKLSAgICBy
ZXR1cm4gIFdFQktJVF9ET01fVEVTVF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0Uo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVF
X0lOVEVSRkFDRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworICAgIHJldHVybiBXRUJLSVRf
RE9NX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9ET01fVEVTVF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0UsICJj
b3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkBAIC05NSw2NCArOTIsNjAgQEAgZW51bSB7CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2ZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKIHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0g
ICAgV2ViS2l0RE9NT2JqZWN0KiBkb21fb2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0
KTsKKyAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9i
amVjdCk7CiAgICAgCi0gICAgaWYgKGRvbV9vYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAg
V2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY29yZU9iamVjdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ug
Kj4oZG9tX29iamVjdC0+Y29yZU9iamVjdCk7CisgICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVj
dCkgeworICAgICAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7CiAKICAgICAgICAgV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwogICAgICAgICBjb3JlT2JqZWN0
LT5kZXJlZigpOwogCi0gICAgICAgIGRvbV9vYmplY3QtPmNvcmVPYmplY3QgPSBOVUxMOworICAg
ICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFs
dWVfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5
SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBzd2l0Y2ggKHByb3BfaWQpIHsK
KyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQs
IHBzcGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCiAKLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3Bl
YyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRf
dmFsdWVfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3Bl
cnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBXZWJLaXRET01UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX1NFUklBTElaRURf
U0NSSVBUX1ZBTFVFX0lOVEVSRkFDRShvYmplY3QpOwogICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9WQUxVRToKLSAgICB7CisgICAg
c3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX1ZBTFVFOiB7CiAgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHB0ciA9IGNvcmVTZWxmLT52YWx1
ZSgpOwogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5n
ZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQUk9QX1JFQURPTkxZX1ZB
TFVFOgotICAgIHsKKyAgICBjYXNlIFBST1BfUkVBRE9OTFlfVkFMVUU6IHsKICAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHRyID0gY29yZVNlbGYtPnJlYWRv
bmx5VmFsdWUoKTsKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6Omtp
dChwdHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9DQUNI
RURfVkFMVUU6Ci0gICAgeworICAgIGNhc2UgUFJPUF9DQUNIRURfVkFMVUU6IHsKICAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHRyID0gY29yZVNlbGYtPmNh
Y2hlZFZhbHVlKCk7CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0Ojpr
aXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfQ0FD
SEVEX1JFQURPTkxZX1ZBTFVFOgotICAgIHsKKyAgICBjYXNlIFBST1BfQ0FDSEVEX1JFQURPTkxZ
X1ZBTFVFOiB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHB0ciA9IGNvcmVTZWxmLT5jYWNoZWRSZWFkb25seVZhbHVlKCk7CiAgICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQpAQCAtMTY3LDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfY29uc3RydWN0ZWQoR09i
amVjCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1
ZV9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MgKmdvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgR09iamVjdENsYXNz
KiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwogICAgIGdvYmpl
Y3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFs
dWVfaW50ZXJmYWNlX2ZpbmFsaXplOwogICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0g
d2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9zZXRfcHJv
cGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rf
c2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKQEAgLTIxMCwy
NSArMjAzLDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3Njcmlw
dF92YWx1ZV9pbnRlcmZhY2VfaW5pdChXZWJLaXRET01UZXN0CiB9CiAKIHZvaWQKLXdlYmtpdF9k
b21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfYWNjZXB0X3RyYW5zZmVy
X2xpc3QoV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogc2VsZiwg
V2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhLCBXZWJLaXRET01BcnJheSogdHJh
bnNmZXJfbGlzdCkKK3dlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRl
cmZhY2VfYWNjZXB0X3RyYW5zZmVyX2xpc3QoV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogc2VsZiwgV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRh
LCBXZWJLaXRET01BcnJheSogdHJhbnNmZXJMaXN0KQogewogI2lmIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGF0YSk7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbCh0cmFuc2Zlcl9saXN0KTsKLSAgICBXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUgKiBjb252ZXJ0ZWRfZGF0YSA9IE5VTEw7Ci0gICAgaWYgKGRhdGEgIT0gTlVM
TCkgewotICAgICAgICBjb252ZXJ0ZWRfZGF0YSA9IFdlYktpdDo6Y29yZShkYXRhKTsKLSAgICAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfZGF0YSk7CisgICAgZ19yZXR1cm5faWZfZmFp
bCh0cmFuc2Zlckxpc3QpOworICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogY29u
dmVydGVkRGF0YSA9IDA7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgY29udmVydGVkRGF0YSA9
IFdlYktpdDo6Y29yZShkYXRhKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRE
YXRhKTsKICAgICB9Ci0gICAgV2ViQ29yZTo6QXJyYXkgKiBjb252ZXJ0ZWRfdHJhbnNmZXJfbGlz
dCA9IE5VTEw7Ci0gICAgaWYgKHRyYW5zZmVyX2xpc3QgIT0gTlVMTCkgewotICAgICAgICBjb252
ZXJ0ZWRfdHJhbnNmZXJfbGlzdCA9IFdlYktpdDo6Y29yZSh0cmFuc2Zlcl9saXN0KTsKLSAgICAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfdHJhbnNmZXJfbGlzdCk7CisgICAgV2ViQ29y
ZTo6QXJyYXkqIGNvbnZlcnRlZFRyYW5zZmVyTGlzdCA9IDA7CisgICAgaWYgKHRyYW5zZmVyTGlz
dCkgeworICAgICAgICBjb252ZXJ0ZWRUcmFuc2Zlckxpc3QgPSBXZWJLaXQ6OmNvcmUodHJhbnNm
ZXJMaXN0KTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRUcmFuc2Zlckxpc3Qp
OwogICAgIH0KLSAgICBpdGVtLT5hY2NlcHRUcmFuc2Zlckxpc3QoY29udmVydGVkX2RhdGEsIGNv
bnZlcnRlZF90cmFuc2Zlcl9saXN0KTsKKyAgICBpdGVtLT5hY2NlcHRUcmFuc2Zlckxpc3QoY29u
dmVydGVkRGF0YSwgY29udmVydGVkVHJhbnNmZXJMaXN0KTsKICNlbHNlCiAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCkBAIC0yNDEsMzIgKzIzNCwzMiBAQCB3ZWJr
aXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX211bHRpX3RyYW5z
ZmVyX2xpc3QoV2ViS2l0RE9NVAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikKICAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3Jl
OjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZmlyc3QpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwodHgpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2Vjb25kKTsKICAgICBnX3JldHVybl9pZl9m
YWlsKHR4eCk7Ci0gICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlICogY29udmVydGVk
X2ZpcnN0ID0gTlVMTDsKLSAgICBpZiAoZmlyc3QgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0
ZWRfZmlyc3QgPSBXZWJLaXQ6OmNvcmUoZmlyc3QpOwotICAgICAgICBnX3JldHVybl9pZl9mYWls
KGNvbnZlcnRlZF9maXJzdCk7CisgICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBj
b252ZXJ0ZWRGaXJzdCA9IDA7CisgICAgaWYgKGZpcnN0KSB7CisgICAgICAgIGNvbnZlcnRlZEZp
cnN0ID0gV2ViS2l0Ojpjb3JlKGZpcnN0KTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252
ZXJ0ZWRGaXJzdCk7CiAgICAgfQotICAgIFdlYkNvcmU6OkFycmF5ICogY29udmVydGVkX3R4ID0g
TlVMTDsKLSAgICBpZiAodHggIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfdHggPSBXZWJL
aXQ6OmNvcmUodHgpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF90eCk7Cisg
ICAgV2ViQ29yZTo6QXJyYXkqIGNvbnZlcnRlZFR4ID0gMDsKKyAgICBpZiAodHgpIHsKKyAgICAg
ICAgY29udmVydGVkVHggPSBXZWJLaXQ6OmNvcmUodHgpOworICAgICAgICBnX3JldHVybl9pZl9m
YWlsKGNvbnZlcnRlZFR4KTsKICAgICB9Ci0gICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlICogY29udmVydGVkX3NlY29uZCA9IE5VTEw7Ci0gICAgaWYgKHNlY29uZCAhPSBOVUxMKSB7
Ci0gICAgICAgIGNvbnZlcnRlZF9zZWNvbmQgPSBXZWJLaXQ6OmNvcmUoc2Vjb25kKTsKLSAgICAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfc2Vjb25kKTsKKyAgICBXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIGNvbnZlcnRlZFNlY29uZCA9IDA7CisgICAgaWYgKHNlY29uZCkg
eworICAgICAgICBjb252ZXJ0ZWRTZWNvbmQgPSBXZWJLaXQ6OmNvcmUoc2Vjb25kKTsKKyAgICAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRTZWNvbmQpOwogICAgIH0KLSAgICBXZWJDb3Jl
OjpBcnJheSAqIGNvbnZlcnRlZF90eHggPSBOVUxMOwotICAgIGlmICh0eHggIT0gTlVMTCkgewot
ICAgICAgICBjb252ZXJ0ZWRfdHh4ID0gV2ViS2l0Ojpjb3JlKHR4eCk7Ci0gICAgICAgIGdfcmV0
dXJuX2lmX2ZhaWwoY29udmVydGVkX3R4eCk7CisgICAgV2ViQ29yZTo6QXJyYXkqIGNvbnZlcnRl
ZFR4eCA9IDA7CisgICAgaWYgKHR4eCkgeworICAgICAgICBjb252ZXJ0ZWRUeHggPSBXZWJLaXQ6
OmNvcmUodHh4KTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRUeHgpOwogICAg
IH0KLSAgICBpdGVtLT5tdWx0aVRyYW5zZmVyTGlzdChjb252ZXJ0ZWRfZmlyc3QsIGNvbnZlcnRl
ZF90eCwgY29udmVydGVkX3NlY29uZCwgY29udmVydGVkX3R4eCk7CisgICAgaXRlbS0+bXVsdGlU
cmFuc2Zlckxpc3QoY29udmVydGVkRmlyc3QsIGNvbnZlcnRlZFR4LCBjb252ZXJ0ZWRTZWNvbmQs
IGNvbnZlcnRlZFR4eCk7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNv
bmRpdGlvbjIiKQpAQCAtMjc5LDE0ICsyNzIsMTQgQEAgd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6
ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfdmFsdWUoV2ViS2l0RE9NVGVzdFNlcmlhbGkK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPnZhbHVlKCkp
OwotICAgIFdlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzID0gV2ViS2l0OjpraXQo
Z19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBnb2JqZWN0UmVzdWx0ID0gV1RG
OjpnZXRQdHIoaXRlbS0+dmFsdWUoKSk7CisgICAgV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRp
b24yIikKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCiB9CiAKQEAgLTI5NiwxNCArMjg5
LDE0IEBAIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2Vf
c2V0X3ZhbHVlKFdlYktpdERPTVRlc3RTZXJpYWxpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8
IEVOQUJMRShDb25kaXRpb24yKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlICogY29udmVydGVkX3ZhbHVlID0gTlVMTDsKLSAg
ICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBXZWJLaXQ6
OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF92YWx1ZSk7
CisgICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7
CisgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3Jl
KHZhbHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7CiAgICAg
fQotICAgIGl0ZW0tPnNldFZhbHVlKGNvbnZlcnRlZF92YWx1ZSk7CisgICAgaXRlbS0+c2V0VmFs
dWUoY29udmVydGVkVmFsdWUpOwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJDb25kaXRpb24yIikKQEAgLTMxNiwxNCArMzA5LDE0IEBAIHdlYmtpdF9kb21fdGVzdF9zZXJp
YWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfZ2V0X3JlYWRvbmx5X3ZhbHVlKFdlYktpdERP
TVRlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT5yZWFk
b25seVZhbHVlKCkpOwotICAgIFdlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzID0g
V2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBnb2JqZWN0
UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cmVhZG9ubHlWYWx1ZSgpKTsKKyAgICBXZWJLaXRE
T01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1
bHQuZ2V0KCkpOworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAw
OwogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8K
IH0KIApAQCAtMzMzLDE0ICszMjYsMTQgQEAgd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2Ny
aXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfY2FjaGVkX3ZhbHVlKFdlYktpdERPTVRlc3QKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNhY2hlZFZhbHVlKCkp
OwotICAgIFdlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzID0gV2ViS2l0OjpraXQo
Z19yZXMuZ2V0KCkpOwotICAgIHJldHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBnb2JqZWN0UmVzdWx0ID0gV1RG
OjpnZXRQdHIoaXRlbS0+Y2FjaGVkVmFsdWUoKSk7CisgICAgV2ViS2l0RE9NU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24yIikKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBF
TkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCiB9CiAKQEAgLTM1MCwx
NCArMzQzLDE0IEBAIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRl
cmZhY2Vfc2V0X2NhY2hlZF92YWx1ZShXZWJLaXRET01UZXN0CiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0g
ICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlICogY29udmVydGVkX3ZhbHVlID0gTlVM
TDsKLSAgICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBX
ZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF92
YWx1ZSk7CisgICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBjb252ZXJ0ZWRWYWx1
ZSA9IDA7CisgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0
Ojpjb3JlKHZhbHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7
CiAgICAgfQotICAgIGl0ZW0tPnNldENhY2hlZFZhbHVlKGNvbnZlcnRlZF92YWx1ZSk7CisgICAg
aXRlbS0+c2V0Q2FjaGVkVmFsdWUoY29udmVydGVkVmFsdWUpOwogI2Vsc2UKICAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKQEAgLTM3MCwxNCArMzYzLDE0IEBAIHdl
YmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfZ2V0X2NhY2hl
ZF9yZWFkb25seV92YWx1ZShXZWJLCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShD
b25kaXRpb24yKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZ19yZXMgPSBXVEY6
OmdldFB0cihpdGVtLT5jYWNoZWRSZWFkb25seVZhbHVlKCkpOwotICAgIFdlYktpdERPTVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOwotICAgIHJl
dHVybiByZXM7CisgICAgV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y2FjaGVk
UmVhZG9ubHlWYWx1ZSgpKTsKKyAgICBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJl
c3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiByZXN1
bHQ7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlv
bjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQot
ICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAwOwogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5oCmluZGV4IDVkMTVjZDMzMDlhOTQ5YThkN2FmN2YzNjEzMTZkMGM2NjkxNzMyMTcuLjM0ZmM4
ZWI0ZjY2MjEzZDUwNTk5MDZkZmNhODdhODFlNzQ2NjVmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgKQEAgLTIxLDExICsyMSwxMCBAQAogI2lmbmRlZiBXZWJLaXRET01UZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX2gKICNkZWZpbmUgV2ViS2l0RE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV9oCiAKLSNpbmNsdWRlICJ3ZWJraXQvd2Via2l0ZG9tZGVm
aW5lcy5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktp
dERPTU9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+Ci0jaW5jbHVk
ZSAid2Via2l0L1dlYktpdERPTU9iamVjdC5oIgotCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRv
bWRlZmluZXMuaD4KIAogR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fVEVT
VF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0UgICAgICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfdHlwZSgpKQpAQCAt
NTAsMTMgKzQ5LDEzIEBAIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9p
bnRlcmZhY2VfZ2V0X3R5cGUgKHZvaWQpOwogICogd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRf
c2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9hY2NlcHRfdHJhbnNmZXJfbGlzdDoKICAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlCiAgKiBAZGF0YTog
QSAjV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlCi0gKiBAdHJhbnNmZXJfbGlzdDogQSAj
V2ViS2l0RE9NQXJyYXkKKyAqIEB0cmFuc2Zlckxpc3Q6IEEgI1dlYktpdERPTUFycmF5CiAgKgog
ICogUmV0dXJuczoKICAqCiAqKi8KIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV90ZXN0X3Nl
cmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9hY2NlcHRfdHJhbnNmZXJfbGlzdChXZWJL
aXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBzZWxmLCBXZWJLaXRET01T
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEsIFdlYktpdERPTUFycmF5KiB0cmFuc2Zlcl9saXN0
KTsKK3dlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfYWNj
ZXB0X3RyYW5zZmVyX2xpc3QoV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogc2VsZiwgV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhLCBXZWJLaXRE
T01BcnJheSogdHJhbnNmZXJMaXN0KTsKIAogLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFs
aXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX211bHRpX3RyYW5zZmVyX2xpc3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByaXZhdGUuaAppbmRleCAzNTMzYzI2ODFjNWE1M2M2MmEx
MTc1M2FkZWM1OGU1YTc1YTc4ZTFmLi5mY2JlYTA3NjE3ODU0ODlhZTZjMWQ2OTA1NjJhNTQyNDRh
ZDc4NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlLmgKQEAgLTE4
LDI3ICsxOCwyMCBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2lm
bmRlZiBXRUJfS0lUX0RPTV9URVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRV9Q
UklWQVRFX0gKLSNkZWZpbmUgV0VCX0tJVF9ET01fVEVTVF9TRVJJQUxJWkVEX1NDUklQVF9WQUxV
RV9JTlRFUkZBQ0VfUFJJVkFURV9ICisjaWZuZGVmIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByaXZhdGVfaAogCisjaW5jbHVkZSAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgIlRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaCIKLQogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgV2ViS2l0RE9NVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSAqCi0gICAgd3JhcFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSAqY29yZU9iamVjdCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlICoKLSAgICBjb3JlKFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UgKnJlcXVlc3QpOwotCi0gICAgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSoKLSAgICBraXQoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogbm9kZSk7Ci0KK1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UqIHdyYXBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKFdlYkNv
cmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqKTsKK1dlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogcmVxdWVzdCk7CitXZWJLaXRET01UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBraXQoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogbm9kZSk7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8q
IEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KIAotI2VuZGlmIC8q
IFdFQl9LSVRfRE9NX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFX1BSSVZB
VEVfSCAqLworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcml2YXRlX2ggKi8K
</data>
<flag name="commit-queue"
          id="140685"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>