<?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>233065</bug_id>
          
          <creation_ts>2021-11-12 13:19:41 -0800</creation_ts>
          <short_desc>REGRESSION(r285639): Causes Geolocation test crashes</short_desc>
          <delta_ts>2021-11-12 13:23:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232387</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814589</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-11-12 13:19:41 -0800</bug_when>
    <thetext>https://commits.webkit.org/r285639 introduced a regression:
Causes Geolocation test crashes

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

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814596</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-12 13:22:55 -0800</bug_when>
    <thetext>Committed r285738 (244197@main): &lt;https://commits.webkit.org/244197@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444099.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814597</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-12 13:23:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/85355292&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444099</attachid>
            <date>2021-11-12 13:19:59 -0800</date>
            <delta_ts>2021-11-12 13:22:56 -0800</delta_ts>
            <desc>REVERT of r285639</desc>
            <filename>bug-233065-20211112131959.patch</filename>
            <type>text/plain</type>
            <size>116683</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgzNDA4MmNkOGMyNzI3
Mjc5ODFmZGU1MzU2NWNiYjgzMTUyOGI4MS4uZWQyYmM4ZjljOGM1ZDEzZmJmNGMxZmRiNTJhYWI5
NzI0MjQxN2FkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTEyICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI4NTYzOS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzA2NQorCisgICAgICAgIENhdXNlcyBHZW9sb2NhdGlvbiB0ZXN0IGNy
YXNoZXMKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkpTQ2FsbGJh
Y2tEYXRhIHNob3VsZCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IGZvciBlcnJvcnMKKyAgICAg
ICAgYW5kIGxpZmVjeWNsZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjM4NworICAgICAgICBodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9yMjg1
NjM5CisKIDIwMjEtMTEtMTIgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIEFkZCBMaXR0bGUtQ01TIHN1cHBvcnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNr
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNh
bGxiYWNrLmlkbAppbmRleCBjZjNhNWVhMjZlN2E0ODIyZGYxYTU2MzQ2MzRkYWMyNzU3YjVhODNj
Li40ZWQ2MzRiMTgyODgzOWU2ZWIxNGVkNzU4MjU1ODg2M2UyYmRjZjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaWRsCkBAIC0yNCw1ICsyNCw0IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1HRU9M
T0NBVElPTiwKLSAgICBTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaywKIF0gY2FsbGJhY2sgUG9zaXRp
b25FcnJvckNhbGxiYWNrID0gdW5kZWZpbmVkIChHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IgZXJy
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA4MmZlYjA3NTRjNWE0MjYwOTFmZTE5MzE1
NzhhYzgwMmFhNzMyMWYzLi5kNDZkODM4NTFiZDBhYTMxZTczZmRkNDM4NDdlZDI4MTcwZGYzOTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYg
bmFtZSwgUmVmPAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJBIHByb2Nlc3NvciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07
CiAKICAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gcHJvY2Vzc29yQ29udHJ1Y3Rv
ci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29y
PiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlUHJvY2Vzc29yKGNvbnN0IFN0cgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3Ig
PSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmdsb2Jh
bE9iamVjdCgpOwogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrIHsgZ2xvYmFsT2JqZWN0IH07CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEF1ZGlv
V29ya2xldFByb2Nlc3Nvcj4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZVByb2Nlc3Nv
cihjb25zdCBTdHIKICAgICBpZiAoIWpzUHJvY2Vzc29yKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGpzUHJvY2Vzc29yLT53cmFwcGVkKCkuc2V0UHJvY2Vzc0NhbGxiYWNrKGpzUHJv
Y2Vzc29yKTsKKyAgICBqc1Byb2Nlc3Nvci0+d3JhcHBlZCgpLnNldFByb2Nlc3NDYWxsYmFjayht
YWtlVW5pcXVlPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPihqc1Byb2Nlc3NvciwgZ2xvYmFsT2JqZWN0
KSk7CiAKICAgICByZXR1cm4gJmpzUHJvY2Vzc29yLT53cmFwcGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nv
ci5jcHAKaW5kZXggNzkzNDNiYWE3MzQ4MTdhOGVhMzQ4NWZmMGQzZDM0ZmYxMGNhNmJjNi4uNDhk
YzM2NjAyMzQ1ZTllOTUxNTUyZTI3YjQwYWViNzRiNDlhZTY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNw
cApAQCAtMjAxLDE0ICsyMDEsMTMgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldFByb2Nl
c3Nvcj4+IEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKFNjcmlwdEV4ZWMKICAgICBpZiAo
IWNvbnN0cnVjdGlvbkRhdGEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJObyBwZW5kaW5nIGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIHdvcmtsZXQgcHJvY2Vzc29y
Il9zIH07CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3Io
Y29udGV4dCwgKmNvbnN0cnVjdGlvbkRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
dWRpb1dvcmtsZXRQcm9jZXNzb3IoKmNvbnN0cnVjdGlvbkRhdGEpKTsKIH0KIAogQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yOjp+QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkgPSBkZWZhdWx0OwogCi1BdWRp
b1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nlc3NvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25E
YXRhJiBjb25zdHJ1Y3Rpb25EYXRhKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCi0gICAgLCBtX25hbWUoY29uc3RydWN0aW9uRGF0YS5uYW1lKCkpCitBdWRpb1dvcmts
ZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcihjb25zdCBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJiBjb25zdHJ1Y3Rpb25EYXRhKQorICAgIDogbV9uYW1lKGNv
bnN0cnVjdGlvbkRhdGEubmFtZSgpKQogICAgICwgbV9wb3J0KGNvbnN0cnVjdGlvbkRhdGEucG9y
dCgpKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMjM3LDcgKzIzNiw3IEBA
IGJvb2wgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
QXVkaW9CdXM+PiYgaW5wdXRzLCBWZWN0CiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0Zv
ckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogCiAgICAgQVNT
RVJUKG1fcHJvY2Vzc0NhbGxiYWNrKTsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdsb2JhbE9iamVj
dCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9wcm9jZXNzQ2FsbGJhY2stPmdsb2Jh
bE9iamVjdCgpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwogCkBAIC0yNDgsNyArMjQ3LDcgQEAgYm9vbCBBdWRpb1dvcmts
ZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0J1cz4+JiBpbnB1
dHMsIFZlY3QKICAgICBidWlsZEpTQXJndW1lbnRzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGlu
cHV0cywgb3V0cHV0cywgcGFyYW1WYWx1ZXNNYXApOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8gcmVzdWx0ID0gSlNDYWxsYmFja0Rh
dGE6Omludm9rZUNhbGxiYWNrKGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgYXNPYmplY3QobV9wcm9j
ZXNzQ2FsbGJhY2spLCBqc1VuZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc0NhbGxiYWNrLT5p
bnZva2VDYWxsYmFjayhqc1VuZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwpAQCAtMjYwLDkgKzI1OSw5IEBAIGJvb2wgQXVkaW9X
b3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9CdXM+PiYg
aW5wdXRzLCBWZWN0CiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oJmdsb2JhbE9iamVjdCk7
CiB9CiAKLXZvaWQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpzZXRQcm9jZXNzQ2FsbGJhY2soSlNP
YmplY3QqIHByb2Nlc3NDYWxsYmFjaykKK3ZvaWQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpzZXRQ
cm9jZXNzQ2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPiYmIHBy
b2Nlc3NDYWxsYmFjaykKIHsKLSAgICBtX3Byb2Nlc3NDYWxsYmFjayA9IHsgcHJvY2Vzc0NhbGxi
YWNrIH07CisgICAgbV9wcm9jZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHByb2Nlc3NDYWxsYmFjayk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oCmluZGV4IGM0ZmU3YmVm
ZGY3NTMzNTVmOTBhY2U0NDU1Mzg2YzdiOTMxYzMyYWEuLmZhOTdjY2Q4MmI1MDhhMzAxMjI5MTlj
ODIyYzI4MjhiMjdmYzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApAQCAtNTksMjEgKzU5LDE5IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgcHJvY2Vzcyhjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVzPj4m
IGlucHV0cywgVmVjdG9yPFJlZjxBdWRpb0J1cz4+JiBvdXRwdXRzLCBjb25zdCBIYXNoTWFwPFN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmxvYXRBcnJheT4+JiBwYXJhbVZhbHVlc01hcCwg
Ym9vbCYgdGhyZXdFeGNlcHRpb24pOwogCi0gICAgdm9pZCBzZXRQcm9jZXNzQ2FsbGJhY2soSlND
OjpKU09iamVjdCopOworICAgIHZvaWQgc2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0
cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4mJik7CiAKLSAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0
JiBwcm9jZXNzQ2FsbGJhY2tXcmFwcGVyKCkgeyByZXR1cm4gbV9wcm9jZXNzQ2FsbGJhY2s7IH0K
ICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBqc0lucHV0c1dyYXBwZXIoKSB7IHJldHVybiBt
X2pzSW5wdXRzOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYganNPdXRwdXRzV3JhcHBl
cigpIHsgcmV0dXJuIG1fanNPdXRwdXRzOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYg
anNQYXJhbVZhbHVlc1dyYXBwZXIoKSB7IHJldHVybiBtX2pzUGFyYW1WYWx1ZXM7IH0KIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsK
KyAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3QgQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YSYpOwogICAgIHZvaWQgYnVpbGRKU0FyZ3VtZW50cyhKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXJCYXNl
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0J1cz4+JiBpbnB1dHMsIFZlY3RvcjxSZWY8QXVk
aW9CdXM+PiYgb3V0cHV0cywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0Zsb2F0QXJyYXk+PiYgcGFyYW1WYWx1ZXNNYXApOwogCi0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIFN0cmluZyBtX25hbWU7CiAg
ICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7Ci0gICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBt
X3Byb2Nlc3NDYWxsYmFjazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJv
bmc+IG1fcHJvY2Vzc0NhbGxiYWNrOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9qc0lu
cHV0czsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fanNPdXRwdXRzOwogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV9qc1BhcmFtVmFsdWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3Bw
CmluZGV4IGI0OWJkMDBlMzk2OGQyNzU4MTI1YWU0MDFjZDYwOGQ5NzdkYTc3N2EuLmVlNGFjZTM1
MjA2MzM4YjgxOTE4ZDZkNjJhNGM0ZmYxNmZmN2JlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5j
cHAKQEAgLTM1LDcgKzM1LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgSlNB
dWRpb1dvcmtsZXRQcm9jZXNzb3I6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgYXV0byYgcHJvY2Vzc29yID0gd3JhcHBlZCgpOwotICAgIHByb2Nlc3Nv
ci5wcm9jZXNzQ2FsbGJhY2tXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vzc29y
LmpzSW5wdXRzV3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwogICAgIHByb2Nlc3Nvci5qc091dHB1
dHNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vzc29yLmpzUGFyYW1WYWx1ZXNX
cmFwcGVyKCkudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggNDhiY2Y1ZDM5ZDE2MDdmYzAzMGMwYzJjYWM2ZjEwZTNm
ZTE2ZWFkZi4uOTc0OGQwM2I2ODBlMTUwNjBmMTc2NWQyMTVmNzI1MGQ0ZDYwN2QxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBo
dHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2NhbGwtYS11c2VyLW9iamVjdHMtb3BlcmF0
aW9uCi1KU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBjYWxsYmFj
aywgSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFj
a1R5cGUgbWV0aG9kLCBQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52
b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNh
bGxiYWNrLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENh
bGxiYWNrVHlwZSBtZXRob2QsIFByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGNhbGxiYWNr
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5kZXgg
YjIzMTk2MTAxNDdhNTA1NTAwMjlkZGVmYjNjOWJiNWNiOGI0ZjRiZS4uYTNkZDNjMjExZDdlZTIw
ODg2NWUwZWUyMjAzZDk4ZDU3MjhhZTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oCkBAIC00NywxMCArNDcsMTEgQEAgY2xhc3MgSlNDYWxsYmFja0Rh
dGEgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2tUeXBlIHsgRnVuY3Rpb24sIE9i
amVjdCwgRnVuY3Rpb25Pck9iamVjdCB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFs
T2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBK
U0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJh
Y2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCiBwcm90ZWN0ZWQ6
Ci0gICAgZXhwbGljaXQgSlNDYWxsYmFja0RhdGEoSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVu
dEdsb2JhbE9iamVjdCkKLSAgICAgICAgOiBtX2luY3VtYmVudEdsb2JhbE9iamVjdChpbmN1bWJl
bnRHbG9iYWxPYmplY3QpCisgICAgZXhwbGljaXQgSlNDYWxsYmFja0RhdGEoSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYwLDkgKzYxLDExIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKICAgICB9CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEpTQzo6SlNWYWx1ZSBp
bnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNr
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2Fs
bGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCi0gICAgSlNDOjpXZWFrPEpTRE9NR2xv
YmFsT2JqZWN0PiBtX2luY3VtYmVudEdsb2JhbE9iamVjdDsKIHByaXZhdGU6CisgICAgSlNDOjpX
ZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRp
ZgpAQCAtNzAsMTcgKzczLDIxIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTQ2FsbGJhY2tEYXRhU3Ry
b25nIDogcHVibGljIEpTQ2FsbGJhY2tEYXRhIHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNrRGF0
YVN0cm9uZyhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3Vt
YmVudEdsb2JhbE9iamVjdCwgdm9pZCogPSBudWxscHRyKQotICAgICAgICA6IEpTQ2FsbGJhY2tE
YXRhKGluY3VtYmVudEdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX2NhbGxiYWNrKGluY3VtYmVu
dEdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbGJhY2spCisgICAgSlNDYWxsYmFja0RhdGFTdHJvbmco
SlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHZvaWQqID0gbnVsbHB0cikKKyAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShnbG9iYWxPYmplY3Qp
CisgICAgICAgICwgbV9jYWxsYmFjayhnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxiYWNrKQogICAg
IHsKICAgICB9CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2Fs
bGJhY2suZ2V0KCk7IH0KIAotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwg
SlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlw
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhK
U0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBD
YWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxP
YmplY3QsIG1faW5jdW1iZW50R2xvYmFsT2JqZWN0LmdldCgpLCBjYWxsYmFjaygpLCB0aGlzVmFs
dWUsIGFyZ3MsIGNhbGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7
CisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAg
ICAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAg
ICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjaygqZ2xvYmFsT2JqZWN0LCBj
YWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNhbGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODksMTcgKzk2LDIxIEBA
IHByaXZhdGU6CiAKIGNsYXNzIEpTQ2FsbGJhY2tEYXRhV2VhayA6IHB1YmxpYyBKU0NhbGxiYWNr
RGF0YSB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6SlNPYmplY3QqIGNh
bGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lkKiBv
d25lcikKLSAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisg
ICAgSlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB2b2lkKiBvd25lcikKKyAgICAgICAgOiBKU0NhbGxiYWNr
RGF0YShnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaywgJm1fd2Vh
a093bmVyLCBvd25lcikKICAgICB7CiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJh
Y2soKSB7IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52
b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxi
YWNrVHlwZSBjYWxsYmFja1R5cGUsIEpTQzo6UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKKyAgICBKU0M6OkpTVmFs
dWUgaW52b2tlQ2FsbGJhY2soSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0
eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhj
ZXB0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2luY3VtYmVudEdsb2JhbE9iamVjdC5nZXQoKSwg
Y2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9uTmFtZSwg
cmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgIHJldHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2soKmdsb2JhbE9iamVjdCwgY2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5
cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgdmlzaXRKU0Z1bmN0aW9uKFZpc2l0b3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNr
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgK
aW5kZXggZTcwZDRkNzZjNmM1MDBlYjM0Y2M5MWM4NmJiNDViNTU3YmFiMmU4OS4uMTJjMzBlNTcx
ZWVjYjZmYzViOTBiZDdkYjcxZDQ0Y2RiMTU3NzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgKQEAgLTM1LDcgKzM1LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9u
PFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXIKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY29udmVy
c2lvbkhhc1NpZGVFZmZlY3RzID0gZmFsc2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNl
cHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+Ci0gICAgc3RhdGljIFJlZlB0
cjxUPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBF
eGNlcHRpb25UaHJvd2VyKCkpCisgICAgc3RhdGljIFJlZlB0cjxUPiBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlv
blRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewogICAgICAgICBKU0M6OlZNJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NSw4ICs0NSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxUPj4gOiBEZWZh
dWx0Q29udmVydGVyCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gVDo6Y3JlYXRl
KGpzRE9NR2xvYmFsT2JqZWN0LCBKU0M6OmFzT2JqZWN0KHZhbHVlKSwgJmNhbGxlckdsb2JhbE9i
amVjdChqc0RPTUdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVy
biBUOjpjcmVhdGUoSlNDOjphc09iamVjdCh2YWx1ZSksICZjYWxsZXJHbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUpKTsKICAgICB9CiB9OwogCkBAIC03MCw3ICs2OSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExDYWxsYmFja0Z1
bmN0aW9uPFQ+PiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURM
Q2FsbGJhY2tJbnRlcmZhY2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExDYWxsYmFja0ludGVy
ZmFjZTxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZh
dWx0RXhjZXB0aW9uVGhyb3dlcj4KLSAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBF
eGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkK
KyAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlv
blRocm93ZXIoKSkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTgwLDggKzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENv
bnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxUPj4gOiBEZWZhdWx0Q29udmVydGUKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byYganNET01H
bG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBUOjpjcmVhdGUoanNET01HbG9iYWxPYmplY3Qs
IEpTQzo6YXNPYmplY3QodmFsdWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9NR2xvYmFsT2Jq
ZWN0LCB2bS50b3BDYWxsRnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIFQ6OmNyZWF0ZShKU0M6OmFz
T2JqZWN0KHZhbHVlKSwgJmNhbGxlckdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHZtLnRvcENh
bGxGcmFtZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgKaW5kZXggZTlkZjU4Nzc3MzM4
NjRkMjcyNWJjM2ZmMGU2NzI0NTMwZjRmNzc0NS4uZjU3ZWE0NWE5MzE1ODNjOGE3ZDIyNWE3MGNh
MzM2ODRhZDYxYTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgKQEAgLTQ4LDggKzQ4LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEludGVyZmFjZTxYUGF0aE5TUmVzb2x2ZXI+PiA6IERl
ZmF1bHRDb252ZXJ0ZXI8SUQKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNYUGF0aE5T
UmVzb2x2ZXI+KHZtKSkKICAgICAgICAgICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNYUGF0aE5T
UmVzb2x2ZXIqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKLSAgICAgICAgYXV0byYganNET01HbG9i
YWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRl
KGpzRE9NR2xvYmFsT2JqZWN0LCBvYmplY3QsICZjYWxsZXJHbG9iYWxPYmplY3QoanNET01HbG9i
YWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gSlNDdXN0b21YUGF0
aE5TUmVzb2x2ZXI6OmNyZWF0ZShvYmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZWVmNWFjOTRjYzBl
OWZjMDc3NDYwOTdlZWNiMmFkM2FkYmY5MzIzNi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2Qy
MjRhMWFiYTc5NWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih3aGVuU2lnbmFsQWJvcnRlZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6OkpTVmFsdWU6
OkpTRmFsc2UpKTsKIAogICAgIGF1dG8qIGpzRE9NR2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOwotICAgIFJlZjxBYm9ydEFsZ29yaXRo
bT4gYWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxnb3JpdGhtOjpjcmVhdGUoKmpzRE9NR2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldE9iamVjdCgpLCBqc0RP
TUdsb2JhbE9iamVjdCk7CisgICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9
IEpTQWJvcnRBbGdvcml0aG06OmNyZWF0ZShjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
LmdldE9iamVjdCgpLCBqc0RPTUdsb2JhbE9iamVjdCk7CiAKICAgICBib29sIHJlc3VsdCA9IEFi
b3J0U2lnbmFsOjp3aGVuU2lnbmFsQWJvcnRlZChhYm9ydFNpZ25hbC0+d3JhcHBlZCgpLCBXVEZN
b3ZlKGFib3J0QWxnb3JpdGhtKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQg
PyBKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNUcnVlKSA6IEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpK
U0ZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggM2RiY2IyZTUyYmEyMWE2N2E0ZmRjZjg3OGQzMGRkMjVjZGY2NzJiZC4u
NTQ3NjI3YTlmODljNzU2NGNmYjVmODcwZDI1Yzg2ZjUyMzBkZjU1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNjA2LDcgKzYw
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNlQm9keShKCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgfQogCi0gICAgYXV0
byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCg0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeworICAgIGF1dG8gY3JlYXRpb25DYWxsYmFjayA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0RhdGFiYXNlQ2FsbGJh
Y2s+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoNCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgewogICAgICAgICB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgNCwgImNy
ZWF0aW9uQ2FsbGJhY2siLCAiV2luZG93IiwgIm9wZW5EYXRhYmFzZSIpOwogICAgIH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IDBkNGU2NGFlMDhjM2UyM2Y1MGEwZmUxNjJiNzdkNjc2NzEyZGE5NmYuLmRkNzM0MjMyMmEx
YzgzZWI5Mjk5YTRjMDk4ODU5NDAxMzAyYmI1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC02MzQ0LDExICs2MzQ0LDEz
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVudAogICAgIHB1c2goQCRjb250ZW50
UmVmLCAicHVibGljOlxuIik7CiAKICAgICAjIFRoZSBzdGF0aWMgY3JlYXRlKCkgbWV0aG9kLgot
ICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHN0YXRpYyBSZWY8JGNsYXNzTmFtZT4gY3JlYXRl
KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNr
LCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KVxuIik7CisgICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgc3RhdGljIFJlZjwkY2xhc3NOYW1lPiBjcmVhdGUoSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsK
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB7XG4iKTsKLSAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgJHtjbGFzc05hbWV9KGdsb2JhbE9iamVj
dCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpO1xuIik7CisgICAgcHVzaChAJGNv
bnRlbnRSZWYsICIgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShjYWxs
YmFjaywgZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB9
XG5cbiIpOwogCisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH1cblxuIik7CisKICAg
ICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB+JGNsYXNzTmFtZSgpIGZpbmFsO1xuIik7CiAKICAg
ICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAke2NhbGxiYWNrRGF0YVR5cGV9KiBjYWxsYmFja0Rh
dGEoKSB7IHJldHVybiBtX2RhdGE7IH1cbiIpOwpAQCAtNjM4NSw3ICs2Mzg3LDcgQEAgc3ViIEdl
bmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50CiAKICAgICBwdXNoKEAkY29udGVudFJlZiwgIlxu
cHJpdmF0ZTpcbiIpOwogCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgJHtjbGFzc05hbWV9
KEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7XG5cbiIpOworICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2xhc3NOYW1lfShKU0M6OkpTT2JqZWN0KiwgSlNET01H
bG9iYWxPYmplY3QqKTtcblxuIik7CiAKICAgICBpZiAoJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0lzV2Vha0NhbGxiYWNrfSkgewogICAgICAgICBwdXNoKEAkY29u
dGVudFJlZiwgIiAgICBib29sIGhhc0NhbGxiYWNrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
YXRhICYmIG1fZGF0YS0+Y2FsbGJhY2soKTsgfVxuXG4iKTsKQEAgLTYzOTQsMTMgKzYzOTYsNiBA
QCBzdWIgR2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKICAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiAgICB2b2lkIHZpc2l0SlNGdW5jdGlvbihKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKSBv
dmVycmlkZTtcblxuIikgaWYgJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0lzV2Vha0NhbGxiYWNrfTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB2b2lkIHZp
c2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7XG5cbiIpIGlmICRpbnRl
cmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1dlYWtDYWxsYmFja307CiAK
LSAgICBpZiAoJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBD
YWxsYmFja0ludm9rZUNoZWNrfSkgewotICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFs
T2JqZWN0LmdldCgpOyB9XG5cbiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRjb250
ZW50UmVmLCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJl
dHVybiAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsgfVxuXG4iKTsKLSAgICB9Ci0KLSAgICBwdXNoKEAkY29u
dGVudFJlZiwgIiAgICBKU0M6OlN0cm9uZzxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmpl
Y3Q7XG4iKSBpZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tp
cENhbGxiYWNrSW52b2tlQ2hlY2t9OwogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2Fs
bGJhY2tEYXRhVHlwZX0qIG1fZGF0YTtcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAifTtc
blxuIik7CiAKQEAgLTY0MjEsMTAgKzY0MTYsOSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxl
bWVudGF0aW9uQ29udGVudAogICAgICRpbmNsdWRlc1JlZi0+eyJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgifSA9IDE7CiAKICAgICAjIENvbnN0cnVjdG9yCi0gICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9i
YWxPYmplY3QpXG4iKTsKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICA6ICR7bmFtZX0oZ2xv
YmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSlcbiIpOwotICAgIHB1c2goQCRjb250
ZW50UmVmLCAiICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LnZtKCksICZnbG9iYWxP
YmplY3QpXG4iKSBpZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9OwotICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICwg
bV9kYXRhKG5ldyAke2NhbGxiYWNrRGF0YVR5cGV9KGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxP
YmplY3QsIHRoaXMpKVxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIke2NsYXNzTmFtZX06
OiR7Y2xhc3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICA6ICR7bmFtZX0oZ2xv
YmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpXG4iKTsKKyAgICBwdXNoKEAkY29u
dGVudFJlZiwgIiAgICAsIG1fZGF0YShuZXcgJHtjYWxsYmFja0RhdGFUeXBlfShjYWxsYmFjaywg
Z2xvYmFsT2JqZWN0LCB0aGlzKSlcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAie1xuIik7
CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ9XG5cbiIpOwogCkBAIC02NTI5LDEzICs2NTIzLDEz
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50CiAKICAgICAgICAg
ICAgICMgRklYTUU6IFRoaXMgaXMgbmVlZGVkIGZvciBOb2RlRmlsdGVyLCB3aGljaCB3b3JrcyBl
dmVuIGZvciBkaXNjb25uZWN0ZWQgaWZyYW1lcy4gV2Ugc2hvdWxkIGludmVzdGlnYXRlCiAgICAg
ICAgICAgICAjIGlmIHRoYXQgYmVoYXZpb3IgaXMgbmVlZGVkIGZvciBvdGhlciBjYWxsYmFja3Mu
Ci0gICAgICAgICAgICBpZiAoISRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja30pIHsKKyAgICAgICAgICAgIGlmICghJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9KSB7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgaWYgKCFjYW5JbnZva2VDYWxs
YmFjaygpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAg
IHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OlVuYWJsZVRvRXhlY3V0ZTtcblxuIik7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIFJlZjwkY2xh
c3NOYW1lPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTtcblxuIik7Ci0gICAgICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qo
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7XG5cbiIpOwog
ICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
O1xuIik7CiAKQEAgLTY1NTMsMTAgKzY1NDcsMTAgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbkNvbnRlbnQKIAogICAgICAgICAgICAgbXkgJGNhbGxiYWNrSW52b2NhdGlvbjsK
ICAgICAgICAgICAgIGlmIChyZWYoJGludGVyZmFjZU9yQ2FsbGJhY2spIGVxICJJRExDYWxsYmFj
a0Z1bmN0aW9uIikgewotICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9k
YXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJl
dHVybmVkRXhjZXB0aW9uKSI7CisgICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9
ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24p
IjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkgJGNhbGxiYWNrVHlw
ZSA9ICRudW1PcGVyYXRpb25zID4gMSA/ICJPYmplY3QiIDogIkZ1bmN0aW9uT3JPYmplY3QiOwot
ICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VDYWxs
YmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgXCIke2Z1bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CisgICAgICAgICAg
ICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNW
YWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6JHtjYWxsYmFja1R5cGV9
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSwgcmV0dXJu
ZWRFeGNlcHRpb24pIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCRvcGVyYXRp
b24tPnR5cGUtPm5hbWUgZXEgInVuZGVmaW5lZCIpIHsKQEAgLTcwMDcsNiArNzAwMSw4IEBAIHN1
YiBKU1ZhbHVlVG9OYXRpdmVET01Db252ZXJ0TmVlZHNHbG9iYWxPYmplY3QKIHsKICAgICBteSAk
dHlwZSA9IHNoaWZ0OwogCisgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJh
Y2tJbnRlcmZhY2UoJHR5cGUpOworICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0Nh
bGxiYWNrRnVuY3Rpb24oJHR5cGUpOwogICAgIHJldHVybiBKU1ZhbHVlVG9OYXRpdmVET01Db252
ZXJ0TmVlZHNHbG9iYWxPYmplY3QoQHskdHlwZS0+c3VidHlwZXN9WzFdKSBpZiAkY29kZUdlbmVy
YXRvci0+SXNSZWNvcmRUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBl
cSAiU2NoZWR1bGVkQWN0aW9uIjsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KaW5kZXggZThiNGY2MWMyOGRh
MTZkOWIxZmUxYjFmYmViZjY3YmM5OTk4ZGQwOC4uNWI5OWU0Mzc5NzFiM2Q1OGY1Yzc4MTlmOTk2
MjkwOTZiODFjNTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTQ3OCw3ICs0NzgsNyBAQAogICAgICAgICAgICAgInN1
cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgICJTa2lwQ2FsbGJh
Y2tJbnZva2VDaGVjayI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVy
ZmFjZSIsICJjYWxsYmFjay1mdW5jdGlvbiJdCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJvcGVyYXRpb24iLCAiY2FsbGJhY2stZnVuY3Rpb24iXQogICAgICAgICB9LAogICAgICAg
ICAiU2tpcFZUYWJsZVZhbGlkYXRpb24iOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJpbnRlcmZhY2UiXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4
IDE0OGM1MDIyMmRiMGQ0NmE3MGZjNzRhMjQzODQ1M2NjN2FlZWMyN2YuLjBhNTZhZWJkMWIzZjZi
ZmM1M2M4ZjMwNmRhMjFhNTUzMGM5OGRiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbi5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdENhbGxiYWNrRnVu
Y3Rpb24oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNr
LCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENh
bGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAg
ICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEds
b2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhj
YWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKIHsKIH0KIApAQCAtNTcsNyArNTcsNyBAQCBD
YWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4g
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbgogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKQEAgLTY4LDcgKzY4LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrRnVuY3Rp
b24KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9k
YXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJl
dHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxs
YmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0
aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRF
eGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6
OkV4Y2VwdGlvblRocm93bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGM1
NTY2OTk3OTQ4ZmQxYjgyNDlhYWU4NWI3N2EyNTQ2MjA5NzlmMzYuLjM4Y2EwNzNlNmUxNzBhNmY5
NTJlZGFjMzJlNzVlYTE3ZmQ4Yzk5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24u
aApAQCAtMjksMTEgKzI5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAgc3RhdGljIFJlZjxK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ss
IGluY3VtYmVudEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKICAgICB9CiAK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQorCiAgICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb24oKSBmaW5hbDsKICAgICBK
U0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAK
QEAgLTQxLDkgKzQzLDcgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExM
b25nOjpQYXJhbWV0ZXJUeXBlIGFyZ3VtZW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uKEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9i
amVjdCk7Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7IH0KKyAgICBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKEpT
Qzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCiAgICAgSlNDYWxsYmFja0RhdGFT
dHJvbmcqIG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25S
ZXRocm93LmNwcAppbmRleCA3OTViZWFiNzU4YzQxMDY2Nzg1MzE4Y2MxZTY5MzQ3MTU5NDhhZTY1
Li40ZDI3ODg1NmZjYzIzZDc2ZjM5OTdlYjk0MjlmOWYzYTY1Y2U4MDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvblJldGhyb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5jcHAKQEAgLTMzLDkgKzMzLDkgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdENhbGxi
YWNrRnVuY3Rpb25SZXRocm93OjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlv
blJldGhyb3coZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1f
ZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9i
amVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdzo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3coSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KGdsb2JhbE9i
amVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxi
YWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKIHsKIH0KIApAQCAt
NjAsNyArNjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxl
bWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbgogCiAgICAgUmVmPEpTVGVzdENh
bGxiYWNrRnVuY3Rpb25SZXRocm93PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8m
IGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9i
amVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2Jq
ZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC03MSw3ICs3MSw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBl
PiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0g
ICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5j
dGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byBqc1Jlc3Vs
dCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0
YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlv
bik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrRnVuY3Rpb25SZXRocm93LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaAppbmRleCAzMzNkYmE5ZDliOTFl
NTdmMTQzNTI3MzRkNzNkYzYxMmQ3ODI0OTc4Li4zZjNmZDQ5NDM0MzYxNTg0MDhjNmVkNjBjMDIz
NDMxNDhhNmQwNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhy
b3cuaApAQCAtMjksMTEgKzI5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxP
YmplY3QpCisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdz4gY3Jl
YXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvblJldGhyb3coZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2Jq
ZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rp
b25SZXRocm93KGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKICAgICB9CiAKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4g
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQor
CiAgICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KCkgZmluYWw7CiAgICAgSlNDYWxs
YmFja0RhdGFTdHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00
MSw5ICs0Myw3IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01T
dHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMU2VxdWVu
Y2U8SURMTG9uZz46OlBhcmFtZXRlclR5cGUgYXJndW1lbnQpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTRE9NR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGlu
Y3VtYmVudEdsb2JhbE9iamVjdCk7Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7IH0KKyAgICBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uUmV0aHJvdyhKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqKTsK
IAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNo
ZWNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM3M2JlMGEzYzYzYjM2MmJj
MDdlNmRlZjg2M2NiZTE3NzNkYjYwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJ
bnZva2VDaGVjay5oIgotCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgotI2luY2x1
ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLUpTVGVzdENhbGxiYWNrRnVuY3Rp
b25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjazo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxs
YmFja0ludm9rZUNoZWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKLSAg
ICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2soZ2xvYmFsT2Jq
ZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0KQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNr
RGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlzKSkKLXsKLX0K
LQotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrOjp+SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKCkKLXsKLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
IC8vIFdoZW4gdGhlIGNvbnRleHQgaXMgZGVzdHJveWVkLCBhbGwgdGFza3Mgd2l0aCBhIHJlZmVy
ZW5jZSB0byBhIGNhbGxiYWNrCi0gICAgLy8gc2hvdWxkIGJlIGRlbGV0ZWQuIFNvIGlmIHRoZSBj
b250ZXh0IGlzIDAsIHdlIGFyZSBvbiB0aGUgY29udGV4dCB0aHJlYWQuCi0gICAgaWYgKCFjb250
ZXh0IHx8IGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICBkZWxldGUgbV9kYXRh
OwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soRGVsZXRlQ2FsbGJhY2tEYXRh
VGFzayhtX2RhdGEpKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSNl
bmRpZgotfQotCi1DYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbnNpZ25lZFNob3J0OjpJbXBs
ZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VD
aGVjazo6aGFuZGxlRXZlbnQodHlwZW5hbWUgSURMRE9NU3RyaW5nOjpQYXJhbWV0ZXJUeXBlIGFy
Z3VtZW50KQotewotICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52
b2tlQ2hlY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0o
KTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRv
SlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwotICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotCi0gICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNl
cHRpb24pOwotICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewotICAgICAgICByZXBvcnRFeGNl
cHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKLSAgICAgICAg
cmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwotICAgICB9Ci0KLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHJl
dHVyblZhbHVlID0gY29udmVydDxJRExVbnNpZ25lZFNob3J0PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBqc1Jlc3VsdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDYWxsYmFj
a1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bik7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1
cm5WYWx1ZSkgfTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrRnVuY3Rpb25T
a2lwQ2FsbGJhY2tJbnZva2VDaGVjayYgaW1wbCkKLXsKLSAgICBpZiAoIXN0YXRpY19jYXN0PEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayY+KGltcGwpLmNhbGxi
YWNrRGF0YSgpKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrJj4oaW1w
bCkuY2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tp
cENhbGxiYWNrSW52b2tlQ2hlY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJm
MGViMjI5Y2NmNmYyOGNmZDk2MGZjMWYyOTFmNGRhOTdiY2U5Ny4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNr
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0Nh
bGxiYWNrRGF0YS5oIgotI2luY2x1ZGUgIlRlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNr
SW52b2tlQ2hlY2suaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VD
aGVjayBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9r
ZUNoZWNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25T
a2lwQ2FsbGJhY2tJbnZva2VDaGVjaz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1i
ZW50R2xvYmFsT2JqZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKGdsb2JhbE9iamVjdCwg
Y2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpOwotICAgIH0KLQotICAgIH5KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2soKSBmaW5hbDsKLSAgICBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9Ci0KLSAg
ICAvLyBGdW5jdGlvbnMKLSAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbnNpZ25lZFNo
b3J0OjpJbXBsZW1lbnRhdGlvblR5cGU+IGhhbmRsZUV2ZW50KHR5cGVuYW1lIElETERPTVN0cmlu
Zzo6UGFyYW1ldGVyVHlwZSBhcmd1bWVudCkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKEpTRE9NR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9Ci0KLSAg
ICBKU0M6OlN0cm9uZzxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAgSlND
YWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKLX07Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKFRlc3RD
YWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2smKTsKLWlubGluZSBKU0M6OkpT
VmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKiBp
bXBsKSB7IHJldHVybiBpbXBsID8gdG9KUygqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAKaW5kZXggMjU4NTJlZmRmZmU0MzQ1NmQzYzY1OTUw
NWVjZDdmZTk1ZmI0N2E4MS4uZTBiNzg1ZWNiYmM0NmUxMzI4NWYxYWEyMDFjNmEwNDcyODg2NjQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhp
c09iamVjdC5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdDo6
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3Vt
YmVudEdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmpl
Y3QoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShu
ZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCwg
dGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3Q6OkpTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlz
T2JqZWN0KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9k
YXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlz
KSkKIHsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbgogCiAg
ICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKICAg
ICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwpAQCAtNzIsNyArNzIsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmlu
ZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbgogICAgIEFTU0VS
VCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBl
OjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRh
LT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBp
ZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFj
a1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuaAppbmRleCBmM2ZkYjE0ZDJmMjM4YWI5ZDI3
OGE1YjBlYWRmY2YwYWYzMTI4ODE0Li4zOTI4N2NmOTkyODQzY2RhYzY3NDNjYzBlYzIzMmM3MzBj
Y2U0M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRo
VGhpc09iamVjdC5oCkBAIC0yOSwxMSArMjksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QgZmluYWwgOiBwdWJsaWMg
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3Q+IGNyZWF0ZShKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01H
bG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdD4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNh
bGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0
KGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmpl
Y3QoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAorICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisKICAgICB+
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KCkgZmluYWw7CiAgICAgSlNDYWxs
YmFja0RhdGFTdHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00
MSw5ICs0Myw3IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRl
ZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMSW50ZXJm
YWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExTZXF1
ZW5jZTxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pjo6UGFyYW1ldGVyVHlwZSBwYXJhbWV0ZXIpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09i
amVjdChKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOwotCi0gICAgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2Jq
ZWN0KCkpOyB9CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpTQzo6
SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJv
bmcqIG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUeXBlZGVmcy5jcHAKaW5kZXggOTU5NGIyMDY4NDBjOGU4MDFkN2IyYWM4NTg2ODc4YjZm
NDA0ZDRmMC4uNTUxNmJhNjg1NDM5ZDU0MzI0Y2VjNjdkZGE4MjcxM2IyMmQzYTFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcApA
QCAtMzQsOSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmczo6SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbldpdGhUeXBlZGVmcyhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3Qp
Ci0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhnbG9iYWxPYmplY3Quc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0
cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnM6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRl
ZnMoSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
ICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoZ2xvYmFsT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ry
b25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQogewogfQogCkBAIC02MSw3ICs2MSw3
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25U
eXBlPiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUeXBlZGVmcz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9i
YWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52
bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtNzMsNyArNzMsNyBAQCBDYWxs
YmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbgogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwog
CiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVy
KCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5o
CmluZGV4IDg3NjVkMzFkYWRlZmYzYTM4MzAzZTRiMzVmYmI5MjY4ODRhMzZlNTEuLjAzOGUxZWY0
MjcxYzA0YzQxNTBhNTg5NWZhNjA3M2FmMjY5YjEzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuaApAQCAtMjksMTEgKzI5LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBl
ZGVmcyBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAg
c3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzPiBjcmVhdGUoSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
V2l0aFR5cGVkZWZzKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVj
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
V2l0aFR5cGVkZWZzKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKICAgICB9CiAKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQorCiAgICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoKSBmaW5hbDsKICAg
ICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTQxLDkgKzQzLDcgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJ
RExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExMb25nPj46OlBhcmFtZXRlclR5cGUgc2VxdWVuY2VB
cmcsIHR5cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgbG9uZ0FyZykgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU0RPTUds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOwotCi0gICAgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9Cisg
ICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU0M6OkpTT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqKTsKIAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKaW5kZXggMzI2ZWFiNmFmNWFk
ZTkyNmM1MDkyZTBkOWRkNjJhNjhlNjI3MGE3Yi4uN2VlZTE4NWQ2ZGNlNWUwNTFmYWZlNjY5OTI4
MzZlYjg1ZTNkNmEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCkBA
IC0xMjAsOSArMTIwLDkgQEAgdGVtcGxhdGU8PiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rp
b25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXIKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1KU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxi
YWNrSW50ZXJmYWNlKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
LCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9i
YWxPYmplY3QsIHRoaXMpKQorSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0ludGVyZmFjZShnbG9iYWxPYmplY3QtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmco
Y2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCiB7CiB9CiAKQEAgLTE4Myw3ICsxODMsNyBA
QCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlw
ZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRo
aXMtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmds
b2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNr
SW50ZXJmYWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y2FsbGJhY2tXaXRoTm9QYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aE5vUGFy
YW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewog
ICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhy
b3duOwpAQCAtMjA5LDcgKzIwOSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVm
aW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAKICAgICBS
ZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9i
YWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTIyMCw3ICsy
MjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0
aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVy
Zmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0
aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksIHJldHVybmVk
RXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywg
SlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2Fs
bGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0yMzYsNyArMjM2LDcgQEAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpT
VGVzdENhbGxiYWNrSW50ZXJmYWMKIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxP
YmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVu
YW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxs
YmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24p
OwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24o
JmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJu
IENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBl
PiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhp
cy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU3Ry
aW5nTGlzdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJu
ZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRp
b25UaHJvd247CkBAIC0yOTEsNyArMjkxLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURM
VW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKIAog
ICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRv
JiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9
IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMzAy
LDcgKzMwMiw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVt
ZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRF
eGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEJvb2xlYW4iKSwgcmV0dXJu
ZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjYWxsYmFja1dpdGhCb29sZWFuIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAg
ICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxs
YmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTMxOCw3ICszMTgsNyBAQCBDYWxs
YmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhYwogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmds
b2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9i
amVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CkBAIC0zMzAsNyArMzMwLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJm
YWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJh
Y2tSZXF1aXJlc1RoaXNUb1Bhc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tU
eXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1JlcXVpcmVz
VGhpc1RvUGFzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNl
cHRpb25UaHJvd247CkBAIC0zNDYsNyArMzQ2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUg
SURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMK
IAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBh
dXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2
bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAt
MzU2LDcgKzM1Niw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1w
bGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgQVNTRVJUKCFhcmdz
Lmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJu
ZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dp
dGhBUmV0dXJuVmFsdWUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQg
PSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJh
Y2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJu
ZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5
cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTM3NSw3ICszNzUsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhYwogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgp
OworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOwogICAg
IGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CkBAIC0zODYsNyArMzg2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3Ry
aW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VD
YWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNh
bGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAg
YXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBK
U0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjYWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnMiKSwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oJmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTM5
OSw2ICszOTksMzMgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICByZXR1cm4geyBXVEZN
b3ZlKHJldHVyblZhbHVlKSB9OwogfQogCitDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01T
dHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxi
YWNrVGhhdFNraXBzSW52b2tlQ2hlY2sodHlwZW5hbWUgSURMRGljdGlvbmFyeTxUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+OjpQYXJhbWV0ZXJUeXBlIGRpY3Rpb25hcnlQYXJhbSkK
K3sKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OworCisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKKyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRGljdGlvbmFyeTxUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGRpY3Rpb25hcnlQYXJhbSkpOworICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkp
OworCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAg
IGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywg
SlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY2FsbGJhY2tUaGF0U2tpcHNJbnZva2VDaGVjayIpLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlv
bigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICByZXR1
cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CisgICAgIH0KKworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8gcmV0dXJu
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwganNSZXN1
bHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRU
eXBlOjpFeGNlcHRpb25UaHJvd24pOworICAgIHJldHVybiB7IFdURk1vdmUocmV0dXJuVmFsdWUp
IH07Cit9CisKIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50
YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoVGhpc09iamVj
dCh0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmpl
Y3QsIHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0T2JqPjo6UGFyYW1ldGVyVHlwZSB0ZXN0T2Jq
UGFyYW0pCiB7CiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQpAQCAtNDA2LDcgKzQzMyw3
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25U
eXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
dGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTQxNyw3ICs0NDQsNyBAQCBDYWxsYmFja1Jlc3Vs
dDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1
bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoVGhpc09iamVjdCIpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CisgICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAg
IHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrSW50ZXJmYWNlLmgKaW5kZXggMDlmYTI5NDdiNTViYzA4MjcxYmQ4MmQwYmM5ZjRh
MzEyODBhNzU3MC4uMjJmZWZiYzIzYzdhMzUxZTk3ODQ2ZWUwM2NlNDUyZmFlMzg4NzE3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgKQEAgLTMzLDExICszMywxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlIGZpbmFsIDog
cHVibGljIFRlc3RDYWxsYmFja0ludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1i
ZW50R2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+
IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVj
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKwogICAgIH5K
U1Rlc3RDYWxsYmFja0ludGVyZmFjZSgpIGZpbmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25n
KiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CkBAIC01MiwxMiArNTQsMTEgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1JlcXVpcmVzVGhpc1Rv
UGFzcyh0eXBlbmFtZSBJRExMb25nOjpQYXJhbWV0ZXJUeXBlIGxvbmdQYXJhbSwgdHlwZW5hbWUg
SURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0ZXN0Tm9kZVBhcmFtKSBvdmVy
cmlkZTsKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVu
dGF0aW9uVHlwZT4gY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlKCkgb3ZlcnJpZGU7CiAgICAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNh
bGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyh0eXBlbmFtZSBJRExFbnVtZXJhdGlvbjxUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+OjpQYXJhbWV0ZXJUeXBlIGVudW1QYXJhbSkgb3ZlcnJp
ZGU7CisgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRh
dGlvblR5cGU+IGNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2sodHlwZW5hbWUgSURMRGljdGlv
bmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+OjpQYXJhbWV0ZXJUeXBlIGRp
Y3Rpb25hcnlQYXJhbSkgb3ZlcnJpZGU7CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURM
RE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlw
ZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0
eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE9iaj46OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFt
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU0RP
TUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOwotCi0gICAgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9
CisgICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwCmluZGV4IGM0MTY3ZWYzNTAzNWZmOTEzZDRi
NTQxMzM0YmM5NmI4MjdjM2MzNmMuLjEwNDFjYWM3NDc4MmZiYTBkZmM2MmVjMjA5MDgyM2I4NjNm
N2I0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcApAQCAtNjUsNyAr
NjUsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+KEpTR2xvYgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZl
cnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIg
PSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVy
VmFsdWU7CkBAIC0xMDAsNyArMTAwLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25h
cnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5PihKU0dsb2IKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVz
dWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJl
clZhbHVlKTsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
JmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1i
ZXJWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAKaW5kZXggZjI3
YmFjZWRiOWMwMWFlMGM4Mjc3Yzg2NjVmYmIxZjM4MzAwYTQwNS4uNzNlMzNhZWZmNDc3ZjVmNzc0
ODc4OWNjNmUyNDI4OTM4Njc3NzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9u
YXJ5Mi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25h
cnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KEpTR2wKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2Fs
bGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVz
dWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENh
bGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBz
dHJpbmdNZW1iZXJWYWx1ZTsKQEAgLTE1Myw3ICsxNTMsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJp
dmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWRE
aWN0aQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
fQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAg
IHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwor
ICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZh
bHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWU7CkBAIC0xODgsNyArMTg4LDcgQEAg
dGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LnBh
cnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRD
YWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVl
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBK
U1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9u
YXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5LmNwcAppbmRleCA1YmZkN2RmMzAwMDYzYTBjMWU5ZjExZWRmZmQ1
Y2Q4NTljMDE3NmJiLi42MzdjNTc4MjI5YjlmNTkzNjc1NGZhOTY3YzY1NDc0M2ViYzcxOWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8
VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1
ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihKUwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFy
dGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQu
cGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFs
dWUpOworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFy
dGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAKaW5kZXggM2U4
NTQ0ZmZmYzA1N2Q3NWE1NWNhMWQ2MTBhMTY1ZTA1YzNlOTNhNy4uM2RmMDMwN2MxM2YwNWJhY2Yx
MTI5NmY3NDdlZDlmZDAzZDFkN2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGlj
dGlvbmFyeTIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERp
Y3Rpb25hcnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mj4oCiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0
LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxi
YWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAg
IHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFs
dWUgc3RyaW5nTWVtYmVyVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE5Yzk2OTY2YjQ2YWJjMjFmYTli
YzY3MzE3YmFmNWQyODQ2ZmQ3YzYuLjRkM2UyNjc1ODlkYzNjODA3MWY1Mzc4OTQ4MDFkYWQ4Yzhh
ZjM0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0yMDA5LDEwICsyMDA5LDEwIEBAIHRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE9iakRPTUNvbnN0cnVj
dG9yOjpjb25zCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgYXV0byYg
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwot
ICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51
bGxwdHIpOyB9KTsKKyAgICBhdXRvIHRlc3RDYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJ
bnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInRlc3RDYWxsYmFj
a0Z1bmN0aW9uIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsgfSk7CisgICAgYXV0byB0ZXN0Q2Fs
bGJhY2tGdW5jdGlvbiA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJ0ZXN0Q2FsbGJh
Y2tGdW5jdGlvbiIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmplY3Qg
PSBUZXN0T2JqOjpjcmVhdGUoZG9jdW1lbnQsIHRlc3RDYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgp
LCB0ZXN0Q2FsbGJhY2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KFR5cGVPckV4Y2VwdGlvbk9yVW5kZXJseWluZ1R5cGU8ZGVjbHR5cGUob2JqZWN0KT46Omlz
UmVmKTsKQEAgLTM0NDMsNyArMzQ0Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
Ympfc3RyaW5nVm9pZENhbGxiYWNrUmVjb3JkQXR0clNldHRlcihKU0dsb2JhbE9iamVjCiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMUmVj
b3JkPElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxs
YmFjaz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
IGludm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgIHJldHVybiBpbXBsLnNldFN0cmlu
Z1ZvaWRDYWxsYmFja1JlY29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpAQCAtNjk1OSw3
ICs2OTU5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhDYWxsYmFja0kKICAgICBpZiAoVU5MSUtFTFkoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tJ
bnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFj
a0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhDYWxsYmFja0ludGVyZmFjZUFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsK
IH0KQEAgLTY5NzksNyArNjk3OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoTnVsbGFibGVDCiAgICAgaWYg
KFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50
ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNl
PEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJ
bnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
TnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9
CkBAIC03MDAyLDcgKzcwMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbkNhbGxiYQogICAgIGF1dG8g
bm9uQ2FsbGJhY2sgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVy
dDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0Fu
ZENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0
PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFj
ZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFj
ay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTcwMjAsNyArNzAyMCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoT3B0aW9uYWxDCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+OjpSZXR1cm5UeXBlKCkgOiBjb252
ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNh
bGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZh
Y2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5k
ZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRl
cmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBA
IC03MDM4LDcgKzcwMzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTgogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJh
Y2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVP
YmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFy
ZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJn
KFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcwNTgsNyArNzA1OCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoQ2FsbGJhY2tGCiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0
PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxi
YWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7
CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25B
cmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MDc4LDcgKzcwNzgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aE51bGxhYmxlQwogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVs
bGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rp
b25BcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzEwMSw3ICs3MTAxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX21ldGhvZFdpdGhOb25DYWxsYmEKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMSk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2Fs
bGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MTE5LDcgKzcxMTksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aE9wdGlvbmFsQwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxs
YmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj46OlJldHVyblR5cGUoKSA6IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAi
Y2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0
aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gQ29udmVydGVyPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbj4+OjpSZXR1cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAi
Y2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0
aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03
MTM3LDcgKzcxMzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTgogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7
IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNr
RnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1v
dmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcxNTQsNyArNzE1NCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3N0YXRp
Y01ldGhvZFdpdGhDCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAs
ICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGlvbmFsQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxl
PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzE3Myw3
ICs3MTczLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25fc3RhdGljTWV0aG9kV2l0aEMKICAgICBpZiAoVU5MSUtFTFkoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2Fs
bGJhY2tBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJ
bnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
InN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MzAzLDcgKzczMDMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1l
dGhvZDVCbwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhy
b3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAw
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11
c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsg
fSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmluZGV4
IGEyYWRiNDJlZTBjZmJjYmVjMTE4ZDQ0ODkzZjhjMTc3YjVkOTIxYWYuLmE1OTYxYjBiNDQ3Nzk2
ZjUxNTYwZTZmYTA4ZTE0NjJmNDRkMzIzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5LmNwcApAQCAtNzUsNyArNzUsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJ
bXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2Jq
ZQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQog
ICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJl
c3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRD
YWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOworICAg
ICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248
SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVl
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBK
U1ZhbHVlIGVudW1NZW1iZXJWYWx1ZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCB0ZW1wbGF0ZTw+IERp
Y3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpT
R2xvYmFsT2JqZQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgfQogICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFy
dGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNr
TWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAppbmRleCA3N2NiYjU2Y2JmNGUzODM4YThjMzliODM3MGNiZWUzZjkzZmZlMzgyLi4x
NzlkZGM5Y2IyMmI4OWRhMmFiMzQyZmU4YjgyMzgzMTc2MjllZmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKQEAgLTE2OCwxMCArMTY4LDEwIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6CiAgICAg
YXV0byBoZWxsbyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byB0ZXN0Q2FsbGJhY2tG
dW5jdGlvbiA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0
cik7IH0pOworICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdFR5cGVkZWZzIiwgbnVs
bHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMik7Ci0gICAgYXV0byB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2Ug
PSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MiwgInRlc3RDYWxsYmFja0ludGVyZmFjZSIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsgfSk7
CisgICAgYXV0byB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UgPSBjb252ZXJ0PElETENhbGxiYWNrSW50
ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50Mi52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAyLCAidGVzdENhbGxiYWNrSW50ZXJmYWNlIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdFR5cGVkZWZzOjpjcmVhdGUoV1RGTW92ZShoZWxs
byksIHRlc3RDYWxsYmFja0Z1bmN0aW9uLnJlbGVhc2VOb25OdWxsKCksIHRlc3RDYWxsYmFja0lu
dGVyZmFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KFR5cGVPckV4Y2Vw
dGlvbk9yVW5kZXJseWluZ1R5cGU8ZGVjbHR5cGUob2JqZWN0KT46OmlzUmVmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDc0Yzk0ZTVlZmI5NWY1Yjgw
ZGNhN2FmMGI1NjY3Nzc1MDEwY2ExM2QuLjdlMjg1OTQzODgwZjJmYWY0NTI1YWZlNzBjZGM3MThm
Y2RhYjI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmNwcApA
QCAtNDEsOSArNDEsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0
aW9uKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RWb2lk
Q2FsbGJhY2tGdW5jdGlvbihnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQot
ICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50
R2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RW
b2lkQ2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJh
Y2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQogewogfQogCkBAIC02
OCw3ICs2OCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVt
ZW50YXRpb25UeXBlPiBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jCiAKICAgICBSZWY8SlNUZXN0Vm9p
ZENhbGxiYWNrRnVuY3Rpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qu
dm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTg0LDcgKzg0LDcgQEAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpT
VGVzdFZvaWRDYWxsYmFja0Z1bmMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsK
IAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwg
cmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVl
LCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmll
cigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNl
cHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJv
d247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IDcwOTA2MTVi
NDFhYzlhODNmYTUyYzc1NmViNjYxNzljYWMyMzMxODguLjExNDVhNWY0MDlmZTkyNGYzMzlmZTFj
ODA0NDdmNDRjNGI2Y2ZmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlv
bi5oCkBAIC0zMSwxMSArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rl
c3RWb2lkQ2FsbGJhY2tGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUZXN0Vm9pZENhbGxiYWNrRnVu
Y3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0
KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAg
ICBzdGF0aWMgUmVmPEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNDOjpKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ss
IGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisKICAgICB+SlNUZXN0Vm9pZENh
bGxiYWNrRnVuY3Rpb24oKSBmaW5hbDsKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJh
Y2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTQzLDkgKzQ1LDcgQEAgcHVibGljOgog
ICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25U
eXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExGbG9hdDMyQXJyYXk6OlBhcmFtZXRlclR5cGUg
YXJyYXlQYXJhbSwgdHlwZW5hbWUgSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT46OlBhcmFtZXRlclR5cGUgc3J6UGFyYW0sIHR5cGVuYW1lIElETERPTVN0cmlu
Zzo6UGFyYW1ldGVyVHlwZSBzdHJBcmcsIHR5cGVuYW1lIElETEJvb2xlYW46OlBhcmFtZXRlclR5
cGUgYm9vbFBhcmFtLCB0eXBlbmFtZSBJRExMb25nOjpQYXJhbWV0ZXJUeXBlIGxvbmdQYXJhbSwg
dHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0ZXN0Tm9kZVBh
cmFtKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlv
bihKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOwotCi0gICAgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0
KCkpOyB9CisgICAgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oSlNDOjpKU09iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKaW5kZXggYmFhMzU0YjNlOTExNTE2
MDFiNzM4ZDBkYjc4NWQ4ZDYxYTBiYzlhMi4uYzEyMzIxNTI0NjFhNmMyZWQyZTU0ODBhMmU3YzZk
YjY4ODRiYTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKQEAgLTQwLDkg
KzQwLDYgQEAgV2ViRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uaDoKIEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93Lmg6IAogRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAogV2Vi
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
blNraXBDYWxsYmFja0ludm9rZUNoZWNrLmg6IAotRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lw
Q2FsbGJhY2tJbnZva2VDaGVjay5oOiAKLVdlYkRPTVRlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENh
bGxiYWNrSW52b2tlQ2hlY2suaDogCiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmpl
Y3QuaDogCiBET01UZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0Lmg6IAogV2ViRE9N
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oOiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBD
YWxsYmFja0ludm9rZUNoZWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmlkbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY2MzNmMTFhY2Y2ZTQ1ZGM4N2I0YjZiMzhjMmQz
Yzk2Y2NhNTIwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rp
b25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIFNraXBDYWxsYmFja0ludm9rZUNoZWNrCi1dIGNhbGxi
YWNrIFRlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2sgPSB1bnNpZ25l
ZCBzaG9ydCAoRE9NU3RyaW5nIGFyZ3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwK
aW5kZXggNjViYjI1OTRkZmZmZGJjMmZlNjk0Njg5OTU2MjcyNjU4MmY1YmM1OS4uYmIzYjc5MDUz
YTQwYmIzZDYzMjIyNWFkYjk0ZTI1NTk0MTY5ZTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFj
ZS5pZGwKQEAgLTUyLDUgKzUyLDYgQEAgZGljdGlvbmFyeSBUZXN0Q2FsbGJhY2tJbnRlcmZhY2VE
aWN0aW9uYXJ5IHsKICAgICB1bmRlZmluZWQgY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MobG9u
ZyBsb25nUGFyYW0sIFRlc3ROb2RlIHRlc3ROb2RlUGFyYW0pOwogICAgIERPTVN0cmluZyBjYWxs
YmFja1dpdGhBUmV0dXJuVmFsdWUoKTsKICAgICBbUmV0aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5n
IGNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyhUZXN0Q2FsbGJhY2tJbnRlcmZhY2VFbnVt
IGVudW1QYXJhbSk7CisgICAgW1NraXBDYWxsYmFja0ludm9rZUNoZWNrXSBET01TdHJpbmcgY2Fs
bGJhY2tUaGF0U2tpcHNJbnZva2VDaGVjayhUZXN0Q2FsbGJhY2tJbnRlcmZhY2VEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlQYXJhbSk7CiAgICAgW0NhbGxiYWNrVGhpc09iamVjdD1UZXN0Tm9kZV0gRE9N
U3RyaW5nIGNhbGxiYWNrV2l0aFRoaXNPYmplY3QoVGVzdE9iaiB0ZXN0T2JqUGFyYW0pOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmlkbAppbmRleCBmN2EwM2I3MGYwODgxNDI0NmE5ZjI1OGVm
NjI2OWYyZDcwZGZlNThmLi4yYjM5ZDYzMDE5MDJjMDNkYWU0NmE3MWUzNjIyYWJkMTBkNzg2MWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsCkBAIC0yMCw3ICsyMCw2IEBACiAKIFsKICAg
ICBJc1dlYWtDYWxsYmFjaywKLSAgICBTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaywKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBjYWxsYmFjayBpbnRlcmZhY2UgTm9kZUZpbHRlciB7CiAgICAgLy8gQ29u
c3RhbnRzIGZvciBhY2NlcHROb2RlKCkuCkBAIC00Myw1ICs0Miw1IEBACiAgICAgY29uc3QgdW5z
aWduZWQgbG9uZyBTSE9XX0RPQ1VNRU5UX0ZSQUdNRU5UID0gMHgwMDAwMDQwMDsKICAgICBjb25z
dCB1bnNpZ25lZCBsb25nIFNIT1dfTk9UQVRJT04gPSAweDAwMDAwODAwOyAvLyBIaXN0b3JpY2Fs
LgogCi0gICAgW1JldGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIHNob3J0IGFjY2VwdE5vZGUoTm9k
ZSBub2RlKTsKKyAgICBbU2tpcENhbGxiYWNrSW52b2tlQ2hlY2ssIFJldGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIHNob3J0IGFjY2VwdE5vZGUoTm9kZSBub2RlKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggMzUy
YjRlZGMxMTQxZWI3MTc1NWQ4ODkxNTVlZDMwNTE4ZTdkYTg3OC4uMmYxZTM1MjFmMzQ3NzFkNGFk
NTU1NjY2ZDhjNzc4N2Y4NDQ5OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtNzgsNyArNzgsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgUmVm
PEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRocmVhZCopOwogCiAgICAgLy8gU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSo+KHRoaXMpOyB9CiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVu
KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIG1hcmtBc0Nsb3NpbmcoKSB7IG1faXNDbG9zaW5n
ID0gdHJ1ZTsgfQpAQCAtOTEsNiArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBFdmVudFRh
cmdldC4KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSo+KHRoaXMpOyB9CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IDdjOWExOGFkNmE4MDk1ZjExODkxNmQ2MzBiOTFjYmJkNDdjZDY1Y2YuLjUyZDI3NWU5
MjViOWU1YzliODkxNmJjZWMyZTZkYzY0MmM4YWY0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
YWludChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogICAgICAgICBpZiAocGFpbnRWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRo
ZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CiAKLSAgICAgICAgUmVmUHRyPEpT
Q1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlND
U1NQYWludENhbGxiYWNrPj4oZ2xvYmFsT2JqZWN0LCBwYWludFZhbHVlKTsKKyAgICAgICAgUmVm
UHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNDU1NQYWludENhbGxiYWNrPj4oZ2xvYmFsT2JqZWN0LCBwYWludFZhbHVlLCAqanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCkpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwog
CiAgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gbWFrZVVuaXF1ZTxQYWludERlZmluaXRp
b24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlkbAppbmRleCBhOTljM2Nk
NTk4YjVmOTJiMzkxZTU4MzdmZGU0OTA1OTFlZGVhNTVhLi4zNDJhZDdiNjVlZTlhYjRkYjBhMjA3
YmViYzY2Y2YzZmQ2ZTI3MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmlkbApAQCAtMjQsOCArMjQsNiBAQAogICovCiAKIC8vIE5vdCB1c2luZyBbSXNX
ZWFrQ2FsbGJhY2tdIGhlcmUgYXMgWFBhdGhOU1Jlc29sdmVyIHdyYXBwZXJzIGFsd2F5cyB0ZW1w
b3JhcnkgKG5vIHJlZmVyZW5jZSBpcyBrZXB0KQotWwotICAgIFNraXBDYWxsYmFja0ludm9rZUNo
ZWNrLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIHsKLSAgICBb
SW1wbGVtZW50ZWRBcz1sb29rdXBOYW1lc3BhY2VVUklGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBs
b29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOworY2FsbGJhY2sgaW50ZXJmYWNl
IEN1c3RvbVhQYXRoTlNSZXNvbHZlciB7CisgICAgW0ltcGxlbWVudGVkQXM9bG9va3VwTmFtZXNw
YWNlVVJJRm9yQmluZGluZ3MsIFNraXBDYWxsYmFja0ludm9rZUNoZWNrXSBET01TdHJpbmc/IGxv
b2t1cE5hbWVzcGFjZVVSSShET01TdHJpbmc/IHByZWZpeCk7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1YzY3ZTA3
ZmNkOWFkNWE1ODFiNzkxZTE1MDI1M2JiOGFjNjE1NTIuLmE5ZTU5NWE3MDA1MTA4OWNhMTI2MWUy
YjQ0MWJmZmVjNGYzNjUwNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0xMiAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyODU2MzkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwNjUKKworICAgICAgICBDYXVzZXMgR2VvbG9jYXRpb24gdGVzdCBj
cmFzaGVzCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJKU0NhbGxi
YWNrRGF0YSBzaG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBmb3IgZXJyb3JzCisgICAg
ICAgIGFuZCBsaWZlY3ljbGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzIzODcKKyAgICAgICAgaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvcjI4
NTYzOQorCiAyMDIxLTExLTEyICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTnVsbCBjaGVjayBob3N0IGluIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25TbG90cwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNGU3N2VhZjA1MmNjNTRmZWFlYjM4YTkwMjE1ZThl
ZGQ5NTVmZTE1Zi4uNzc4MzBjOTkzOGRjMGEwOWI5MTdhMmU5Y2QzZWVhZTZjNTAzYjM1YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTEtMTIg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjg1NjM5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDY1CisKKyAgICAgICAgQ2F1c2VzIEdlb2xvY2F0aW9uIHRl
c3QgY3Jhc2hlcworCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiSlND
YWxsYmFja0RhdGEgc2hvdWxkIHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgZm9yIGVycm9ycwor
ICAgICAgICBhbmQgbGlmZWN5Y2xlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyMzg3CisgICAgICAgIGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3Jn
L3IyODU2MzkKKwogMjAyMS0xMS0xMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFkZCBmbGV4LWJhc2lzOiBjb250ZW50
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Nh
bGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0
CmluZGV4IDg2YTFkMTljYTcyNGFlNTcwZWIxMDY1ZTdlYjk1MjcyOWUzNTZhYTguLjY0NTU3NWQ5
NTdjNzcxNmM1OTQzNGYxMDk2Mzk0ODA1Mjc1MTM0ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8t
ZGVsZXRlZC1jb250ZXh0LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwxMCBAQAogZnJhbWUgIjwh
LS1mcmFtZTEtLT4iIC0gaGFzIDEgb251bmxvYWQgaGFuZGxlcihzKQotVGVzdHMgdGhhdCB3aGVu
IGEgR2VvbG9jYXRpb24gcmVxdWVzdCBpcyBtYWRlIGZyb20gYSByZW1vdGUgZnJhbWUsIGNhbGxi
YWNrcyBhcmUgbWFkZSBhcyB1c3VhbCBldmVuIGlmIHRoYXQgZnJhbWUncyBicm93c2luZyBjb250
ZXh0IGlzIGFscmVhZHkgbnVsbC4KK1Rlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9uIHJlcXVl
c3QgaXMgbWFkZSBmcm9tIGEgcmVtb3RlIGZyYW1lLCBhbmQgdGhhdCBmcmFtZSdzIHNjcmlwdCBj
b250ZXh0IGdvZXMgYXdheSBiZWZvcmUgdGhlIEdlb2xvY2F0aW9uIGNhbGxiYWNrIGlzIG1hZGUs
IHRoZSBjYWxsYmFjayBpcyBub3QgbWFkZS4gSWYgdGhlIGNhbGxiYWNrIGlzIGF0dGVtcHRlZCwg
YSBjcmFzaCB3aWxsIG9jY3VyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFT
UyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQKK1BBU1MgTm8gY2FsbGJhY2tzIGludm9rZWQKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1j
b250ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10
by1kZWxldGVkLWNvbnRleHQuaHRtbAppbmRleCBlZTMwNTA4ZWJjMTdmODQxYjc0YWE2ZjlhNzQ2
OTNiODQ2MTEyNTMzLi5lMTA1YzU0MDhmMzM3YWRhNDQwOGU5MDY1MDE3MzRlZWRkOTJhNmUxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1k
ZWxldGVkLWNvbnRleHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbApAQCAtNSw3ICs1LDcgQEAKIDwvaGVh
ZD4KIDxib2R5PgogPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gYSBHZW9s
b2NhdGlvbiByZXF1ZXN0IGlzIG1hZGUgZnJvbSBhIHJlbW90ZSBmcmFtZSwgY2FsbGJhY2tzIGFy
ZSBtYWRlIGFzIHVzdWFsIGV2ZW4gaWYgdGhhdCBmcmFtZSdzIGJyb3dzaW5nIGNvbnRleHQgaXMg
YWxyZWFkeSBudWxsLiIpOworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0
aW9uIHJlcXVlc3QgaXMgbWFkZSBmcm9tIGEgcmVtb3RlIGZyYW1lLCBhbmQgdGhhdCBmcmFtZSdz
IHNjcmlwdCBjb250ZXh0IGdvZXMgYXdheSBiZWZvcmUgdGhlIEdlb2xvY2F0aW9uIGNhbGxiYWNr
IGlzIG1hZGUsIHRoZSBjYWxsYmFjayBpcyBub3QgbWFkZS4gSWYgdGhlIGNhbGxiYWNrIGlzIGF0
dGVtcHRlZCwgYSBjcmFzaCB3aWxsIG9jY3VyLiIpOwogCiBmdW5jdGlvbiBvbkZpcnN0SWZyYW1l
TG9hZGVkKCkgewogICAgIGlmcmFtZS5zcmMgPSAncmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0
ZWQtY29udGV4dC1pbm5lcjIuaHRtbCc7CkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIG9uRmly
c3RJZnJhbWVMb2FkZWQoKSB7CiAKIGZ1bmN0aW9uIG9uU2Vjb25kSWZyYW1lTG9hZGVkKCkgewog
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCdO
byBjYWxsYmFja3MgaW52b2tlZCcpOworICAgICAgICB0ZXN0UGFzc2VkKCdObyBjYWxsYmFja3Mg
aW52b2tlZCcpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCA1MDApOwogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxi
YWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIx
Lmh0bWwKaW5kZXggOWM1MTU4MTkwYTgxNjhjMmNlYjYyYjA4MGE4NTJhNDNhYTgwMGNjZS4uZjRj
MDI3OWQxZDgwZTgyZWU5MDYzODIwMzE4YzE4ZGNjYThmYmNmYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQt
Y29udGV4dC1pbm5lcjEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9yZXNvdXJjZXMvY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWlubmVyMS5odG1sCkBAIC0x
Myw3ICsxMyw3IEBACiAgICAgICAgICAgLy8gTWFrZSByZXF1ZXN0IGZyb20gcmVtb3RlIGZyYW1l
LCB0aGlzIGZyYW1lIHdpbGwgYmUgZ29uZSBieSB0aGUgdGltZSB0aGUgR2VvbG9jYXRpb24KICAg
ICAgICAgICAvLyBvYmplY3QgYXR0ZW1wdHMgdG8gaW52b2tlIHRoZSBjYWxsYmFjay4KICAgICAg
ICAgICB3aW5kb3cucGFyZW50Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHBhcmVudC50ZXN0UGFzc2VkKCdTdWNjZXNz
IGNhbGxiYWNrIGludm9rZWQnKTsKKyAgICAgICAgICAgICAgcGFyZW50LnRlc3RGYWlsZWQoJ1N1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKICAgICAgICAgICAgICAgcGFy
ZW50LmZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgIH0sIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICBwYXJlbnQudGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVk
bHknKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E0OGMyNGYy
OWViZDFhYzBkY2NhYTM4NmY5NTQzZTAzMzVjODVmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9z
cy1yZWFsbS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotCi1Q
QVNTIHBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIsIHBh
cmVudCdzIHJvb3QKLVBBU1MgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIHBhcmVu
dCdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdAotUEFTUyBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdz
IG1ldGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290Ci1QQVNTIHBhcmVudCdzIHx0
aGlzfCwgaWZyYW1lcydzIG1ldGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51
bGwtYnJvd3NpbmctY29udGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2Rl
LWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWZjZDM4MTdkMjk2YjM5MjQxZjczZDQxZDhj
MmQ1YzhiMTYwYWExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZl
cnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Np
bmctY29udGV4dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQot
UEFTUyBUcmVlV2Fsa2VyOiBOb2RlRmlsdGVyIGZyb20gZGV0YWNoZWQgaWZyYW1lIHdvcmtzIGFz
IGV4cGVjdGVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNy
b3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0
Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNmJiNTMyODlmNDcyNTdhMGFlMjFkNDUxZTQ4ZWM1
OTUyOTUxMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2Fs
L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1j
b250ZXh0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5UcmVlV2Fsa2VyOiBOb2RlRmlsdGVy
IGZyb20gZGV0YWNoZWQgaWZyYW1lIHdvcmtzIGFzIGV4cGVjdGVkPC90aXRsZT4KLTxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNyZWYtZm9yLWNhbGwt
YS11c2VyLW9iamVjdHMtb3BlcmF0aW9uJUUyJTkxJUEwIj4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPGJvZHk+Ci08c2NyaXB0PgotY29uc3Qg
dCA9IGFzeW5jX3Rlc3QoKTsKLQotY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7Ci1pZnJhbWUuc3JjID0gInN1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2Rl
LWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQtc3ViZnJhbWUuaHRtbCI7
Ci1pZnJhbWUub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZSgoKSA9PiB7Ci0gICAgY29uc3Qgbm9k
ZUl0ZXJhdG9yID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlTm9kZUl0ZXJhdG9yKCk7Ci0g
ICAgaWZyYW1lLnJlbW92ZSgpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdp
bmRvdywgbnVsbCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhub2RlSXRlcmF0b3IubmV4dE5vZGUoKSwg
ZG9jdW1lbnQuYm9keSk7Ci0gICAgYXNzZXJ0X3RydWUobm9kZUl0ZXJhdG9yLmR1bW15RmlsdGVy
Q2FsbGVkKTsKLX0pOwotCi1kb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJh
dmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0uaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBhODBkMzExOTBkZTZjZjM5NGJlMzM4YmZlZWNh
ZjNlOTY5OTMzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJz
YWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMjEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08dGl0bGU+VHJlZVdhbGtl
cjogY3Jvc3MtcmVhbG0gTm9kZUZpbHRlciB0aHJvd3MgVHlwZUVycm9yIG9mIGN1cnJlbnQgcmVh
bG08L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5v
cmcvI2NhbGwtYS11c2VyLW9iamVjdHMtb3BlcmF0aW9uIj4KLQotPGJvZHkgaWQ9InRyZWVXYWxr
ZXJSb290Ij4KLTxkaXY+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci1jb25zdCBpZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKLWlmcmFtZS5zcmMgPSAic3VwcG9ydC9UcmVlV2Fs
a2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLXN1YmZyYW1lLmh0bWwiOwotaWZyYW1l
Lm9ubG9hZCA9ICgpID0+IHsKLSAgICBmb3IgKGNvbnN0IHRlc3RDYXNlIG9mIGlmcmFtZS5jb250
ZW50V2luZG93LnRlc3RDYXNlcykgewotICAgICAgICB0ZXN0KHQgPT4gewotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0ZXN0Q2FzZS5hY3R1YWwuY29uc3RydWN0b3IsIHRlc3RDYXNlLmV4cGVj
dGVkKTsKLSAgICAgICAgfSwgdGVzdENhc2UuZGVzY3JpcHRpb24pOwotICAgIH0KLX07Ci1kb2N1
bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9y
dC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Npbmct
Y29udGV4dC1zdWJmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZp
bHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQtc3ViZnJhbWUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVlMzkzZDBmMDgxNzI4YWJhODA2YTcxNTVmYjgx
Mzk3OTZiMDg5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJz
YWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwt
YnJvd3NpbmctY29udGV4dC1zdWJmcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci0KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBjcmVhdGVOb2RlSXRl
cmF0b3IoKSB7Ci0gICAgZnVuY3Rpb24gZmlsdGVyKCkgewotICAgICAgICBub2RlSXRlcmF0b3Iu
ZHVtbXlGaWx0ZXJDYWxsZWQgPSB0cnVlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgY29uc3Qgbm9kZUl0ZXJhdG9yID0gcGFyZW50LmRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRv
cihwYXJlbnQuZG9jdW1lbnQuYm9keSwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIGZpbHRlcik7
Ci0gICAgbm9kZUl0ZXJhdG9yLmR1bW15RmlsdGVyQ2FsbGVkID0gZmFsc2U7Ci0gICAgcmV0dXJu
IG5vZGVJdGVyYXRvcjsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvVHJlZVdh
bGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBv
cnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzhiZGExNGMwZmFmMmI4MWZiYjc1NTZm
OWMxMmEwNjMxYmJhN2VjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3Ry
YXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0t
c3ViZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotCi08Ym9keSBpZD0idHJlZVdhbGtlclJvb3QiPgotPGRpdj48L2Rpdj4KLQotPHNjcmlw
dD4KLXdpbmRvdy50ZXN0Q2FzZXMgPSBbXTsKLQotKGZ1bmN0aW9uKCkgewotICAgIGxldCB3YWxr
ZXIgPSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihwYXJlbnQudHJlZVdhbGtlclJv
b3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBuZXcgcGFyZW50Lk9iamVjdCk7Ci0gICAgdHJ5
IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5wdXNoKHsg
YWN0dWFsOiBlcnIsIGV4cGVjdGVkOiBwYXJlbnQuVHlwZUVycm9yLCBkZXNjcmlwdGlvbjogInBh
cmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIsIHBhcmVudCdz
IHJvb3QiIH0pOyB9Ci0KLSAgICB3YWxrZXIgPSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlVHJlZVdh
bGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5ldyBwYXJlbnQu
T2JqZWN0KTsKLSAgICB0cnkgeyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IGNhdGNoIChlcnIpIHsg
dGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0ZWQ6IHBhcmVudC5UeXBlRXJyb3Is
IGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIHBhcmVudCdz
IGZpbHRlciwgaWZyYW1lJ3Mgcm9vdCIgfSk7IH0KLQotICAgIHdhbGtlciA9IHBhcmVudC5kb2N1
bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRyZWVXYWxrZXJSb290LCBOb2RlRmlsdGVyLlNIT1dfRUxF
TUVOVCwge30pOwotICAgIHRyeSB7IHdhbGtlci5maXJzdENoaWxkKCk7IH0gY2F0Y2ggKGVycikg
eyB0ZXN0Q2FzZXMucHVzaCh7IGFjdHVhbDogZXJyLCBleHBlY3RlZDogcGFyZW50LlR5cGVFcnJv
ciwgZGVzY3JpcHRpb246ICJwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgaWZyYW1l
J3MgZmlsdGVyLCBpZnJhbWUncyByb290IiB9KTsgfQotCi0gICAgd2Fsa2VyID0gZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlci5jYWxsKHBhcmVudC5kb2N1bWVudCwgdHJlZVdhbGtlclJvb3QsIE5v
ZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7fSk7Ci0gICAgdHJ5IHsgd2Fsa2VyLmZpcnN0Q2hpbGQo
KTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5wdXNoKHsgYWN0dWFsOiBlcnIsIGV4cGVjdGVk
OiBUeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8LCBpZnJhbWVzJ3MgbWV0
aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QiIH0pOyB9Ci19KSgpOwotPC9zY3Jp
cHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>