<?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>64561</bug_id>
          
          <creation_ts>2011-07-14 14:08:03 -0700</creation_ts>
          <short_desc>fix remaining style issues in the static-dashboards directory</short_desc>
          <delta_ts>2011-07-14 23:38:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>437316</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-14 14:08:03 -0700</bug_when>
    <thetext>fix remaining style issues in the static-dashboards directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437331</commentid>
    <comment_count>1</comment_count>
      <attachid>100863</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-14 14:23:08 -0700</bug_when>
    <thetext>Created attachment 100863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437398</commentid>
    <comment_count>2</comment_count>
      <attachid>100890</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-14 16:20:41 -0700</bug_when>
    <thetext>Created attachment 100890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437580</commentid>
    <comment_count>3</comment_count>
      <attachid>100890</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-14 23:12:17 -0700</bug_when>
    <thetext>Comment on attachment 100890
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437595</commentid>
    <comment_count>4</comment_count>
      <attachid>100890</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 23:38:46 -0700</bug_when>
    <thetext>Comment on attachment 100890
Patch

Clearing flags on attachment: 100890

Committed r91054: &lt;http://trac.webkit.org/changeset/91054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437596</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 23:38:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100863</attachid>
            <date>2011-07-14 14:23:08 -0700</date>
            <delta_ts>2011-07-14 16:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64561-20110714142305.patch</filename>
            <type>text/plain</type>
            <size>104137</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwMjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NzVjMWM0OWNkMTM3NTAzOWI0YmIxN2EzYmE3ZTQxYWRi
ZjY5NmVkLi45MjFlZTA0OWM2YmNkOTMxZDE5MzY0OTI5MWJhZDhiM2E0NTY3ZWRiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkg
QEAKIDIwMTEtMDctMTQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAorICAgICAg
ICBmaXggcmVtYWluaW5nIHN0eWxlIGlzc3VlcyBpbiB0aGUgc3RhdGljLWRhc2hib2FyZHMgZGly
ZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1s
OgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMu
anM6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9h
cmRfYmFzZS5qczoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanM6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sOgorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5odG1sOgorCisyMDExLTA3
LTE0ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgZml4IGNvZGlu
ZyBzdHlsZSBvZiBkYXNoYm9hcmRfYmFzZS5qcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NDUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1sIGIvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1s
CmluZGV4IGExN2Q5NTQ5MWUyNzkyZDc3YjI0NDM1ZjYyMTYyZTI0Yjc2N2EyNzguLmVkZTYxYjkw
NWMzZTMzZGRjYTA4MTE3MWZlNzc2OTAyYzllYmFjMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbAorKysg
Yi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1
bHRzLmh0bWwKQEAgLTMwLDEzMiArMzAsMTIzIEBAIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiA8aHRtbD4KIAogPGhl
YWQ+Ci0gIDx0aXRsZT5MYXlvdXQgdGVzdCBwYXNzaW5nIHN0YXR1czwvdGl0bGU+Ci0gIDxzdHls
ZT4KLSAgICBoMiB7Ci0gICAgICBtYXJnaW46IDA7Ci0gICAgICBmb250LXNpemU6IDEuMmVtOwot
ICAgIH0KLSAgICBoMyB7Ci0gICAgICBtYXJnaW4tYm90dG9tOiAwOwotICAgICAgZm9udC1zaXpl
OiAxZW07Ci0gICAgfQotICAgIC5jb250YWluZXIgewotICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOwotICAgICAgcGFkZGluZzogM3B4OwotICAgIH0KLSAgICBpbWcgewotICAgICAgYm9yZGVy
OiAxcHggZG90dGVkIGdyZXk7Ci0gICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKLSAgICAgIHBhZGRp
bmc6IDJweDsKLSAgICB9Ci0gIDwvc3R5bGU+Ci0gIDxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+
PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+Ci0g
IDxzY3JpcHQ+Ci0gIC8qKgotICAgKiBAZmlsZW92ZXJ2aWV3IENyZWF0ZXMgYSBkYXNoYm9hcmQg
Zm9yIHRyYWNraW5nIG51bWJlciBvZiBwYXNzZXMvZmFpbHVyZXMKLSAgICogcGVyIHJ1bi4KLSAg
ICoKLSAgICogQ3VycmVudGx5LCBvbmx5IHdlYmtpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCBidXQg
YWRkaW5nIG90aGVyIHRlc3QgdHlwZXMKLSAgICogc2hvdWxkIGp1c3QgcmVxdWlyZSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgKiAgIC1nZW5lcmF0ZSByZXN1bHRzLmpzb24gZm9yIHRoZXNlIHRl
c3RzCi0gICAqICAgLWNvcHkgdGhlbSB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24KLSAgICog
ICAtYWRkIHRoZSBidWlsZGVyIG5hbWUgdG8gdGhlIGxpc3Qgb2YgYnVpbGRlcnMgaW4gZGFzaGJv
YXJkX2Jhc2UuanMuCi0gICAqLwotCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyBNZXRo
b2RzIGFuZCBvYmplY3RzIGZyb20gZGFzaGJvYXJkX2Jhc2UuanMgdG8gb3ZlcnJpZGUuCi0gIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotICBmdW5jdGlvbiBnZW5lcmF0ZVBhZ2UoKSB7Ci0gICAgdmFy
IGh0bWwgPSBnZXRIVE1MRm9yVGVzdFR5cGVTd2l0Y2hlcih0cnVlKSArICc8YnI+JzsKLSAgICBm
b3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKLSAgICAgIGh0bWwgKz0gZ2V0SFRNTEZv
ckJ1aWxkZXIoYnVpbGRlcik7Ci0gICAgfQorPHRpdGxlPkxheW91dCB0ZXN0IHBhc3Npbmcgc3Rh
dHVzPC90aXRsZT4KKzxzdHlsZT4KK2gyIHsKKyAgICBtYXJnaW46IDA7CisgICAgZm9udC1zaXpl
OiAxLjJlbTsKK30KK2gzIHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6ZTog
MWVtOworfQorLmNvbnRhaW5lciB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHBh
ZGRpbmc6IDNweDsKK30KK2ltZyB7CisgICAgYm9yZGVyOiAxcHggZG90dGVkIGdyZXk7CisgICAg
bWFyZ2luLXJpZ2h0OiA1cHg7CisgICAgcGFkZGluZzogMnB4OworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZGFzaGJvYXJkX2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKy8vIEBmaWxlb3ZlcnZpZXcgQ3JlYXRlcyBhIGRh
c2hib2FyZCBmb3IgdHJhY2tpbmcgbnVtYmVyIG9mIHBhc3Nlcy9mYWlsdXJlcyBwZXIgcnVuLgor
Ly8KKy8vIEN1cnJlbnRseSwgb25seSB3ZWJraXQgdGVzdHMgYXJlIHN1cHBvcnRlZCwgYnV0IGFk
ZGluZyBvdGhlciB0ZXN0IHR5cGVzCisvLyBzaG91bGQganVzdCByZXF1aXJlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6CisvLyAgICAgLWdlbmVyYXRlIHJlc3VsdHMuanNvbiBmb3IgdGhlc2UgdGVzdHMK
Ky8vICAgICAtY29weSB0aGVtIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbgorLy8gICAgIC1h
ZGQgdGhlIGJ1aWxkZXIgbmFtZSB0byB0aGUgbGlzdCBvZiBidWlsZGVycyBpbiBkYXNoYm9hcmRf
YmFzZS5qcy4KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBNZXRob2RzIGFuZCBvYmplY3Rz
IGZyb20gZGFzaGJvYXJkX2Jhc2UuanMgdG8gb3ZlcnJpZGUuCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KK2Z1bmN0aW9uIGdlbmVyYXRlUGFnZSgpCit7CisgICAgdmFyIGh0bWwgPSBodG1sRm9yVGVz
dFR5cGVTd2l0Y2hlcih0cnVlKSArICc8YnI+JzsKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGdf
YnVpbGRlcnMpCisgICAgICAgIGh0bWwgKz0gaHRtbEZvckJ1aWxkZXIoYnVpbGRlcik7CiAgICAg
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBodG1sOwotICB9Cit9CiAKLSAgZnVuY3Rpb24gaGFu
ZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpIHsKK2Z1bmN0aW9uIGhhbmRsZVZhbGlk
SGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQorewogICAgIHN3aXRjaChrZXkpIHsKLSAgICAgIGNh
c2UgJ3Jhd1ZhbHVlcyc6CisgICAgY2FzZSAncmF3VmFsdWVzJzoKICAgICAgICAgZ19jdXJyZW50
U3RhdGVba2V5XSA9IHZhbHVlID09ICd0cnVlJzsKLQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgICAgZGVmYXVsdDoKKyAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICB9Cit9CiAKLSAgZ19kZWZhdWx0U3RhdGVWYWx1ZXMgPSB7CitnX2RlZmF1bHRTdGF0ZVZh
bHVlcyA9IHsKICAgICByYXdWYWx1ZXM6IGZhbHNlCi0gIH07Cit9OwogCi0gIGZ1bmN0aW9uIGdl
dEhUTUxGb3JCdWlsZGVyKGJ1aWxkZXIpIHsKK2Z1bmN0aW9uIGh0bWxGb3JCdWlsZGVyKGJ1aWxk
ZXIpCit7CiAgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl07CiAg
ICAgLy8gU29tZSBrZXlzIHdlcmUgYWRkZWQgbGF0ZXIgdGhhbiBvdGhlcnMsIHNvIHRoZXkgZG9u
J3QgaGF2ZSBhcyBtYW55CiAgICAgLy8gYnVpbGRzLiBVc2UgdGhlIHNob3J0ZXN0LgotICAgIC8v
IFRPRE8ob2phbik6IE9uY2UgNTAwIHJ1bnMgaGF2ZSBmaW5pc2hlZCwgd2UgY2FuIGdldCByaWQg
b2YgcGFzc2luZyB0aGlzCisgICAgLy8gRklYTUU6IE9uY2UgNTAwIHJ1bnMgaGF2ZSBmaW5pc2hl
ZCwgd2UgY2FuIGdldCByaWQgb2YgcGFzc2luZyB0aGlzCiAgICAgLy8gYXJvdW5kIGFuZCBqdXN0
IGFzc3VtZSBhbGwga2V5cyBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBidWlsZGVycyBmb3IgYQog
ICAgIC8vIGdpdmVuIGJ1aWxkZXIuCiAgICAgdmFyIG51bUNvbHVtbnMgPSByZXN1bHRzW0FMTF9G
SVhBQkxFX0NPVU5UX0tFWV0ubGVuZ3RoOwogICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9Y29u
dGFpbmVyPjxoMj4nICsgYnVpbGRlciArICc8L2gyPic7CiAKLSAgICBpZiAoZ19jdXJyZW50U3Rh
dGUucmF3VmFsdWVzKSB7Ci0gICAgICBodG1sICs9IGdldFJhd1ZhbHVlc0hUTUwocmVzdWx0cywg
bnVtQ29sdW1ucyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGh0bWwgKz0gJzxhIGhyZWY9InRpbWVs
aW5lX2V4cGxvcmVyLmh0bWwnICsgKGxvY2F0aW9uLmhhc2ggPyBsb2NhdGlvbi5oYXNoICsgJyYn
IDogJyMnKSArICdidWlsZGVyPScgKyBidWlsZGVyICsgJyI+JyArCi0gICAgICAgICAgZ2V0Q2hh
cnRIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpICsgJzwvYT4nOworICAgIGlmIChnX2N1cnJlbnRT
dGF0ZS5yYXdWYWx1ZXMpCisgICAgICAgIGh0bWwgKz0gcmF3VmFsdWVzSFRNTChyZXN1bHRzLCBu
dW1Db2x1bW5zKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaHRtbCArPSAnPGEgaHJlZj0idGltZWxp
bmVfZXhwbG9yZXIuaHRtbCcgKyAobG9jYXRpb24uaGFzaCA/IGxvY2F0aW9uLmhhc2ggKyAnJicg
OiAnIycpICsgJ2J1aWxkZXI9JyArIGJ1aWxkZXIgKyAnIj4nICsKKyAgICAgICAgICAgIGNoYXJ0
SFRNTChyZXN1bHRzLCBudW1Db2x1bW5zKSArICc8L2E+JzsKICAgICB9CiAKICAgICBodG1sICs9
ICc8L2Rpdj4nOwotCiAgICAgcmV0dXJuIGh0bWw7Ci0gIH0KK30KIAotICBmdW5jdGlvbiBnZXRS
YXdWYWx1ZXNIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpIHsKLSAgICB2YXIgaHRtbCA9IGdldEhU
TUxGb3JTdW1tYXJ5VGFibGUocmVzdWx0cywgbnVtQ29sdW1ucykgKwotICAgICAgICBnZXRIVE1M
Rm9yVGVzdFR5cGUocmVzdWx0cywgRklYQUJMRV9DT1VOVFNfS0VZLCBGSVhBQkxFX0RFU0NSSVBU
SU9OLAotICAgICAgICAgICAgbnVtQ29sdW1ucyk7CitmdW5jdGlvbiByYXdWYWx1ZXNIVE1MKHJl
c3VsdHMsIG51bUNvbHVtbnMpCit7CisgICAgdmFyIGh0bWwgPSBodG1sRm9yU3VtbWFyeVRhYmxl
KHJlc3VsdHMsIG51bUNvbHVtbnMpICsKKyAgICAgICAgaHRtbEZvclRlc3RUeXBlKHJlc3VsdHMs
IEZJWEFCTEVfQ09VTlRTX0tFWSwgRklYQUJMRV9ERVNDUklQVElPTiwgbnVtQ29sdW1ucyk7CiAg
ICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAgaHRtbCArPQotICAgICAgICAg
IGdldEhUTUxGb3JUZXN0VHlwZShyZXN1bHRzLCBERUZFUlJFRF9DT1VOVFNfS0VZLAotICAgICAg
ICAgICAgICBERUZFUlJFRF9ERVNDUklQVElPTiwgbnVtQ29sdW1ucykgKwotICAgICAgICAgIGdl
dEhUTUxGb3JUZXN0VHlwZShyZXN1bHRzLCBXT05URklYX0NPVU5UU19LRVksIFdPTlRGSVhfREVT
Q1JJUFRJT04sCi0gICAgICAgICAgICAgIG51bUNvbHVtbnMpOworICAgICAgICBodG1sICs9IGh0
bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBERUZFUlJFRF9DT1VOVFNfS0VZLCBERUZFUlJFRF9ERVND
UklQVElPTiwgbnVtQ29sdW1ucykgKworICAgICAgICAgICAgaHRtbEZvclRlc3RUeXBlKHJlc3Vs
dHMsIFdPTlRGSVhfQ09VTlRTX0tFWSwgV09OVEZJWF9ERVNDUklQVElPTiwgbnVtQ29sdW1ucyk7
CiAgICAgfQogICAgIHJldHVybiBodG1sOwotICB9Cit9CiAKLSAgZnVuY3Rpb24gZ2V0Q2hhcnRI
VE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpIHsKK2Z1bmN0aW9uIGNoYXJ0SFRNTChyZXN1bHRzLCBu
dW1Db2x1bW5zKQorewogICAgIHZhciBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID0gaXNUaXBP
ZlRyZWVXZWJLaXRCdWlsZGVyKCk7Ci0gICAgdmFyIHJldmlzaW9uS2V5ID0gc2hvdWxkU2hvd1dl
YktpdFJldmlzaW9ucyA/IFdFQktJVF9SRVZJU0lPTlNfS0VZIDoKLSAgICAgICAgQ0hST01FX1JF
VklTSU9OU19LRVk7CisgICAgdmFyIHJldmlzaW9uS2V5ID0gc2hvdWxkU2hvd1dlYktpdFJldmlz
aW9ucyA/IFdFQktJVF9SRVZJU0lPTlNfS0VZIDogQ0hST01FX1JFVklTSU9OU19LRVk7CiAgICAg
dmFyIHN0YXJ0UmV2aXNpb24gPSByZXN1bHRzW3JldmlzaW9uS2V5XVtudW1Db2x1bW5zIC0gMV07
CiAgICAgdmFyIGVuZFJldmlzaW9uID0gcmVzdWx0c1tyZXZpc2lvbktleV1bMF07Ci0gICAgdmFy
IHJldmlzaW9uTGFiZWwgPSBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID8gIldlYktpdCBSZXZp
c2lvbiIgOgotICAgICAgICAiQ2hyb21pdW0gUmV2aXNpb24iOworICAgIHZhciByZXZpc2lvbkxh
YmVsID0gc2hvdWxkU2hvd1dlYktpdFJldmlzaW9ucyA/ICJXZWJLaXQgUmV2aXNpb24iIDogIkNo
cm9taXVtIFJldmlzaW9uIjsKIAogICAgIHZhciBmaXhhYmxlID0gcmVzdWx0c1tGSVhBQkxFX0NP
VU5UX0tFWV0uc2xpY2UoMCwgbnVtQ29sdW1ucyk7Ci0gICAgdmFyIGh0bWwgPSBnZXRDaGFydCgi
VG90YWwgZmFpbGluZyIsIHsiIjogZml4YWJsZX0sIHJldmlzaW9uTGFiZWwsCi0gICAgICAgIHN0
YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uKTsKKyAgICB2YXIgaHRtbCA9IGNoYXJ0KCJUb3RhbCBm
YWlsaW5nIiwgeyIiOiBmaXhhYmxlfSwgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5k
UmV2aXNpb24pOwogCiAgICAgdmFyIHZhbHVlcyA9IHZhbHVlc1BlckV4cGVjdGF0aW9uKHJlc3Vs
dHNbRklYQUJMRV9DT1VOVFNfS0VZXSwgbnVtQ29sdW1ucyk7CiAgICAgLy8gRG9uJ3QgY2FyZSBh
Ym91dCBudW1iZXIgb2YgcGFzc2VzIGZvciB0aGUgY2hhcnRzLgogICAgIGRlbGV0ZSh2YWx1ZXNb
J1AnXSk7CiAKLSAgICByZXR1cm4gaHRtbCArIGdldENoYXJ0KCJEZXRhaWxlZCBicmVha2Rvd24i
LCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsCi0gICAgICAgIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlz
aW9uKTsKLSAgfQorICAgIHJldHVybiBodG1sICsgY2hhcnQoIkRldGFpbGVkIGJyZWFrZG93biIs
IHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pOworfQog
Ci0gIHZhciBMQUJFTF9DT0xPUlMgPSBbJ0ZGMDAwMCcsICcwMEZGMDAnLCAnMDAwMEZGJywgJzAw
MDAwMCcsICdGRjZFQjQnLAotICAgICAgJ0ZGQTgxMicsICc5QjMwRkYnLCAnMDBGRkNDJ107Cit2
YXIgTEFCRUxfQ09MT1JTID0gWydGRjAwMDAnLCAnMDBGRjAwJywgJzAwMDBGRicsICcwMDAwMDAn
LCAnRkY2RUI0JywgJ0ZGQTgxMicsICc5QjMwRkYnLCAnMDBGRkNDJ107CiAKLSAgLy8gRklYTUU6
IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGV4Y2x1ZGUgb3V0bGllcnMuIFRoaXMgaXMganVzdCBzbyB3
ZSBleGNsdWRlCi0gIC8vIHJ1bnMgd2hlcmUgZXZlcnkgdGVzdCBmYWlsZWQuCi0gIHZhciBNQVhf
VkFMVUUgPSAxMDAwMDsKKy8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBleGNsdWRlIG91
dGxpZXJzLiBUaGlzIGlzIGp1c3Qgc28gd2UgZXhjbHVkZQorLy8gcnVucyB3aGVyZSBldmVyeSB0
ZXN0IGZhaWxlZC4KK3ZhciBNQVhfVkFMVUUgPSAxMDAwMDsKIAotICBmdW5jdGlvbiBmaWx0ZXJl
ZFZhbHVlcyh2YWx1ZXMsIGRlc2lyZWROdW1iZXJPZlBvaW50cykgeworZnVuY3Rpb24gZmlsdGVy
ZWRWYWx1ZXModmFsdWVzLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpCit7CiAgICAgLy8gRmlsdGVy
IG91dCB2YWx1ZXMgdG8gbWFrZSB0aGUgZ3JhcGggYSBiaXQgbW9yZSByZWFkYWJsZSBhbmQgdG8g
a2VlcCBVUkxzCiAgICAgLy8gZnJvbSBleGNlZWRpbmcgdGhlIGJyb3dzZXJzIG1heCBsZW5ndGgg
cmVzdHJpY3Rpb24uCiAgICAgdmFyIGZpbHRlckFtb3VudCA9IE1hdGguZmxvb3IodmFsdWVzLmxl
bmd0aCAvIGRlc2lyZWROdW1iZXJPZlBvaW50cyk7CkBAIC0xNjMsMjAgKzE1NCwxNSBAQCBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICAgICAgICByZXR1cm4gdmFsdWVzOwogCiAgICAgcmV0dXJuIHZhbHVlcy5maWx0
ZXIoZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7Ci0gICAgICAvLyBJbmNsdWRlIHRo
ZSBtb3N0IHJlY2VudCBhbmQgb2xkZXN0IHZhbHVlcyBhbmQgZXhjbHVkZSBvdXRsaWVycy4KLSAg
ICAgIHJldHVybiAoaW5kZXggJSBmaWx0ZXJBbW91bnQgPT0gMCB8fCBpbmRleCA9PSBhcnJheS5s
ZW5ndGggLSAxKSAmJgotICAgICAgICAgIChhcnJheVtpbmRleF0gPCBNQVhfVkFMVUUgJiYgYXJy
YXlbaW5kZXhdICE9IDApOworICAgICAgICAvLyBJbmNsdWRlIHRoZSBtb3N0IHJlY2VudCBhbmQg
b2xkZXN0IHZhbHVlcyBhbmQgZXhjbHVkZSBvdXRsaWVycy4KKyAgICAgICAgcmV0dXJuIChpbmRl
eCAlIGZpbHRlckFtb3VudCA9PSAwIHx8IGluZGV4ID09IGFycmF5Lmxlbmd0aCAtIDEpICYmIChh
cnJheVtpbmRleF0gPCBNQVhfVkFMVUUgJiYgYXJyYXlbaW5kZXhdICE9IDApOwogICAgIH0pOwot
ICB9Cit9CiAKLSAgZnVuY3Rpb24gY2hhcnRVcmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJl
bCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sCi0gICAgICBkZXNpcmVkTnVtYmVyT2ZQb2lu
dHMpIHsKK2Z1bmN0aW9uIGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0
YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpIHsKICAgICB2
YXIgbWF4VmFsdWUgPSAwOwotICAgIGZvciAodmFyIGV4cGVjdGF0aW9uIGluIHZhbHVlcykgewot
ICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwKLSAgICAgICAgICBNYXRoLm1heC5h
cHBseShudWxsLCBmaWx0ZXJlZFZhbHVlcyh2YWx1ZXNbZXhwZWN0YXRpb25dLAotICAgICAgICAg
ICAgICBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpKSk7Ci0gICAgfQorICAgIGZvciAodmFyIGV4cGVj
dGF0aW9uIGluIHZhbHVlcykKKyAgICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwg
TWF0aC5tYXguYXBwbHkobnVsbCwgZmlsdGVyZWRWYWx1ZXModmFsdWVzW2V4cGVjdGF0aW9uXSwg
ZGVzaXJlZE51bWJlck9mUG9pbnRzKSkpOwogCiAgICAgdmFyIGNoYXJ0RGF0YSA9ICcnOwogICAg
IHZhciBsYWJlbHMgPSAnJzsKQEAgLTE4NCwxMzkgKzE3MCwxMjkgQEAgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
ICAgIHZhciBmaXJzdCA9IHRydWU7CiAgICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVz
KSB7Ci0gICAgICBjaGFydERhdGEgKz0gKGZpcnN0ID8gJ2U6JyA6ICcsJykgKwotICAgICAgICAg
IGV4dGVuZGVkRW5jb2RlKGZpbHRlcmVkVmFsdWVzKHZhbHVlc1tleHBlY3RhdGlvbl0sCi0gICAg
ICAgICAgICAgIGRlc2lyZWROdW1iZXJPZlBvaW50cykucmV2ZXJzZSgpLCBtYXhWYWx1ZSk7Ci0K
LSAgICAgIGlmIChleHBlY3RhdGlvbikgewotICAgICAgICBudW1MYWJlbHMrKzsKLSAgICAgICAg
bGFiZWxzICs9IChmaXJzdCA/ICcnIDogJ3wnKSArIGdldEV4cGVjdGF0aW9uc01hcCgpW2V4cGVj
dGF0aW9uXTsKLSAgICAgIH0KLSAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgIGNoYXJ0RGF0
YSArPSAoZmlyc3QgPyAnZTonIDogJywnKSArIGV4dGVuZGVkRW5jb2RlKGZpbHRlcmVkVmFsdWVz
KHZhbHVlc1tleHBlY3RhdGlvbl0sIGRlc2lyZWROdW1iZXJPZlBvaW50cykucmV2ZXJzZSgpLCBt
YXhWYWx1ZSk7CisKKyAgICAgICAgaWYgKGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICBudW1M
YWJlbHMrKzsKKyAgICAgICAgICAgIGxhYmVscyArPSAoZmlyc3QgPyAnJyA6ICd8JykgKyBleHBl
Y3RhdGlvbnNNYXAoKVtleHBlY3RhdGlvbl07CisgICAgICAgIH0KKyAgICAgICAgZmlyc3QgPSBm
YWxzZTsKICAgICB9CiAKICAgICB2YXIgdXJsID0gImh0dHA6Ly9jaGFydC5hcGlzLmdvb2dsZS5j
b20vY2hhcnQ/Y2h0PWxjJmNocz02MDB4NDAwJmNoZD0iICsKLSAgICAgICAgY2hhcnREYXRhICsg
IiZjaGc9MTUsMTUsMSwzJmNoeHQ9eCx4LHkmY2h4bD0xOnx8IiArIHJldmlzaW9uTGFiZWwgKwot
ICAgICAgICAifCZjaHhyPTAsIiArIHN0YXJ0UmV2aXNpb24gKyAiLCIgKyBlbmRSZXZpc2lvbiAr
ICJ8MiwwLCIgKyBtYXhWYWx1ZSArCi0gICAgICAgICImY2h0dD0iICsgdGl0bGU7CisgICAgICAg
ICAgICBjaGFydERhdGEgKyAiJmNoZz0xNSwxNSwxLDMmY2h4dD14LHgseSZjaHhsPTE6fHwiICsg
cmV2aXNpb25MYWJlbCArCisgICAgICAgICAgICAifCZjaHhyPTAsIiArIHN0YXJ0UmV2aXNpb24g
KyAiLCIgKyBlbmRSZXZpc2lvbiArICJ8MiwwLCIgKyBtYXhWYWx1ZSArICImY2h0dD0iICsgdGl0
bGU7CiAKIAotICAgIGlmIChsYWJlbHMpIHsKLSAgICAgIHVybCArPSAiJmNoZGw9IiArIGxhYmVs
cyArICImY2hjbz0iICsKLSAgICAgICAgICBMQUJFTF9DT0xPUlMuc2xpY2UoMCwgbnVtTGFiZWxz
KS5qb2luKCcsJyk7Ci0gICAgfQorICAgIGlmIChsYWJlbHMpCisgICAgICAgIHVybCArPSAiJmNo
ZGw9IiArIGxhYmVscyArICImY2hjbz0iICsgTEFCRUxfQ09MT1JTLnNsaWNlKDAsIG51bUxhYmVs
cykuam9pbignLCcpOwogICAgIHJldHVybiB1cmw7Ci0gIH0KK30KIAotICBmdW5jdGlvbiBnZXRD
aGFydCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZp
c2lvbikgeworZnVuY3Rpb24gY2hhcnQodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3Rh
cnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pCit7CiAgICAgdmFyIGRlc2lyZWROdW1iZXJPZlBvaW50
cyA9IDQwMDsKLSAgICB2YXIgdXJsID0gY2hhcnRVcmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25M
YWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sCi0gICAgICAgIGRlc2lyZWROdW1iZXJP
ZlBvaW50cyk7CisgICAgdmFyIHVybCA9IGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9u
TGFiZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMp
OwogCiAgICAgd2hpbGUgKHVybC5sZW5ndGggPj0gMjA0OCkgewotICAgICAgLy8gRGVjcmVhc2Ug
dGhlIGRlc2lyZWQgbnVtYmVyIG9mIHBvaW50cyBncmFkdWFsbHkgdW50aWwgd2UgZ2V0IGEgVVJM
IHRoYXQKLSAgICAgIC8vIGRvZXNuJ3QgZXhjZWVkIGNoYXJ0c2VydmVyJ3MgbWF4IFVSTCBsZW5n
dGguCi0gICAgICBkZXNpcmVkTnVtYmVyT2ZQb2ludHMgPSAzIC8gNCAqIGRlc2lyZWROdW1iZXJP
ZlBvaW50czsKLSAgICAgIHVybCA9IGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFi
ZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLAotICAgICAgICAgIGRlc2lyZWROdW1iZXJP
ZlBvaW50cyk7CisgICAgICAgIC8vIERlY3JlYXNlIHRoZSBkZXNpcmVkIG51bWJlciBvZiBwb2lu
dHMgZ3JhZHVhbGx5IHVudGlsIHdlIGdldCBhIFVSTCB0aGF0CisgICAgICAgIC8vIGRvZXNuJ3Qg
ZXhjZWVkIGNoYXJ0c2VydmVyJ3MgbWF4IFVSTCBsZW5ndGguCisgICAgICAgIGRlc2lyZWROdW1i
ZXJPZlBvaW50cyA9IDMgLyA0ICogZGVzaXJlZE51bWJlck9mUG9pbnRzOworICAgICAgICB1cmwg
PSBjaGFydFVybCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBl
bmRSZXZpc2lvbiwgZGVzaXJlZE51bWJlck9mUG9pbnRzKTsKICAgICB9CiAKICAgICByZXR1cm4g
JzxpbWcgc3JjPSInICsgdXJsICsgJyI+JzsKLSAgfQorfQogCi0gIGZ1bmN0aW9uIGdldEhUTUxG
b3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucykgewotICAgIHJldHVybiBnZXRIVE1M
Rm9yVGFibGVSb3coJ1dlYktpdCBSZXZpc2lvbicsCi0gICAgICAgICAgICByZXN1bHRzW1dFQktJ
VF9SRVZJU0lPTlNfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSkgKwotICAgICAgICBnZXRIVE1M
Rm9yVGFibGVSb3coJ0Nocm9tZSBSZXZpc2lvbicsCi0gICAgICAgICAgICByZXN1bHRzW0NIUk9N
RV9SRVZJU0lPTlNfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSk7Ci0gIH0KK2Z1bmN0aW9uIGh0
bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucykKK3sKKyAgICByZXR1cm4gaHRt
bEZvclRhYmxlUm93KCdXZWJLaXQgUmV2aXNpb24nLCByZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNf
S0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSkgKworICAgICAgICBodG1sRm9yVGFibGVSb3coJ0No
cm9tZSBSZXZpc2lvbicsIHJlc3VsdHNbQ0hST01FX1JFVklTSU9OU19LRVldLnNsaWNlKDAsIG51
bUNvbHVtbnMpKTsKK30KIAotICBmdW5jdGlvbiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24s
IGh0bWwpIHsKLSAgICByZXR1cm4gJzxoMz4nICsgZGVzY3JpcHRpb24gKyAnPC9oMz48dGFibGU+
PHRib2R5PicgKyBodG1sICsKLSAgICAgICAgJzwvdGJvZHk+PC90YWJsZT4nOwotICB9CitmdW5j
dGlvbiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0bWwpCit7CisgICAgcmV0dXJuICc8
aDM+JyArIGRlc2NyaXB0aW9uICsgJzwvaDM+PHRhYmxlPjx0Ym9keT4nICsgaHRtbCArICc8L3Ri
b2R5PjwvdGFibGU+JzsKK30KIAotICBmdW5jdGlvbiBnZXRIVE1MRm9yU3VtbWFyeVRhYmxlKHJl
c3VsdHMsIG51bUNvbHVtbnMpIHsKK2Z1bmN0aW9uIGh0bWxGb3JTdW1tYXJ5VGFibGUocmVzdWx0
cywgbnVtQ29sdW1ucykKK3sKICAgICB2YXIgcGVyY2VudCA9IFtdOwogICAgIHZhciBmaXhhYmxl
ID0gcmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV0uc2xpY2UoMCwgbnVtQ29sdW1ucyk7CiAgICAg
dmFyIGFsbEZpeGFibGUgPSByZXN1bHRzW0FMTF9GSVhBQkxFX0NPVU5UX0tFWV0uc2xpY2UoMCwg
bnVtQ29sdW1ucyk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db2x1bW5zOyBpKyspIHsK
LSAgICAgIHZhciBwZXJjZW50YWdlID0gMTAwICogKGFsbEZpeGFibGVbaV0gLSBmaXhhYmxlW2ld
KSAvIGFsbEZpeGFibGVbaV07Ci0gICAgICAvLyBSb3VuZCB0byB0aGUgbmVhcmVzdCB0ZW50aCBv
ZiBhIHBlcmNlbnQuCi0gICAgICBwZXJjZW50LnB1c2goTWF0aC5yb3VuZChwZXJjZW50YWdlICog
MTApIC8gMTAgKyAnJScpOworICAgICAgICB2YXIgcGVyY2VudGFnZSA9IDEwMCAqIChhbGxGaXhh
YmxlW2ldIC0gZml4YWJsZVtpXSkgLyBhbGxGaXhhYmxlW2ldOworICAgICAgICAvLyBSb3VuZCB0
byB0aGUgbmVhcmVzdCB0ZW50aCBvZiBhIHBlcmNlbnQuCisgICAgICAgIHBlcmNlbnQucHVzaChN
YXRoLnJvdW5kKHBlcmNlbnRhZ2UgKiAxMCkgLyAxMCArICclJyk7CiAgICAgfQotICAgIHZhciBo
dG1sID0gZ2V0SFRNTEZvclJldmlzaW9uUm93cyhyZXN1bHRzLCBudW1Db2x1bW5zKSArCi0gICAg
ICAgIGdldEhUTUxGb3JUYWJsZVJvdygnUGVyY2VudCBwYXNzZWQnLCBwZXJjZW50KSArCi0gICAg
ICAgIGdldEhUTUxGb3JUYWJsZVJvdygnRmFpbHVyZXMgKGRlZHVwZWQpJywgZml4YWJsZSkgKwot
ICAgICAgICBnZXRIVE1MRm9yVGFibGVSb3coJ0ZpeGFibGUgVGVzdHMnLCBhbGxGaXhhYmxlKTsK
KyAgICB2YXIgaHRtbCA9IGh0bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucykg
KworICAgICAgICBodG1sRm9yVGFibGVSb3coJ1BlcmNlbnQgcGFzc2VkJywgcGVyY2VudCkgKwor
ICAgICAgICBodG1sRm9yVGFibGVSb3coJ0ZhaWx1cmVzIChkZWR1cGVkKScsIGZpeGFibGUpICsK
KyAgICAgICAgaHRtbEZvclRhYmxlUm93KCdGaXhhYmxlIFRlc3RzJywgYWxsRml4YWJsZSk7CiAg
ICAgcmV0dXJuIHdyYXBIVE1MSW5UYWJsZSgnU3VtbWFyeScsIGh0bWwpOwotICB9Cit9CiAKLSAg
ZnVuY3Rpb24gdmFsdWVzUGVyRXhwZWN0YXRpb24oY291bnRzLCBudW1Db2x1bW5zKSB7CitmdW5j
dGlvbiB2YWx1ZXNQZXJFeHBlY3RhdGlvbihjb3VudHMsIG51bUNvbHVtbnMpCit7CiAgICAgdmFy
IHZhbHVlcyA9IHt9OwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsrKSB7
Ci0gICAgICBmb3IgKHZhciBleHBlY3RhdGlvbiBpbiBnZXRFeHBlY3RhdGlvbnNNYXAoKSkgewot
ICAgICAgICBpZiAoZXhwZWN0YXRpb24gaW4gY291bnRzW2ldKSB7Ci0gICAgICAgICAgdmFyIGNv
dW50ID0gY291bnRzW2ldW2V4cGVjdGF0aW9uXTsKLQotICAgICAgICAgIGlmICghdmFsdWVzW2V4
cGVjdGF0aW9uXSkKLSAgICAgICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0gPSBbXTsKLQotICAg
ICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0ucHVzaChjb3VudCk7CisgICAgICAgIGZvciAodmFy
IGV4cGVjdGF0aW9uIGluIGV4cGVjdGF0aW9uc01hcCgpKSB7CisgICAgICAgICAgICBpZiAoZXhw
ZWN0YXRpb24gaW4gY291bnRzW2ldKSB7CisgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gY291
bnRzW2ldW2V4cGVjdGF0aW9uXTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlc1tleHBlY3Rh
dGlvbl0pCisgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0gPSBbXTsKKyAg
ICAgICAgICAgICAgICB2YWx1ZXNbZXhwZWN0YXRpb25dLnB1c2goY291bnQpOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICB9CiAgICAgfQogICAgIHJldHVybiB2YWx1ZXM7Ci0gIH0K
K30KIAotICBmdW5jdGlvbiBnZXRIVE1MRm9yVGVzdFR5cGUocmVzdWx0cywga2V5LCBkZXNjcmlw
dGlvbiwgbnVtQ29sdW1ucykgeworZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlKHJlc3VsdHMsIGtl
eSwgZGVzY3JpcHRpb24sIG51bUNvbHVtbnMpCit7CiAgICAgdmFyIGNvdW50cyA9IHJlc3VsdHNb
a2V5XTsKLSAgICB2YXIgaHRtbCA9IGdldEhUTUxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVt
Q29sdW1ucyk7Ci0KKyAgICB2YXIgaHRtbCA9IGh0bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywg
bnVtQ29sdW1ucyk7CiAgICAgdmFyIHZhbHVlcyA9IHZhbHVlc1BlckV4cGVjdGF0aW9uKGNvdW50
cywgbnVtQ29sdW1ucyk7Ci0gICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKSB7Ci0g
ICAgICBodG1sICs9IGdldEhUTUxGb3JUYWJsZVJvdyhnZXRFeHBlY3RhdGlvbnNNYXAoKVtleHBl
Y3RhdGlvbl0sCi0gICAgICAgICAgdmFsdWVzW2V4cGVjdGF0aW9uXSk7Ci0gICAgfQotCisgICAg
Zm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKQorICAgICAgICBodG1sICs9IGh0bWxGb3JU
YWJsZVJvdyhleHBlY3RhdGlvbnNNYXAoKVtleHBlY3RhdGlvbl0sIHZhbHVlc1tleHBlY3RhdGlv
bl0pOwogICAgIHJldHVybiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0bWwpOwotICB9
Cit9CiAKLSAgZnVuY3Rpb24gZ2V0SFRNTEZvclRhYmxlUm93KGNvbHVtbk5hbWUsIHZhbHVlcykg
ewotICAgIHJldHVybiAnPHRyPjx0ZD4nICsgY29sdW1uTmFtZSArICc8L3RkPjx0ZD4nICsgdmFs
dWVzLmpvaW4oJzwvdGQ+PHRkPicpICsKLSAgICAgICAgJzwvdGQ+PC90cj4nOwotICB9CitmdW5j
dGlvbiBodG1sRm9yVGFibGVSb3coY29sdW1uTmFtZSwgdmFsdWVzKQoreworICAgIHJldHVybiAn
PHRyPjx0ZD4nICsgY29sdW1uTmFtZSArICc8L3RkPjx0ZD4nICsgdmFsdWVzLmpvaW4oJzwvdGQ+
PHRkPicpICsgJzwvdGQ+PC90cj4nOworfQogCi0gIC8vIFRha2VuIGZyb20gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9hcGlzL2NoYXJ0L2RvY3MvZGF0YV9mb3JtYXRzLmh0bWwuCi0gIGZ1bmN0aW9u
IGV4dGVuZGVkRW5jb2RlKGFyclZhbHMsIG1heFZhbCkgewotICAgIHZhciBtYXAgPQotICAgICAg
J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIz
NDU2Nzg5LS4nOworLy8gVGFrZW4gZnJvbSBodHRwOi8vY29kZS5nb29nbGUuY29tL2FwaXMvY2hh
cnQvZG9jcy9kYXRhX2Zvcm1hdHMuaHRtbC4KK2Z1bmN0aW9uIGV4dGVuZGVkRW5jb2RlKGFyclZh
bHMsIG1heFZhbCkKK3sKKyAgICB2YXIgbWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LS4nOwogICAgIHZhciBtYXBMZW5n
dGggPSBtYXAubGVuZ3RoOwogICAgIHZhciBtYXBMZW5ndGhTcXVhcmVkID0gbWFwTGVuZ3RoICog
bWFwTGVuZ3RoOwogCiAgICAgdmFyIGNoYXJ0RGF0YSA9ICcnOwogCi0gICAgZm9yKHZhciBpID0g
MCwgbGVuID0gYXJyVmFscy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAgLy8gSW4gY2Fz
ZSB0aGUgYXJyYXkgdmFscyB3ZXJlIHRyYW5zbGF0ZWQgdG8gc3RyaW5ncy4KLSAgICAgIHZhciBu
dW1lcmljVmFsID0gbmV3IE51bWJlcihhcnJWYWxzW2ldKTsKLSAgICAgIC8vIFNjYWxlIHRoZSB2
YWx1ZSB0byBtYXhWYWwuCi0gICAgICB2YXIgc2NhbGVkVmFsID0gTWF0aC5mbG9vcihtYXBMZW5n
dGhTcXVhcmVkICogbnVtZXJpY1ZhbCAvIG1heFZhbCk7Ci0KLSAgICAgIGlmKHNjYWxlZFZhbCA+
IG1hcExlbmd0aFNxdWFyZWQgLSAxKQotICAgICAgICBjaGFydERhdGEgKz0gIi4uIjsKLSAgICAg
IGVsc2UgaWYgKHNjYWxlZFZhbCA8IDApCi0gICAgICAgIGNoYXJ0RGF0YSArPSAnX18nOwotICAg
ICAgZWxzZSB7Ci0gICAgICAgIC8vIENhbGN1bGF0ZSBmaXJzdCBhbmQgc2Vjb25kIGRpZ2l0cyBh
bmQgYWRkIHRoZW0gdG8gdGhlIG91dHB1dC4KLSAgICAgICAgdmFyIHF1b3RpZW50ID0gTWF0aC5m
bG9vcihzY2FsZWRWYWwgLyBtYXBMZW5ndGgpOwotICAgICAgICB2YXIgcmVtYWluZGVyID0gc2Nh
bGVkVmFsIC0gbWFwTGVuZ3RoICogcXVvdGllbnQ7Ci0gICAgICAgIGNoYXJ0RGF0YSArPSBtYXAu
Y2hhckF0KHF1b3RpZW50KSArIG1hcC5jaGFyQXQocmVtYWluZGVyKTsKLSAgICAgIH0KKyAgICBm
b3IgKHZhciBpID0gMCwgbGVuID0gYXJyVmFscy5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworICAg
ICAgICAvLyBJbiBjYXNlIHRoZSBhcnJheSB2YWxzIHdlcmUgdHJhbnNsYXRlZCB0byBzdHJpbmdz
LgorICAgICAgICB2YXIgbnVtZXJpY1ZhbCA9IG5ldyBOdW1iZXIoYXJyVmFsc1tpXSk7CisgICAg
ICAgIC8vIFNjYWxlIHRoZSB2YWx1ZSB0byBtYXhWYWwuCisgICAgICAgIHZhciBzY2FsZWRWYWwg
PSBNYXRoLmZsb29yKG1hcExlbmd0aFNxdWFyZWQgKiBudW1lcmljVmFsIC8gbWF4VmFsKTsKKwor
ICAgICAgICBpZihzY2FsZWRWYWwgPiBtYXBMZW5ndGhTcXVhcmVkIC0gMSkKKyAgICAgICAgICAg
IGNoYXJ0RGF0YSArPSAiLi4iOworICAgICAgICBlbHNlIGlmIChzY2FsZWRWYWwgPCAwKQorICAg
ICAgICAgICAgY2hhcnREYXRhICs9ICdfXyc7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Ly8gQ2FsY3VsYXRlIGZpcnN0IGFuZCBzZWNvbmQgZGlnaXRzIGFuZCBhZGQgdGhlbSB0byB0aGUg
b3V0cHV0LgorICAgICAgICAgICAgdmFyIHF1b3RpZW50ID0gTWF0aC5mbG9vcihzY2FsZWRWYWwg
LyBtYXBMZW5ndGgpOworICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHNjYWxlZFZhbCAtIG1h
cExlbmd0aCAqIHF1b3RpZW50OworICAgICAgICAgICAgY2hhcnREYXRhICs9IG1hcC5jaGFyQXQo
cXVvdGllbnQpICsgbWFwLmNoYXJBdChyZW1haW5kZXIpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgcmV0dXJuIGNoYXJ0RGF0YTsKLSAgfQotICA8L3NjcmlwdD4KLSAgPC9oZWFkPgotICA8Ym9k
eT48L2JvZHk+Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PjwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVp
bGRlcnMuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxk
ZXJzLmpzCmluZGV4IDQ1NjE5ZjI3ODI1NzE5YTI1MDlhZDQwZWJkYmQ0ZDAyZjg0MzM0ODguLmU4
YmNmODRiYTk5MzIxYTg2YmIzNmFiY2JhYzJiMjUzOTE3Yjk0NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKKysrIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwpAQCAtMSw4
MSArMSw3NSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLS8qKgotICogQGZpbGVvdmVydmlldyBGaWxlIHRoYXQgbGlzdHMgYnVpbGRlcnMs
IHRoZWlyIG1hc3RlcnMsIGFuZCBsb2dpY2FsIGdyb3VwaW5ncwotICogb2YgdGhlbS4KLSAqLwot
Ci1mdW5jdGlvbiBCdWlsZGVyTWFzdGVyKG5hbWUsIGJhc2VQYXRoKSB7Ci0gIHRoaXMubmFtZSA9
IG5hbWU7Ci0gIHRoaXMuYmFzZVBhdGggPSBiYXNlUGF0aDsKKy8vIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBAZmlsZW92ZXJ2aWV3IEZpbGUgdGhhdCBsaXN0cyBi
dWlsZGVycywgdGhlaXIgbWFzdGVycywgYW5kIGxvZ2ljYWwgZ3JvdXBpbmdzCisvLyBvZiB0aGVt
LgorCitmdW5jdGlvbiBCdWlsZGVyTWFzdGVyKG5hbWUsIGJhc2VQYXRoKQoreworICAgIHRoaXMu
bmFtZSA9IG5hbWU7CisgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoOwogfQogCi1CdWlsZGVy
TWFzdGVyLnByb3RvdHlwZS5nZXRMb2dQYXRoID0gZnVuY3Rpb24oYnVpbGRlciwgYnVpbGROdW1i
ZXIpIHsKLSAgcmV0dXJuIHRoaXMuYmFzZVBhdGggKyBidWlsZGVyICsgJy9idWlsZHMvJyArIGJ1
aWxkTnVtYmVyOworQnVpbGRlck1hc3Rlci5wcm90b3R5cGUuZ2V0TG9nUGF0aCA9IGZ1bmN0aW9u
KGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKQoreworICAgIHJldHVybiB0aGlzLmJhc2VQYXRoICsgYnVp
bGRlciArICcvYnVpbGRzLycgKyBidWlsZE51bWJlcjsKIH07CiAKLUNIUk9NSVVNX0JVSUxERVJf
TUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIoCi0gICAgJ0Nocm9taXVtJywgJ2h0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9idWlsZGVycy8nKTsKLUNIUk9NSVVNX1dFQktJVF9C
VUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFzdGVyKAotICAgICdDaHJvbWl1bVdlYmtpdCcs
ICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2J1aWxkZXJzLycp
OwotQ0hST01JVU1fR1BVX0JVSUxERVJfTUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIoCi0gICAg
J0Nocm9taXVtR1BVJywgJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS5ncHUv
YnVpbGRlcnMvJyk7Ci1XRUJLSVRfQlVJTERFUl9NQVNURVIgPSBuZXcgQnVpbGRlck1hc3RlcigK
LSAgICAnd2Via2l0Lm9yZycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy8nKTsK
LQotZnVuY3Rpb24gQnVpbGRlckdyb3VwKGlzVG9UV2ViS2l0LCBidWlsZGVycykgewotICB0aGlz
LmlzVG9UV2ViS2l0ID0gaXNUb1RXZWJLaXQ7Ci0gIC8vIE1hcCBvZiBidWlsZGVyTmFtZSAodGhl
IG5hbWUgc2hvd24gaW4gdGhlIHdhdGVyZmFsbCkgdG8gYnVpbGRlclBhdGggKHRoZQotICAvLyBw
YXRoIHVzZWQgaW4gdGhlIGJ1aWxkZXIncyBVUkwpCi0gIHRoaXMuYnVpbGRlcnMgPSB7fTsKLSAg
YnVpbGRlcnMuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKLSAgICB2YXIgYnVp
bGRlciA9IGJ1aWxkZXJBbmRGbGFnc1swXTsKLSAgICB2YXIgZmxhZ3MgPSBidWlsZGVyQW5kRmxh
Z3NbMV07Ci0KLSAgICB0aGlzLmJ1aWxkZXJzW2J1aWxkZXJdID0gYnVpbGRlci5yZXBsYWNlKC9b
IC4oKV0vZywgJ18nKTsKLSAgICBpZiAoZmxhZ3MgJiBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlM
REVSKSB7Ci0gICAgICB0aGlzLmRlZmF1bHRCdWlsZGVyID0gYnVpbGRlcjsKLSAgICB9Ci0gICAg
aWYgKGZsYWdzICYgQnVpbGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSKSB7Ci0gICAgICB0
aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXIgPSBidWlsZGVyOwotICAgIH0KLSAgfSwgdGhpcyk7CitD
SFJPTUlVTV9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFzdGVyKCdDaHJvbWl1bScsICdo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vYnVpbGRlcnMvJyk7CitDSFJPTUlV
TV9XRUJLSVRfQlVJTERFUl9NQVNURVIgPSBuZXcgQnVpbGRlck1hc3RlcignQ2hyb21pdW1XZWJr
aXQnLCAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC9idWlsZGVy
cy8nKTsKK0NIUk9NSVVNX0dQVV9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFzdGVyKCdD
aHJvbWl1bUdQVScsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0uZ3B1L2J1
aWxkZXJzLycpOworV0VCS0lUX0JVSUxERVJfTUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIoJ3dl
YmtpdC5vcmcnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvJyk7CisKK2Z1bmN0
aW9uIEJ1aWxkZXJHcm91cChpc1RvVFdlYktpdCwgYnVpbGRlcnMpCit7CisgICAgdGhpcy5pc1Rv
VFdlYktpdCA9IGlzVG9UV2ViS2l0OworICAgIC8vIE1hcCBvZiBidWlsZGVyTmFtZSAodGhlIG5h
bWUgc2hvd24gaW4gdGhlIHdhdGVyZmFsbCkgdG8gYnVpbGRlclBhdGggKHRoZQorICAgIC8vIHBh
dGggdXNlZCBpbiB0aGUgYnVpbGRlcidzIFVSTCkKKyAgICB0aGlzLmJ1aWxkZXJzID0ge307Cisg
ICAgYnVpbGRlcnMuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKKyAgICAgICAg
dmFyIGJ1aWxkZXIgPSBidWlsZGVyQW5kRmxhZ3NbMF07CisgICAgICAgIHZhciBmbGFncyA9IGJ1
aWxkZXJBbmRGbGFnc1sxXTsKKworICAgICAgICB0aGlzLmJ1aWxkZXJzW2J1aWxkZXJdID0gYnVp
bGRlci5yZXBsYWNlKC9bIC4oKV0vZywgJ18nKTsKKyAgICAgICAgaWYgKGZsYWdzICYgQnVpbGRl
ckdyb3VwLkRFRkFVTFRfQlVJTERFUikKKyAgICAgICAgICAgIHRoaXMuZGVmYXVsdEJ1aWxkZXIg
PSBidWlsZGVyOworICAgICAgICBpZiAoZmxhZ3MgJiBCdWlsZGVyR3JvdXAuRVhQRUNUQVRJT05T
X0JVSUxERVIpCisgICAgICAgICAgICB0aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXIgPSBidWlsZGVy
OworICAgIH0sIHRoaXMpOwogfQogCi1CdWlsZGVyR3JvdXAucHJvdG90eXBlLnNldHVwID0gZnVu
Y3Rpb24oKSB7Ci0gIC8vIFRPRE8obWloYWlwKTogaW5zdGVhZCBvZiBjb3B5aW5nIHRoZXNlIHRv
IGdsb2JhbHMsIGl0IHdvdWxkIGJlIGJldHRlciBpZgotICAvLyB0aGUgcmVzdCBvZiB0aGUgY29k
ZSByZWFkIHRoaW5ncyBmcm9tIHRoZSBCdWlsZGVyR3JvdXAgaW5zdGFuY2UgZGlyZWN0bHkKLSAg
Z19kZWZhdWx0QnVpbGRlck5hbWUgPSB0aGlzLmRlZmF1bHRCdWlsZGVyOwotICBnX2V4cGVjdGF0
aW9uc0J1aWxkZXIgPSB0aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXI7Ci0gIGdfYnVpbGRlcnMgPSB0
aGlzLmJ1aWxkZXJzOworQnVpbGRlckdyb3VwLnByb3RvdHlwZS5zZXR1cCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBjb3B5aW5nIHRoZXNlIHRvIGdsb2JhbHMsIGl0
IHdvdWxkIGJlIGJldHRlciBpZgorICAgIC8vIHRoZSByZXN0IG9mIHRoZSBjb2RlIHJlYWQgdGhp
bmdzIGZyb20gdGhlIEJ1aWxkZXJHcm91cCBpbnN0YW5jZSBkaXJlY3RseQorICAgIGdfZGVmYXVs
dEJ1aWxkZXJOYW1lID0gdGhpcy5kZWZhdWx0QnVpbGRlcjsKKyAgICBnX2V4cGVjdGF0aW9uc0J1
aWxkZXIgPSB0aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXI7CisgICAgZ19idWlsZGVycyA9IHRoaXMu
YnVpbGRlcnM7CiB9OwogCiBCdWlsZGVyR3JvdXAuVE9UX1dFQktJVCA9IHRydWU7CkBAIC04Nywx
NjIgKzgxLDE2MyBAQCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSID0gMSA8PCAxOwogQnVp
bGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSID0gMSA8PCAyOwogCiB2YXIgQlVJTERFUl9U
T19NQVNURVIgPSB7fTsKLWZ1bmN0aW9uIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihidWls
ZGVycywgbWFzdGVyKSB7Ci0gIGJ1aWxkZXJzLmZvckVhY2goZnVuY3Rpb24oYnVpbGRlckFuZEZs
YWdzKSB7Ci0gICAgdmFyIGJ1aWxkZXIgPSBidWlsZGVyQW5kRmxhZ3NbMF07Ci0gICAgQlVJTERF
Ul9UT19NQVNURVJbYnVpbGRlcl0gPSBtYXN0ZXI7Ci0gIH0pOworZnVuY3Rpb24gYXNzb2NpYXRl
QnVpbGRlcnNXaXRoTWFzdGVyKGJ1aWxkZXJzLCBtYXN0ZXIpCit7CisgICAgYnVpbGRlcnMuZm9y
RWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKKyAgICAgICAgdmFyIGJ1aWxkZXIgPSBi
dWlsZGVyQW5kRmxhZ3NbMF07CisgICAgICAgIEJVSUxERVJfVE9fTUFTVEVSW2J1aWxkZXJdID0g
bWFzdGVyOworICAgIH0pOwogfQogCiB2YXIgQ0hST01JVU1fREVQU19CVUlMREVSUyA9IFsKLSAg
WydXZWJraXQgV2luIChkZXBzKScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAotICBb
J1dlYmtpdCBXaW4gKGRlcHMpKGRiZykoMSknXSwKLSAgWydXZWJraXQgV2luIChkZXBzKShkYmcp
KDIpJ10sCi0gIFsnV2Via2l0IExpbnV4IChkZXBzKScsIEJ1aWxkZXJHcm91cC5FWFBFQ1RBVElP
TlNfQlVJTERFUl0sCi0gIFsnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDEpJ10sCi0gIFsnV2Vi
a2l0IExpbnV4IChkZXBzKShkYmcpKDIpJ10sCi0gIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpJ10s
Ci0gIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMSknXSwKLSAgWydXZWJraXQgTWFjMTAu
NiAoZGVwcykoZGJnKSgyKSddCisgICAgWydXZWJraXQgV2luIChkZXBzKScsIEJ1aWxkZXJHcm91
cC5ERUZBVUxUX0JVSUxERVJdLAorICAgIFsnV2Via2l0IFdpbiAoZGVwcykoZGJnKSgxKSddLAor
ICAgIFsnV2Via2l0IFdpbiAoZGVwcykoZGJnKSgyKSddLAorICAgIFsnV2Via2l0IExpbnV4IChk
ZXBzKScsIEJ1aWxkZXJHcm91cC5FWFBFQ1RBVElPTlNfQlVJTERFUl0sCisgICAgWydXZWJraXQg
TGludXggKGRlcHMpKGRiZykoMSknXSwKKyAgICBbJ1dlYmtpdCBMaW51eCAoZGVwcykoZGJnKSgy
KSddLAorICAgIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpJ10sCisgICAgWydXZWJraXQgTWFjMTAu
NiAoZGVwcykoZGJnKSgxKSddLAorICAgIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMikn
XQogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihDSFJPTUlVTV9ERVBTX0JVSUxERVJT
LCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIpOwogCiB2YXIgQ0hST01JVU1fVE9UX0JV
SUxERVJTID0gWwotICBbJ1dlYmtpdCBXaW4nLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVS
XSwKLSAgWydXZWJraXQgVmlzdGEnXSwKLSAgWydXZWJraXQgV2luNyddLAotICBbJ1dlYmtpdCBX
aW4gKGRiZykoMSknXSwKLSAgWydXZWJraXQgV2luIChkYmcpKDIpJ10sCi0gIFsnV2Via2l0IExp
bnV4JywgQnVpbGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSXSwKLSAgWydXZWJraXQgTGlu
dXggMzInXSwKLSAgWydXZWJraXQgTGludXggKGRiZykoMSknXSwKLSAgWydXZWJraXQgTGludXgg
KGRiZykoMiknXSwKLSAgWydXZWJraXQgTWFjMTAuNSddLAotICBbJ1dlYmtpdCBNYWMxMC41IChk
YmcpKDEpJ10sCi0gIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMiknXSwKLSAgWydXZWJraXQgTWFj
MTAuNiddLAotICBbJ1dlYmtpdCBNYWMxMC42IChkYmcpJ10KKyAgICBbJ1dlYmtpdCBXaW4nLCBC
dWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwKKyAgICBbJ1dlYmtpdCBWaXN0YSddLAorICAg
IFsnV2Via2l0IFdpbjcnXSwKKyAgICBbJ1dlYmtpdCBXaW4gKGRiZykoMSknXSwKKyAgICBbJ1dl
YmtpdCBXaW4gKGRiZykoMiknXSwKKyAgICBbJ1dlYmtpdCBMaW51eCcsIEJ1aWxkZXJHcm91cC5F
WFBFQ1RBVElPTlNfQlVJTERFUl0sCisgICAgWydXZWJraXQgTGludXggMzInXSwKKyAgICBbJ1dl
YmtpdCBMaW51eCAoZGJnKSgxKSddLAorICAgIFsnV2Via2l0IExpbnV4IChkYmcpKDIpJ10sCisg
ICAgWydXZWJraXQgTWFjMTAuNSddLAorICAgIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMSknXSwK
KyAgICBbJ1dlYmtpdCBNYWMxMC41IChkYmcpKDIpJ10sCisgICAgWydXZWJraXQgTWFjMTAuNidd
LAorICAgIFsnV2Via2l0IE1hYzEwLjYgKGRiZyknXQogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0
aE1hc3RlcihDSFJPTUlVTV9UT1RfQlVJTERFUlMsIENIUk9NSVVNX1dFQktJVF9CVUlMREVSX01B
U1RFUik7CiAKIHZhciBXRUJLSVRfVE9UX0JVSUxERVJTID0gWwotICBbJ0Nocm9taXVtIFdpbiBS
ZWxlYXNlIChUZXN0cyknLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwKLSAgWydDaHJv
bWl1bSBMaW51eCBSZWxlYXNlIChUZXN0cyknLCBCdWlsZGVyR3JvdXAuRVhQRUNUQVRJT05TX0JV
SUxERVJdLAotICBbJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cyknXQorICAgIFsnQ2hyb21p
dW0gV2luIFJlbGVhc2UgKFRlc3RzKScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAor
ICAgIFsnQ2hyb21pdW0gTGludXggUmVsZWFzZSAoVGVzdHMpJywgQnVpbGRlckdyb3VwLkVYUEVD
VEFUSU9OU19CVUlMREVSXSwKKyAgICBbJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cyknXQog
XTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihXRUJLSVRfVE9UX0JVSUxERVJTLCBXRUJL
SVRfQlVJTERFUl9NQVNURVIpOwogCiB2YXIgQ0hST01JVU1fR1BVX01FU0FfQlVJTERFUlMgPSBb
Ci0gIFsnV2Via2l0IFdpbiAtIEdQVScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAot
ICBbJ1dlYmtpdCBWaXN0YSAtIEdQVSddLAotICBbJ1dlYmtpdCBXaW43IC0gR1BVJ10sCi0gIFsn
V2Via2l0IFdpbiAoZGJnKSgxKSAtIEdQVSddLAotICBbJ1dlYmtpdCBXaW4gKGRiZykoMikgLSBH
UFUnXSwKLSAgWydXZWJraXQgTGludXggLSBHUFUnLCBCdWlsZGVyR3JvdXAuRVhQRUNUQVRJT05T
X0JVSUxERVJdLAotICBbJ1dlYmtpdCBMaW51eCAzMiAtIEdQVSddLAotICBbJ1dlYmtpdCBMaW51
eCAoZGJnKSgxKSAtIEdQVSddLAotICBbJ1dlYmtpdCBMaW51eCAoZGJnKSgyKSAtIEdQVSddLAot
ICBbJ1dlYmtpdCBNYWMxMC41IC0gR1BVJ10sCi0gIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMSkg
LSBHUFUnXSwKLSAgWydXZWJraXQgTWFjMTAuNSAoZGJnKSgyKSAtIEdQVSddLAotICBbJ1dlYmtp
dCBNYWMxMC42IC0gR1BVJ10sCi0gIFsnV2Via2l0IE1hYzEwLjYgKGRiZykgLSBHUFUnXQorICAg
IFsnV2Via2l0IFdpbiAtIEdQVScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAorICAg
IFsnV2Via2l0IFZpc3RhIC0gR1BVJ10sCisgICAgWydXZWJraXQgV2luNyAtIEdQVSddLAorICAg
IFsnV2Via2l0IFdpbiAoZGJnKSgxKSAtIEdQVSddLAorICAgIFsnV2Via2l0IFdpbiAoZGJnKSgy
KSAtIEdQVSddLAorICAgIFsnV2Via2l0IExpbnV4IC0gR1BVJywgQnVpbGRlckdyb3VwLkVYUEVD
VEFUSU9OU19CVUlMREVSXSwKKyAgICBbJ1dlYmtpdCBMaW51eCAzMiAtIEdQVSddLAorICAgIFsn
V2Via2l0IExpbnV4IChkYmcpKDEpIC0gR1BVJ10sCisgICAgWydXZWJraXQgTGludXggKGRiZyko
MikgLSBHUFUnXSwKKyAgICBbJ1dlYmtpdCBNYWMxMC41IC0gR1BVJ10sCisgICAgWydXZWJraXQg
TWFjMTAuNSAoZGJnKSgxKSAtIEdQVSddLAorICAgIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMikg
LSBHUFUnXSwKKyAgICBbJ1dlYmtpdCBNYWMxMC42IC0gR1BVJ10sCisgICAgWydXZWJraXQgTWFj
MTAuNiAoZGJnKSAtIEdQVSddCiBdOwogYXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKENIUk9N
SVVNX0dQVV9NRVNBX0JVSUxERVJTLCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIpOwog
CiB2YXIgQ0hST01JVU1fR1BVX0hBUkRXQVJFX0JVSUxERVJTID0gWwotICBbJ0dQVSBXaW43IFRl
c3RzIC0gR1BVJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUiB8IEJ1aWxkZXJHcm91cC5F
WFBFQ1RBVElPTlNfQlVJTERFUl0sCi0gIFsnR1BVIFdpbjcgVGVzdHMgKGRiZykoMSkgLSBHUFUn
XSwKLSAgWydHUFUgV2luNyBUZXN0cyAoZGJnKSgyKSAtIEdQVSddLAotICBbJ0dQVSBXaW43IHg2
NCBUZXN0cyAoZGJnKSgxKSAtIEdQVSddLAotICBbJ0dQVSBXaW43IHg2NCBUZXN0cyAoZGJnKSgy
KSAtIEdQVSddLAotICAKLSAgWydHUFUgVmlzdGEgVGVzdHMgKGRiZykoMSkgLSBHUFUnXSwKLSAg
WydHUFUgVmlzdGEgVGVzdHMgKGRiZykoMikgLSBHUFUnXSwKLSAgWydHUFUgVmlzdGEgeDY0IFRl
c3RzIChkYmcpIC0gR1BVJ10sCi0gIAotICBbJ0dQVSBNYWMgMTAuNiBUZXN0cyAtIEdQVSddLAot
ICBbJ0dQVSBNYWMgMTAuNiBUZXN0cyAoZGJnKSAtIEdQVSddLAotICBbJ0dQVSBNYWMgMTAuNSBU
ZXN0cyAoZGJnKSAtIEdQVSddLAotICAKLSAgWydHUFUgTGludXggVGVzdHMgKGRiZykoMSkgLSBH
UFUnXSwKLSAgWydHUFUgTGludXggVGVzdHMgKGRiZykoMikgLSBHUFUnXSwKLSAgCi0gIFsnR1BV
IFdpbjcgVGVzdHMgKGRiZykoMSkgLSBHUFUnXSwKLSAgWydHUFUgV2luNyBUZXN0cyAoZGJnKSgy
KSAtIEdQVSddLAotICBbJ0dQVSBMaW51eCBUZXN0cyB4NjQgLSBHUFUnXQorICAgIFsnR1BVIFdp
bjcgVGVzdHMgLSBHUFUnLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSIHwgQnVpbGRlckdy
b3VwLkVYUEVDVEFUSU9OU19CVUlMREVSXSwKKyAgICBbJ0dQVSBXaW43IFRlc3RzIChkYmcpKDEp
IC0gR1BVJ10sCisgICAgWydHUFUgV2luNyBUZXN0cyAoZGJnKSgyKSAtIEdQVSddLAorICAgIFsn
R1BVIFdpbjcgeDY0IFRlc3RzIChkYmcpKDEpIC0gR1BVJ10sCisgICAgWydHUFUgV2luNyB4NjQg
VGVzdHMgKGRiZykoMikgLSBHUFUnXSwKKyAgICAKKyAgICBbJ0dQVSBWaXN0YSBUZXN0cyAoZGJn
KSgxKSAtIEdQVSddLAorICAgIFsnR1BVIFZpc3RhIFRlc3RzIChkYmcpKDIpIC0gR1BVJ10sCisg
ICAgWydHUFUgVmlzdGEgeDY0IFRlc3RzIChkYmcpIC0gR1BVJ10sCisgICAgCisgICAgWydHUFUg
TWFjIDEwLjYgVGVzdHMgLSBHUFUnXSwKKyAgICBbJ0dQVSBNYWMgMTAuNiBUZXN0cyAoZGJnKSAt
IEdQVSddLAorICAgIFsnR1BVIE1hYyAxMC41IFRlc3RzIChkYmcpIC0gR1BVJ10sCisgICAgCisg
ICAgWydHUFUgTGludXggVGVzdHMgKGRiZykoMSkgLSBHUFUnXSwKKyAgICBbJ0dQVSBMaW51eCBU
ZXN0cyAoZGJnKSgyKSAtIEdQVSddLAorICAgIAorICAgIFsnR1BVIFdpbjcgVGVzdHMgKGRiZyko
MSkgLSBHUFUnXSwKKyAgICBbJ0dQVSBXaW43IFRlc3RzIChkYmcpKDIpIC0gR1BVJ10sCisgICAg
WydHUFUgTGludXggVGVzdHMgeDY0IC0gR1BVJ10KIF07CiBhc3NvY2lhdGVCdWlsZGVyc1dpdGhN
YXN0ZXIoQ0hST01JVU1fR1BVX0hBUkRXQVJFX0JVSUxERVJTLCBDSFJPTUlVTV9HUFVfQlVJTERF
Ul9NQVNURVIpOwogCiB2YXIgTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTID0gewotICAnQERF
UFMgLSBjaHJvbWl1bS5vcmcnOiAgICAgICAgICAgICBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJH
cm91cC5ERVBTX1dFQktJVCwgQ0hST01JVU1fREVQU19CVUlMREVSUyksCi0gICdAVG9UIC0gY2hy
b21pdW0ub3JnJzogICAgICAgICAgICAgIG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRP
VF9XRUJLSVQsICBDSFJPTUlVTV9UT1RfQlVJTERFUlMpLAotICAnQFRvVCAtIHdlYmtpdC5vcmcn
OiAgICAgICAgICAgICAgICBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lU
LCAgV0VCS0lUX1RPVF9CVUlMREVSUyksCi0gICdAVG9UIEdQVSBNZXNhIC0gY2hyb21pdW0ub3Jn
JzogICAgIG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsICBDSFJPTUlV
TV9HUFVfTUVTQV9CVUlMREVSUyksCi0gICdAVG9UIEdQVSBIYXJkd2FyZSAtIGNocm9taXVtLm9y
Zyc6IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsICBDSFJPTUlVTV9H
UFVfSEFSRFdBUkVfQlVJTERFUlMpCisgICAgJ0BERVBTIC0gY2hyb21pdW0ub3JnJzogbmV3IEJ1
aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQsIENIUk9NSVVNX0RFUFNfQlVJTERF
UlMpLAorICAgICdAVG9UIC0gY2hyb21pdW0ub3JnJzogbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVy
R3JvdXAuVE9UX1dFQktJVCwgQ0hST01JVU1fVE9UX0JVSUxERVJTKSwKKyAgICAnQFRvVCAtIHdl
YmtpdC5vcmcnOiBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBXRUJL
SVRfVE9UX0JVSUxERVJTKSwKKyAgICAnQFRvVCBHUFUgTWVzYSAtIGNocm9taXVtLm9yZyc6IG5l
dyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIENIUk9NSVVNX0dQVV9NRVNB
X0JVSUxERVJTKSwKKyAgICAnQFRvVCBHUFUgSGFyZHdhcmUgLSBjaHJvbWl1bS5vcmcnOiBuZXcg
QnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBDSFJPTUlVTV9HUFVfSEFSRFdB
UkVfQlVJTERFUlMpCiB9OwogCiB2YXIgTEVHQUNZX0JVSUxERVJfTUFTVEVSU19UT19HUk9VUFMg
PSB7Ci0gICdDaHJvbWl1bSc6ICdAREVQUyAtIGNocm9taXVtLm9yZycsCi0gICdDaHJvbWl1bVdl
YmtpdCc6ICdAVG9UIC0gY2hyb21pdW0ub3JnJywKLSAgJ3dlYmtpdC5vcmcnOiAnQFRvVCAtIHdl
YmtpdC5vcmcnCisgICAgJ0Nocm9taXVtJzogJ0BERVBTIC0gY2hyb21pdW0ub3JnJywKKyAgICAn
Q2hyb21pdW1XZWJraXQnOiAnQFRvVCAtIGNocm9taXVtLm9yZycsCisgICAgJ3dlYmtpdC5vcmcn
OiAnQFRvVCAtIHdlYmtpdC5vcmcnCiB9OwogCiB2YXIgR19URVNUU19CVUlMREVSUyA9IFsKLSAg
WydXaW4nLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwKLSAgWydNYWMnXSwKLSAgWydM
aW51eCddLAotICBbJ0xpbnV4IHg2NCddLAotICBbJ1hQIFRlc3RzICgxKSddLAotICBbJ1hQIFRl
c3RzICgyKSddLAotICBbJ1hQIFRlc3RzICgzKSddLAotICBbJ1Zpc3RhIFRlc3RzICgxKSddLAot
ICBbJ1Zpc3RhIFRlc3RzICgyKSddLAotICBbJ1Zpc3RhIFRlc3RzICgzKSddLAotICBbJ1dpbjcg
U3luYyddLAotICBbJ1hQIFRlc3RzIChkYmcpKDEpJ10sCi0gIFsnWFAgVGVzdHMgKGRiZykoMikn
XSwKLSAgWydYUCBUZXN0cyAoZGJnKSgzKSddLAotICBbJ1hQIFRlc3RzIChkYmcpKDQpJ10sCi0g
IFsnWFAgVGVzdHMgKGRiZykoNSknXSwKLSAgWydYUCBUZXN0cyAoZGJnKSg2KSddLAotICBbJ1Zp
c3RhIFRlc3RzIChkYmcpKDEpJ10sCi0gIFsnVmlzdGEgVGVzdHMgKGRiZykoMiknXSwKLSAgWydW
aXN0YSBUZXN0cyAoZGJnKSgzKSddLAotICBbJ1Zpc3RhIFRlc3RzIChkYmcpKDQpJ10sCi0gIFsn
VmlzdGEgVGVzdHMgKGRiZykoNSknXSwKLSAgWydWaXN0YSBUZXN0cyAoZGJnKSg2KSddLAotICBb
J0ludGVyYWN0aXZlIFRlc3RzIChkYmcpJ10sCi0gIFsnTWFjMTAuNSBUZXN0cyAoMSknXSwKLSAg
WydNYWMxMC41IFRlc3RzICgyKSddLAotICBbJ01hYzEwLjUgVGVzdHMgKDMpJ10sCi0gIFsnTWFj
MTAuNiBUZXN0cyAoMSknXSwKLSAgWydNYWMxMC42IFRlc3RzICgyKSddLAotICBbJ01hYzEwLjYg
VGVzdHMgKDMpJ10sCi0gIFsnTWFjMTAuNiBTeW5jJ10sCi0gIFsnTWFjIDEwLjUgVGVzdHMgKGRi
ZykoMSknXSwKLSAgWydNYWMgMTAuNSBUZXN0cyAoZGJnKSgyKSddLAotICBbJ01hYyAxMC41IFRl
c3RzIChkYmcpKDMpJ10sCi0gIFsnTWFjIDEwLjUgVGVzdHMgKGRiZykoNCknXSwKLSAgWydNYWMg
MTAuNiBUZXN0cyAoZGJnKSgxKSddLAotICBbJ01hYyAxMC42IFRlc3RzIChkYmcpKDIpJ10sCi0g
IFsnTWFjIDEwLjYgVGVzdHMgKGRiZykoMyknXSwKLSAgWydNYWMgMTAuNiBUZXN0cyAoZGJnKSg0
KSddLAotICBbJ0xpbnV4IFRlc3RzIHg2NCddLAotICBbJ0xpbnV4IFRlc3RzIChkYmcpKDEpJ10s
Ci0gIFsnTGludXggVGVzdHMgKGRiZykoMiknXSwKLSAgWydMaW51eCBUZXN0cyAoZGJnKShzaGFy
ZWQpJ10sCi0gIFsnTGludXggU3luYyddLAotICBbJ0xpbnV4IEJ1aWxkZXIgKENocm9taXVtT1Mp
J10sCi0gIFsnTGludXggQnVpbGRlciAoQ2hyb21pdW1PUyBkYmcpJ10sCi0gIFsnTGludXggVGVz
dHMgKENocm9taXVtT1MgZGJnKSgxKSddLAotICBbJ0xpbnV4IFRlc3RzIChDaHJvbWl1bU9TIGRi
ZykoMiknXSwKLSAgWydMaW51eCBUZXN0cyAoQ2hyb21pdW1PUyBkYmcpKDMpJ10sCi0gIFsnTGlu
dXggQnVpbGRlciAoQ2hyb21pdW1PUyBkYmcpJ10sCi0gIFsnTGludXggQnVpbGRlciAoVmlld3Mg
ZGJnKSddLAotICBbJ0xpbnV4IFRlc3RzIChWaWV3cyBkYmcpKDEpJ10sCi0gIFsnTGludXggVGVz
dHMgKFZpZXdzIGRiZykoMiknXSwKLSAgWydMaW51eCBUZXN0cyAoVmlld3MgZGJnKSgzKSddLAor
ICAgIFsnV2luJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUl0sCisgICAgWydNYWMnXSwK
KyAgICBbJ0xpbnV4J10sCisgICAgWydMaW51eCB4NjQnXSwKKyAgICBbJ1hQIFRlc3RzICgxKSdd
LAorICAgIFsnWFAgVGVzdHMgKDIpJ10sCisgICAgWydYUCBUZXN0cyAoMyknXSwKKyAgICBbJ1Zp
c3RhIFRlc3RzICgxKSddLAorICAgIFsnVmlzdGEgVGVzdHMgKDIpJ10sCisgICAgWydWaXN0YSBU
ZXN0cyAoMyknXSwKKyAgICBbJ1dpbjcgU3luYyddLAorICAgIFsnWFAgVGVzdHMgKGRiZykoMSkn
XSwKKyAgICBbJ1hQIFRlc3RzIChkYmcpKDIpJ10sCisgICAgWydYUCBUZXN0cyAoZGJnKSgzKSdd
LAorICAgIFsnWFAgVGVzdHMgKGRiZykoNCknXSwKKyAgICBbJ1hQIFRlc3RzIChkYmcpKDUpJ10s
CisgICAgWydYUCBUZXN0cyAoZGJnKSg2KSddLAorICAgIFsnVmlzdGEgVGVzdHMgKGRiZykoMSkn
XSwKKyAgICBbJ1Zpc3RhIFRlc3RzIChkYmcpKDIpJ10sCisgICAgWydWaXN0YSBUZXN0cyAoZGJn
KSgzKSddLAorICAgIFsnVmlzdGEgVGVzdHMgKGRiZykoNCknXSwKKyAgICBbJ1Zpc3RhIFRlc3Rz
IChkYmcpKDUpJ10sCisgICAgWydWaXN0YSBUZXN0cyAoZGJnKSg2KSddLAorICAgIFsnSW50ZXJh
Y3RpdmUgVGVzdHMgKGRiZyknXSwKKyAgICBbJ01hYzEwLjUgVGVzdHMgKDEpJ10sCisgICAgWydN
YWMxMC41IFRlc3RzICgyKSddLAorICAgIFsnTWFjMTAuNSBUZXN0cyAoMyknXSwKKyAgICBbJ01h
YzEwLjYgVGVzdHMgKDEpJ10sCisgICAgWydNYWMxMC42IFRlc3RzICgyKSddLAorICAgIFsnTWFj
MTAuNiBUZXN0cyAoMyknXSwKKyAgICBbJ01hYzEwLjYgU3luYyddLAorICAgIFsnTWFjIDEwLjUg
VGVzdHMgKGRiZykoMSknXSwKKyAgICBbJ01hYyAxMC41IFRlc3RzIChkYmcpKDIpJ10sCisgICAg
WydNYWMgMTAuNSBUZXN0cyAoZGJnKSgzKSddLAorICAgIFsnTWFjIDEwLjUgVGVzdHMgKGRiZyko
NCknXSwKKyAgICBbJ01hYyAxMC42IFRlc3RzIChkYmcpKDEpJ10sCisgICAgWydNYWMgMTAuNiBU
ZXN0cyAoZGJnKSgyKSddLAorICAgIFsnTWFjIDEwLjYgVGVzdHMgKGRiZykoMyknXSwKKyAgICBb
J01hYyAxMC42IFRlc3RzIChkYmcpKDQpJ10sCisgICAgWydMaW51eCBUZXN0cyB4NjQnXSwKKyAg
ICBbJ0xpbnV4IFRlc3RzIChkYmcpKDEpJ10sCisgICAgWydMaW51eCBUZXN0cyAoZGJnKSgyKSdd
LAorICAgIFsnTGludXggVGVzdHMgKGRiZykoc2hhcmVkKSddLAorICAgIFsnTGludXggU3luYydd
LAorICAgIFsnTGludXggQnVpbGRlciAoQ2hyb21pdW1PUyknXSwKKyAgICBbJ0xpbnV4IEJ1aWxk
ZXIgKENocm9taXVtT1MgZGJnKSddLAorICAgIFsnTGludXggVGVzdHMgKENocm9taXVtT1MgZGJn
KSgxKSddLAorICAgIFsnTGludXggVGVzdHMgKENocm9taXVtT1MgZGJnKSgyKSddLAorICAgIFsn
TGludXggVGVzdHMgKENocm9taXVtT1MgZGJnKSgzKSddLAorICAgIFsnTGludXggQnVpbGRlciAo
Q2hyb21pdW1PUyBkYmcpJ10sCisgICAgWydMaW51eCBCdWlsZGVyIChWaWV3cyBkYmcpJ10sCisg
ICAgWydMaW51eCBUZXN0cyAoVmlld3MgZGJnKSgxKSddLAorICAgIFsnTGludXggVGVzdHMgKFZp
ZXdzIGRiZykoMiknXSwKKyAgICBbJ0xpbnV4IFRlc3RzIChWaWV3cyBkYmcpKDMpJ10sCiBdOwog
YXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKEdfVEVTVFNfQlVJTERFUlMsIENIUk9NSVVNX0JV
SUxERVJfTUFTVEVSKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKaW5kZXggYTA5MTg3Y2M1Mzg4Yzlm
ZjM3OGJmM2ZlYTNiMTY4YTRmNWVlMjFlOC4uNGI5NDEwYWRhYzQ1YzE2OTk0YjlmNmYzNDA2ODZi
MTk0NWE2MTNjYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCkBAIC0zMzYsNyArMzM2LDcgQEAgZnVu
Y3Rpb24gZGlmZlN0YXRlcygpCiAgICAgcmV0dXJuIGNoYW5nZWRQYXJhbXM7CiB9CiAKLWZ1bmN0
aW9uIGdldERlZmF1bHRWYWx1ZShrZXkpCitmdW5jdGlvbiBkZWZhdWx0VmFsdWUoa2V5KQogewog
ICAgIGlmIChrZXkgaW4gZ19kZWZhdWx0U3RhdGVWYWx1ZXMpCiAgICAgICAgIHJldHVybiBnX2Rl
ZmF1bHRTdGF0ZVZhbHVlc1trZXldOwpAQCAtMzg4LDcgKzM4OCw3IEBAIGZ1bmN0aW9uIGlzTGF5
b3V0VGVzdFJlc3VsdHMoKQogICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAn
bGF5b3V0LXRlc3RzJzsKIH0KIAotZnVuY3Rpb24gZ2V0Q3VycmVudEJ1aWxkZXJHcm91cChvcHRf
c3RhdGUpCitmdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwKG9wdF9zdGF0ZSkKIHsKICAgICB2
YXIgc3RhdGUgPSBvcHRfc3RhdGUgfHwgZ19jdXJyZW50U3RhdGU7CiAgICAgc3dpdGNoIChzdGF0
ZS50ZXN0VHlwZSkgewpAQCAtNDI2LDE0ICs0MjYsMTQgQEAgZnVuY3Rpb24gZ2V0Q3VycmVudEJ1
aWxkZXJHcm91cChvcHRfc3RhdGUpCiAgICAgfQogfQogCi1mdW5jdGlvbiBnZXRCdWlsZGVyTWFz
dGVyKGJ1aWxkZXJOYW1lKQorZnVuY3Rpb24gYnVpbGRlck1hc3RlcihidWlsZGVyTmFtZSkKIHsK
ICAgICByZXR1cm4gQlVJTERFUl9UT19NQVNURVJbYnVpbGRlck5hbWVdOwogfQogCiBmdW5jdGlv
biBpc1RpcE9mVHJlZVdlYktpdEJ1aWxkZXIoKQogewotICAgIHJldHVybiBnZXRDdXJyZW50QnVp
bGRlckdyb3VwKCkuaXNUb1RXZWJLaXQ7CisgICAgcmV0dXJuIGN1cnJlbnRCdWlsZGVyR3JvdXAo
KS5pc1RvVFdlYktpdDsKIH0KIAogdmFyIGdfZGVmYXVsdEJ1aWxkZXJOYW1lLCBnX2J1aWxkZXJz
LCBnX2V4cGVjdGF0aW9uc0J1aWxkZXI7CkBAIC00NTQsNyArNDU0LDcgQEAgZnVuY3Rpb24gaW5p
dEJ1aWxkZXJzKHN0YXRlKQogICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSB3aW5k
b3cubG9jYXRpb24uaGFzaC5yZXBsYWNlKCdtYXN0ZXI9JyArIHN0YXRlLm1hc3RlciwgJ2dyb3Vw
PScgKyBzdGF0ZS5ncm91cCk7CiAgICAgICAgICAgICBkZWxldGUgc3RhdGUubWFzdGVyOwogICAg
ICAgICB9Ci0gICAgICAgIGdldEN1cnJlbnRCdWlsZGVyR3JvdXAoc3RhdGUpLnNldHVwKCk7Cisg
ICAgICAgIGN1cnJlbnRCdWlsZGVyR3JvdXAoc3RhdGUpLnNldHVwKCk7CiAgICAgfQogfQogaW5p
dEJ1aWxkZXJzKGdfY3VycmVudFN0YXRlKTsKQEAgLTQ3MiwxMCArNDcyLDEwIEBAIGZ1bmN0aW9u
IEFERF9SRVNVTFRTKGJ1aWxkcykKICAgICBoYW5kbGVSZXNvdXJjZUxvYWQoKTsKIH0KIAotZnVu
Y3Rpb24gZ2V0UGF0aFRvQnVpbGRlclJlc3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQorZnVuY3Rpb24g
cGF0aFRvQnVpbGRlclJlc3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQogewogICAgIHJldHVybiBURVNU
X1JFU1VMVFNfU0VSVkVSICsgJ3Rlc3RmaWxlP2J1aWxkZXI9JyArIGJ1aWxkZXJOYW1lICsKLSAg
ICAgICAgICAgICcmbWFzdGVyPScgKyBnZXRCdWlsZGVyTWFzdGVyKGJ1aWxkZXJOYW1lKS5uYW1l
ICsKKyAgICAgICAgICAgICcmbWFzdGVyPScgKyBidWlsZGVyTWFzdGVyKGJ1aWxkZXJOYW1lKS5u
YW1lICsKICAgICAgICAgICAgICcmdGVzdHR5cGU9JyArIGdfY3VycmVudFN0YXRlLnRlc3RUeXBl
ICsgJyZuYW1lPSc7CiB9CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCBmdW5jdGlvbiBhcHBlbmRKU09O
U2NyaXB0RWxlbWVudEZvcihidWlsZGVyTmFtZSkKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdHNG
aWxlbmFtZSA9ICdyZXN1bHRzLXNtYWxsLmpzb24nOwogCi0gICAgYXBwZW5kU2NyaXB0KGdldFBh
dGhUb0J1aWxkZXJSZXN1bHRzRmlsZShidWlsZGVyTmFtZSkgKyByZXN1bHRzRmlsZW5hbWUsCisg
ICAgYXBwZW5kU2NyaXB0KHBhdGhUb0J1aWxkZXJSZXN1bHRzRmlsZShidWlsZGVyTmFtZSkgKyBy
ZXN1bHRzRmlsZW5hbWUsCiAgICAgICAgICAgICBwYXJ0aWFsKGhhbmRsZVJlc291cmNlTG9hZEVy
cm9yLCBidWlsZGVyTmFtZSksCiAgICAgICAgICAgICBwYXJ0aWFsKGhhbmRsZVNjcmlwdExvYWRl
ZCwgYnVpbGRlck5hbWUpKTsKIH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBmdW5jdGlvbiBhcHBlbmRK
U09OU2NyaXB0RWxlbWVudHMoKQogICAgIC8vIEdyYWIgZXhwZWN0YXRpb25zIGZpbGUgZnJvbSB0
aGUgZmFzdGVzdCBidWlsZGVyLCB3aGljaCBpcyBMaW51eCByZWxlYXNlCiAgICAgLy8gcmlnaHQg
bm93LiAgICBDb3VsZCBiZSBjaGFuZ2VkIHRvIGFueSBvdGhlciBidWlsZGVyIGlmIG5lZWRlZC4K
ICAgICBpZiAoZ193YWl0aW5nT25FeHBlY3RhdGlvbnMpCi0gICAgICAgIGFwcGVuZFNjcmlwdChn
ZXRQYXRoVG9CdWlsZGVyUmVzdWx0c0ZpbGUoZ19leHBlY3RhdGlvbnNCdWlsZGVyKSArICdleHBl
Y3RhdGlvbnMuanNvbicpOworICAgICAgICBhcHBlbmRTY3JpcHQocGF0aFRvQnVpbGRlclJlc3Vs
dHNGaWxlKGdfZXhwZWN0YXRpb25zQnVpbGRlcikgKyAnZXhwZWN0YXRpb25zLmpzb24nKTsKIH0K
IAogdmFyIGdfaGFzRG9uZUluaXRpYWxQYWdlR2VuZXJhdGlvbiA9IGZhbHNlOwpAQCAtNjYwLDcg
KzY2MCw3IEBAIGZ1bmN0aW9uIGhhbmRsZUxvY2F0aW9uQ2hhbmdlKCkKICAgICBpZiAoT2JqZWN0
LmtleXMocGFyYW1zKS5sZW5ndGgpCiAgICAgICAgIHNob3VsZEdlbmVyYXRlUGFnZSA9IGhhbmRs
ZVF1ZXJ5UGFyYW1ldGVyQ2hhbmdlKHBhcmFtcyk7CiAKLSAgICB2YXIgbmV3SGFzaCA9IGdldFBl
cm1hTGlua1VSTEhhc2goKTsKKyAgICB2YXIgbmV3SGFzaCA9IHBlcm1hTGlua1VSTEhhc2goKTsK
ICAgICB2YXIgd2luSGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHx8ICIjIjsKICAgICAvLyBN
YWtlIHN1cmUgdGhlIGxvY2F0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBzdGF0ZSB3ZSBhcmUgdXNp
bmcgaW50ZXJuYWxseS4KICAgICAvLyBUaGVzZSBnZXQgb3V0IG9mIHN5bmMgaWYgcHJvY2Vzc1F1
ZXJ5UGFyYW1DaGFuZ2UgY2hhbmdlZCBzdGF0ZS4KQEAgLTY4NSwxMSArNjg1LDExIEBAIGZ1bmN0
aW9uIHNldFF1ZXJ5UGFyYW1ldGVyKHZhcl9hcmdzKQogICAgIC8vIE5vdGU6IFdlIHVzZSB3aW5k
b3cubG9jYXRpb24uaGFzaCByYXRoZXIgdGhhdCB3aW5kb3cubG9jYXRpb24ucmVwbGFjZQogICAg
IC8vIGJlY2F1c2Ugb2YgYnVncyBpbiBDaHJvbWUgd2hlcmUgZXh0cmEgZW50cmllcyB3ZXJlIGdl
dHRpbmcgY3JlYXRlZAogICAgIC8vIHdoZW4gYmFjayBidXR0b24gd2FzIHByZXNzZWQgYW5kIGZ1
bGwgcGFnZSBuYXZpZ2F0aW9uIHdhcyBvY2N1cmluZy4KLSAgICAvLyBUT0RPOiBmaWxlIHRob3Nl
IGJ1Z3MuCi0gICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBnZXRQZXJtYUxpbmtVUkxIYXNoKHN0
YXRlKTsKKyAgICAvLyBGSVhNRTogZmlsZSB0aG9zZSBidWdzLgorICAgIHdpbmRvdy5sb2NhdGlv
bi5oYXNoID0gcGVybWFMaW5rVVJMSGFzaChzdGF0ZSk7CiB9CiAKLWZ1bmN0aW9uIGdldFBlcm1h
TGlua1VSTEhhc2gob3B0X3N0YXRlKQorZnVuY3Rpb24gcGVybWFMaW5rVVJMSGFzaChvcHRfc3Rh
dGUpCiB7CiAgICAgdmFyIHN0YXRlID0gb3B0X3N0YXRlIHx8IGdfY3VycmVudFN0YXRlOwogICAg
IHJldHVybiAnIycgKyBqb2luUGFyYW1ldGVycyhzdGF0ZSk7CkBAIC03MDAsNyArNzAwLDcgQEAg
ZnVuY3Rpb24gam9pblBhcmFtZXRlcnMoc3RhdGVPYmplY3QpCiAgICAgdmFyIHN0YXRlID0gW107
CiAgICAgZm9yICh2YXIga2V5IGluIHN0YXRlT2JqZWN0KSB7CiAgICAgICAgIHZhciB2YWx1ZSA9
IHN0YXRlT2JqZWN0W2tleV07Ci0gICAgICAgIGlmICh2YWx1ZSAhPSBnZXREZWZhdWx0VmFsdWUo
a2V5KSkKKyAgICAgICAgaWYgKHZhbHVlICE9IGRlZmF1bHRWYWx1ZShrZXkpKQogICAgICAgICAg
ICAgc3RhdGUucHVzaChrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN0YXRlLmpvaW4oJyYnKTsKQEAgLTc2Nyw2ICs3NjcsNyBAQCBmdW5j
dGlvbiBwYXJ0aWFsKGZuLCB2YXJfYXJncykKIC8vCiAvLyBAcGFyYW0ge09iamVjdH0gb2JqIFRo
ZSBvYmplY3QgZnJvbSB3aGljaCB0byBnZXQgdGhlIGtleXMuCiAvLyBAcmV0dXJuIHshQXJyYXku
PHN0cmluZz59IEFycmF5IG9mIHByb3BlcnR5IGtleXMuCisvLyBGSVhNRTogUmVwbGFjZSB3aXRo
IE9iamVjdC5rZXlzLgogZnVuY3Rpb24gZ2V0S2V5cyhvYmopCiB7CiAgICAgdmFyIHJlcyA9IFtd
OwpAQCAtNzc2LDcgKzc3Nyw3IEBAIGZ1bmN0aW9uIGdldEtleXMob2JqKQogfQogCiAvLyBSZXR1
cm5zIHRoZSBhcHByb3ByaWF0ZSBleHBlY3RhdGlvc24gbWFwIGZvciB0aGUgY3VycmVudCB0ZXN0
VHlwZS4KLWZ1bmN0aW9uIGdldEV4cGVjdGF0aW9uc01hcCgpCitmdW5jdGlvbiBleHBlY3RhdGlv
bnNNYXAoKQogewogICAgIHJldHVybiBpc0xheW91dFRlc3RSZXN1bHRzKCkgPyBMQVlPVVRfVEVT
VF9FWFBFQ1RBVElPTlNfTUFQXyA6IEdURVNUX0VYUEVDVEFUSU9OU19NQVBfOwogfQpAQCAtODEx
LDcgKzgxMiw3IEBAIGZ1bmN0aW9uIHNlbGVjdEhUTUwobGFiZWwsIHF1ZXJ5UGFyYW1ldGVyLCBv
cHRpb25zKQogfQogCiAvLyBSZXR1cm5zIHRoZSBIVE1MIGZvciB0aGUgc2VsZWN0IGVsZW1lbnQg
dG8gc3dpdGNoIHRvIGRpZmZlcmVudCB0ZXN0VHlwZXMuCi1mdW5jdGlvbiBnZXRIVE1MRm9yVGVz
dFR5cGVTd2l0Y2hlcihvcHRfbm9CdWlsZGVyTWVudSwgb3B0X2V4dHJhSHRtbCwgb3B0X2luY2x1
ZGVOb25lQnVpbGRlcikKK2Z1bmN0aW9uIGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKG9wdF9ub0J1
aWxkZXJNZW51LCBvcHRfZXh0cmFIdG1sLCBvcHRfaW5jbHVkZU5vbmVCdWlsZGVyKQogewogICAg
IHZhciBodG1sID0gJzxkaXYgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IGRhc2hlZCI+JzsKICAg
ICBodG1sICs9ICcnICsKQEAgLTg2OCwzMiArODY5LDMyIEBAIGZ1bmN0aW9uIGh0bWxGb3JEYXNo
Ym9hcmRMaW5rKGh0bWwsIGZpbGVOYW1lKQogICAgIHJldHVybiBodG1sRm9yVG9wTGluayhodG1s
LCBvbkNsaWNrLCBpc1NlbGVjdGVkKTsKIH0KIAotZnVuY3Rpb24gZ2V0UmV2aXNpb25MaW5rKHJl
c3VsdHMsIGluZGV4LCBrZXksIHNpbmdsZVVybFRlbXBsYXRlLCByYW5nZVVybFRlbXBsYXRlKQor
ZnVuY3Rpb24gcmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4LCBrZXksIHNpbmdsZVVybFRlbXBs
YXRlLCByYW5nZVVybFRlbXBsYXRlKQogewogICAgIHZhciBjdXJyZW50UmV2aXNpb24gPSBwYXJz
ZUludChyZXN1bHRzW2tleV1baW5kZXhdLCAxMCk7CiAgICAgdmFyIHByZXZpb3VzUmV2aXNpb24g
PSBwYXJzZUludChyZXN1bHRzW2tleV1baW5kZXggKyAxXSwgMTApOwogCi0gICAgZnVuY3Rpb24g
Z2V0U2luZ2xlVXJsKCkKKyAgICBmdW5jdGlvbiBzaW5nbGVVcmwoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHNpbmdsZVVybFRlbXBsYXRlLnJlcGxhY2UoJzxyZXY+JywgY3VycmVudFJldmlzaW9u
KTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBnZXRSYW5nZVVybCgpCisgICAgZnVuY3Rpb24gcmFu
Z2VVcmwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJhbmdlVXJsVGVtcGxhdGUucmVwbGFjZSgn
PHJldjE+JywgY3VycmVudFJldmlzaW9uKS5yZXBsYWNlKCc8cmV2Mj4nLCBwcmV2aW91c1Jldmlz
aW9uICsgMSk7CiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnRSZXZpc2lvbiA9PSBwcmV2aW91c1Jl
dmlzaW9uKQotICAgICAgICByZXR1cm4gJ0F0IDxhIGhyZWY9IicgKyBnZXRTaW5nbGVVcmwoKSAr
ICciPnInICsgY3VycmVudFJldmlzaW9uICAgICsgJzwvYT4nOworICAgICAgICByZXR1cm4gJ0F0
IDxhIGhyZWY9IicgKyBzaW5nbGVVcmwoKSArICciPnInICsgY3VycmVudFJldmlzaW9uICAgICsg
JzwvYT4nOwogICAgIGVsc2UgaWYgKGN1cnJlbnRSZXZpc2lvbiAtIHByZXZpb3VzUmV2aXNpb24g
PT0gMSkKLSAgICAgICAgcmV0dXJuICc8YSBocmVmPSInICsgZ2V0U2luZ2xlVXJsKCkgKyAnIj5y
JyArIGN1cnJlbnRSZXZpc2lvbiAgICArICc8L2E+JzsKKyAgICAgICAgcmV0dXJuICc8YSBocmVm
PSInICsgc2luZ2xlVXJsKCkgKyAnIj5yJyArIGN1cnJlbnRSZXZpc2lvbiAgICArICc8L2E+JzsK
ICAgICBlbHNlCi0gICAgICAgIHJldHVybiAnPGEgaHJlZj0iJyArIGdldFJhbmdlVXJsKCkgKyAn
Ij5yJyArIChwcmV2aW91c1JldmlzaW9uICsgMSkgKyAnIHRvIHInICsgY3VycmVudFJldmlzaW9u
ICsgJzwvYT4nOworICAgICAgICByZXR1cm4gJzxhIGhyZWY9IicgKyByYW5nZVVybCgpICsgJyI+
cicgKyAocHJldmlvdXNSZXZpc2lvbiArIDEpICsgJyB0byByJyArIGN1cnJlbnRSZXZpc2lvbiAr
ICc8L2E+JzsKIH0KIAotZnVuY3Rpb24gZ2V0Q2hyb21pdW1SZXZpc2lvbkxpbmsocmVzdWx0cywg
aW5kZXgpCitmdW5jdGlvbiBjaHJvbWl1bVJldmlzaW9uTGluayhyZXN1bHRzLCBpbmRleCkKIHsK
LSAgICByZXR1cm4gZ2V0UmV2aXNpb25MaW5rKAorICAgIHJldHVybiByZXZpc2lvbkxpbmsoCiAg
ICAgICAgIHJlc3VsdHMsCiAgICAgICAgIGluZGV4LAogICAgICAgICBDSFJPTUVfUkVWSVNJT05T
X0tFWSwKQEAgLTkwMSw5ICs5MDIsOSBAQCBmdW5jdGlvbiBnZXRDaHJvbWl1bVJldmlzaW9uTGlu
ayhyZXN1bHRzLCBpbmRleCkKICAgICAgICAgJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9j
aHJvbWl1bS9wZXJmL2Rhc2hib2FyZC91aS9jaGFuZ2Vsb2cuaHRtbD91cmw9L3RydW5rL3NyYyZy
YW5nZT08cmV2Mj46PHJldjE+Jm1vZGU9aHRtbCcpOwogfQogCi1mdW5jdGlvbiBnZXRXZWJLaXRS
ZXZpc2lvbkxpbmsocmVzdWx0cywgaW5kZXgpCitmdW5jdGlvbiB3ZWJLaXRSZXZpc2lvbkxpbmso
cmVzdWx0cywgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGdldFJldmlzaW9uTGluaygKKyAgICByZXR1
cm4gcmV2aXNpb25MaW5rKAogICAgICAgICByZXN1bHRzLAogICAgICAgICBpbmRleCwKICAgICAg
ICAgV0VCS0lUX1JFVklTSU9OU19LRVksCkBAIC05MjMsNyArOTI0LDcgQEAgZnVuY3Rpb24gZ2V0
V2ViS2l0UmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KQogLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zaWRlcmVkIGZsYWt5IChtb3JlIHRoYW4gb25lIHNpbmdsZS1idWls
ZCBmYWlsdXJlKS4KIC8vICAgICAtIGZsYWt5RGVsdGFzQnlCdWlsZDogYXJyYXkgb2YgYnVpbGRz
LCBmb3IgZWFjaCBidWlsZCBhIGNvdW50IG9mIGZsYWt5CiAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHJlc3VsdHMgYnkgZXhwZWN0YXRpb24s
IGFzIHdlbGwgYXMgYSB0b3RhbC4KLWZ1bmN0aW9uIGdldFRlc3RSZXN1bHRzQnlCdWlsZChidWls
ZGVyUmVzdWx0cykKK2Z1bmN0aW9uIHRlc3RSZXN1bHRzQnlCdWlsZChidWlsZGVyUmVzdWx0cykK
IHsKICAgICB2YXIgYnVpbGRlclRlc3RSZXN1bHRzID0gYnVpbGRlclJlc3VsdHNbVEVTVFNfS0VZ
XTsKICAgICB2YXIgYnVpbGRDb3VudCA9IGJ1aWxkZXJSZXN1bHRzW0ZJWEFCTEVfQ09VTlRTX0tF
WV0ubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAppbmRleCBjYmRiMDRk
NTc0OWYzMmEyNTY0ZDc3NzlhMzIyNDUxYmY0ZGM3YzFjLi40ZDQ4NzcyZTU4NjViYjI5YzcyNzEy
NjJkMjIxOTljMmEwODJhNzNhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAorKysgYi9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbApA
QCAtNTU0LDcgKzU1NCw3IEBAIGZ1bmN0aW9uIGV4cGVjdGF0aW9uc0ZpbGVTdHJpbmdGb3JSZXN1
bHQocmVzdWx0KQogICAgIGlmIChyZXN1bHQgPT0gJ04nKQogICAgICAgICByZXR1cm4gJyc7CiAK
LSAgICByZXR1cm4gZ2V0RXhwZWN0YXRpb25zTWFwKClbcmVzdWx0XTsKKyAgICByZXR1cm4gZXhw
ZWN0YXRpb25zTWFwKClbcmVzdWx0XTsKIH0KIAogLy8gTWFwIG9mIGFsbCB0ZXN0cyB0byB0cnVl
IHZhbHVlcy4gVGhpcyBpcyBqdXN0IHNvIHdlIGNhbiBoYXZlIHRoZSBsaXN0IG9mCkBAIC05ODYs
NyArOTg2LDcgQEAgZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSdW5zRm9yQnVpbGRlcihidWlsZGVyTmFt
ZSkKICAgICAgICAgdmFyIHJhd1Jlc3VsdHMgPSByYXdUZXN0LnJlc3VsdHM7CiAgICAgICAgIHJl
c3VsdHNGb3JUZXN0LnJhd1Jlc3VsdHMgPSByYXdSZXN1bHRzOwogCi0gICAgICAgIC8vIEZJWE1F
OiBTd2l0Y2ggdG8gZ2V0VGVzdFJlc3VsdHNCeUJ1aWxkCisgICAgICAgIC8vIEZJWE1FOiBTd2l0
Y2ggdG8gdGVzdFJlc3VsdHNCeUJ1aWxkCiAgICAgICAgIHZhciB0aW1lcyA9IHJlc3VsdHNGb3JU
ZXN0LnJhd1RpbWVzOwogICAgICAgICB2YXIgbnVtVGltZXNTZWVuID0gMDsKICAgICAgICAgdmFy
IG51bVJlc3VsdHNTZWVuID0gMDsKQEAgLTExOTcsNyArMTE5Nyw3IEBAIGZ1bmN0aW9uIGxpbmtI
VE1MVG9PcGVuV2luZG93KHVybCwgdGV4dCkKICAgICByZXR1cm4gJzxkaXYgY2xhc3M9bGluayBv
bmNsaWNrPSJ3aW5kb3cub3BlbihcJycgKyB1cmwgKyAnXCcpIj4nICsgdGV4dCArICc8L2Rpdj4n
OwogfQogCi0vLyBGSVhNRTogcmVwbGFjZWQgd2l0aCBnZXRDaHJvbWl1bVJldmlzaW9uTGluay9n
ZXRXZWJLaXRSZXZpc2lvbkxpbmsKKy8vIEZJWE1FOiByZXBsYWNlZCB3aXRoIGNocm9taXVtUmV2
aXNpb25MaW5rL3dlYktpdFJldmlzaW9uTGluawogZnVuY3Rpb24gY3JlYXRlQmxhbWVMaXN0SFRN
TChyZXZpc2lvbnMsIGluZGV4LCB1cmxCYXNlLCBzZXBhcmF0b3IsIHJlcG8pCiB7CiAgICAgdmFy
IHRoaXNSZXZpc2lvbiA9IHJldmlzaW9uc1tpbmRleF07CkBAIC0xMjYyLDggKzEyNjIsOCBAQCBm
dW5jdGlvbiBzaG93UG9wdXBGb3JCdWlsZChlLCBidWlsZGVyLCBpbmRleCwgb3B0X3Rlc3ROYW1l
KQogICAgIH0KIAogICAgIHZhciBidWlsZE51bWJlciA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWls
ZGVyXS5idWlsZE51bWJlcnNbaW5kZXhdOwotICAgIHZhciBidWlsZGVyTWFzdGVyID0gZ2V0QnVp
bGRlck1hc3RlcihidWlsZGVyKTsKLSAgICB2YXIgYnVpbGRCYXNlUGF0aCA9IGJ1aWxkZXJNYXN0
ZXIuZ2V0TG9nUGF0aChidWlsZGVyLCBidWlsZE51bWJlcik7CisgICAgdmFyIG1hc3RlciA9IGJ1
aWxkZXJNYXN0ZXIoYnVpbGRlcik7CisgICAgdmFyIGJ1aWxkQmFzZVBhdGggPSBtYXN0ZXIuZ2V0
TG9nUGF0aChidWlsZGVyLCBidWlsZE51bWJlcik7CiAKICAgICBodG1sICs9ICc8dWw+PGxpPicg
KyBsaW5rSFRNTFRvT3BlbldpbmRvdyhidWlsZEJhc2VQYXRoLCAnQnVpbGQgbG9nJykgKwogICAg
ICAgICAnPC9saT48bGk+JyArCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBmdW5jdGlvbiBzaG93UG9w
dXBGb3JCdWlsZChlLCBidWlsZGVyLCBpbmRleCwgb3B0X3Rlc3ROYW1lKQogICAgICAgICAgICAg
J1dlYktpdCcpICsKICAgICAgICAgJzwvbGk+JzsKIAotICAgIGlmIChidWlsZGVyTWFzdGVyID09
IFdFQktJVF9CVUlMREVSX01BU1RFUikgeworICAgIGlmIChtYXN0ZXIgPT0gV0VCS0lUX0JVSUxE
RVJfTUFTVEVSKSB7CiAgICAgICAgIHZhciByZXZpc2lvbiA9IGdfcmVzdWx0c0J5QnVpbGRlclti
dWlsZGVyXS53ZWJraXRSZXZpc2lvbltpbmRleF07CiAgICAgICAgIGh0bWwgKz0gJzxsaT48c3Bh
biBjbGFzcz1saW5rIG9uY2xpY2s9InNldFF1ZXJ5UGFyYW1ldGVyKFwncmV2aXNpb25cJywnICsK
ICAgICAgICAgICAgIHJldmlzaW9uICsgJykiPlNob3cgcmVzdWx0cyBmb3IgV2ViS2l0IHInICsg
cmV2aXNpb24gKwpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgZnVuY3Rpb24gaHRtbEZvclRlc3RSZXN1
bHRzKHRlc3QpCiAgICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJhd1Jlc3VsdHMuY29uY2F0KCk7CiAg
ICAgdmFyIHRpbWVzID0gdGVzdC5yYXdUaW1lcy5jb25jYXQoKTsKICAgICB2YXIgYnVpbGRlciA9
IHRlc3QuYnVpbGRlcjsKLSAgICB2YXIgYnVpbGRlck1hc3RlciA9IGdldEJ1aWxkZXJNYXN0ZXIo
YnVpbGRlcik7CisgICAgdmFyIG1hc3RlciA9IGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcik7CiAgICAg
dmFyIGJ1aWxkTnVtYmVycyA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS5idWlsZE51bWJl
cnM7CiAKICAgICB2YXIgaW5kZXhUb1JlcGxhY2VDdXJyZW50UmVzdWx0ID0gLTE7CkBAIC0xMzQ5
LDcgKzEzNDksNyBAQCBmdW5jdGlvbiBodG1sRm9yVGVzdFJlc3VsdHModGVzdCkKICAgICAgICAg
dmFyIGV4dHJhQ2xhc3NOYW1lcyA9ICcnOwogICAgICAgICB2YXIgd2Via2l0UmV2aXNpb24gPSBn
X3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2aXNpb247CiAgICAgICAgIHZhciBp
c1dlYmtpdE1lcmdlID0gd2Via2l0UmV2aXNpb25baSArIDFdICYmIHdlYmtpdFJldmlzaW9uW2ld
ICE9IHdlYmtpdFJldmlzaW9uW2kgKyAxXTsKLSAgICAgICAgaWYgKGlzV2Via2l0TWVyZ2UgJiYg
YnVpbGRlck1hc3RlciAhPSBXRUJLSVRfQlVJTERFUl9NQVNURVIpCisgICAgICAgIGlmIChpc1dl
YmtpdE1lcmdlICYmIG1hc3RlciAhPSBXRUJLSVRfQlVJTERFUl9NQVNURVIpCiAgICAgICAgICAg
ICBleHRyYUNsYXNzTmFtZXMgKz0gJyBtZXJnZSc7CiAKICAgICAgICAgaHRtbCArPSAnPHRkIHRp
dGxlPSInICsgKHJlc3VsdFN0cmluZyB8fCAnTk8gREFUQScpICsgJy4gQ2xpY2sgZm9yIG1vcmUg
aW5mby4iIGNsYXNzPSJyZXN1bHRzICcgKyBjdXJyZW50UmVzdWx0ICsKQEAgLTE4NTMsMTAgKzE4
NTMsMTAgQEAgZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKHRlc3Qp
CiAgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQWxsQnVpbGRlcnMoKTsKIAogICAgIHZhciB0ZXN0UmVz
dWx0cyA9IGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XTsKLSAgICB2YXIgYnVpbGRlck1hc3RlcjsK
KyAgICB2YXIgbWFzdGVyOwogICAgIHZhciBodG1sID0gJyc7CiAgICAgaWYgKHRlc3RSZXN1bHRz
ICYmIHRlc3RSZXN1bHRzLmxlbmd0aCkgewotICAgICAgICBidWlsZGVyTWFzdGVyID0gZ2V0QnVp
bGRlck1hc3Rlcih0ZXN0UmVzdWx0c1swXS5idWlsZGVyKTsKKyAgICAgICAgbWFzdGVyID0gYnVp
bGRlck1hc3Rlcih0ZXN0UmVzdWx0c1swXS5idWlsZGVyKTsKICAgICAgICAgaWYgKGlzTGF5b3V0
VGVzdFJlc3VsdHMoKSkgewogICAgICAgICAgICAgdmFyIHRyYWNVUkwgPSBURVNUX1VSTF9CQVNF
X1BBVEhfVFJBQyArIHRlc3QKICAgICAgICAgICAgIGh0bWwgKz0gbGlua0hUTUxUb09wZW5XaW5k
b3codHJhY1VSTCwgdHJhY1VSTCk7CkBAIC0xODg1LDcgKzE4ODUsNyBAQCBmdW5jdGlvbiBodG1s
Rm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlcnModGVzdCkKIAogICAgIGlmIChpc0xheW91dFRl
c3RSZXN1bHRzKCkpIHsKICAgICAgICAgaHRtbCArPSAnIHwgJyArIGxpbmtIVE1MVG9Ub2dnbGVT
dGF0ZSgnc2hvd0xhcmdlRXhwZWN0YXRpb25zJywgJ2xhcmdlIHRodW1ibmFpbHMnKTsKLSAgICAg
ICAgaWYgKGJ1aWxkZXJNYXN0ZXIgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CisgICAgICAg
IGlmIChtYXN0ZXIgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CiAgICAgICAgICAgICB2YXIg
cmV2aXNpb24gPSBnX2N1cnJlbnRTdGF0ZS5yZXZpc2lvbiB8fCAnJzsKICAgICAgICAgICAgIGh0
bWwgKz0gJzxmb3JtIG9uc3VibWl0PSJzZXRRdWVyeVBhcmFtZXRlcihcJ3JldmlzaW9uXCcsIHJl
dmlzaW9uLnZhbHVlKTsnICsKICAgICAgICAgICAgICAgICAncmV0dXJuIGZhbHNlOyI+U2hvdyBy
ZXN1bHRzIGZvciBXZWJLaXQgcmV2aXNpb246ICcgKwpAQCAtMjE4Miw3ICsyMTgyLDcgQEAgZnVu
Y3Rpb24gbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3QsIGV4cGVj
dGF0aW9uc0NvbnRhaW5lcikKICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXY+PGI+JyAr
IGJ1aWxkZXIgKyAnPC9iPjwvZGl2Pic7CiAgICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFwcGVu
ZENoaWxkKGNvbnRhaW5lcik7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmYWlsdXJlcy5sZW5n
dGg7IGkrKykgewotICAgICAgICB2YXIgcGF0aFRvTG9nID0gZ2V0QnVpbGRlck1hc3RlcihidWls
ZGVyKS5nZXRMb2dQYXRoKGJ1aWxkZXIsIGZhaWx1cmVzW2ldKSArIHBhdGhUb0ZhaWx1cmVMb2co
dGVzdCk7CisgICAgICAgIHZhciBwYXRoVG9Mb2cgPSBidWlsZGVyTWFzdGVyKGJ1aWxkZXIpLmdl
dExvZ1BhdGgoYnVpbGRlciwgZmFpbHVyZXNbaV0pICsgcGF0aFRvRmFpbHVyZUxvZyh0ZXN0KTsK
ICAgICAgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHBhdGhUb0xvZyk7CiAg
ICAgfQogfQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgZnVuY3Rpb24gbG9hZEV4cGVjdGF0aW9uc0xh
eW91dFRlc3RzKGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKICAgICByZXZpc2lvbkNvbnRhaW5lci50
ZXh0Q29udGVudCA9ICJTaG93aW5nIHJlc3VsdHMgZm9yOiAiCiAgICAgZXhwZWN0YXRpb25zQ29u
dGFpbmVyLmFwcGVuZENoaWxkKHJldmlzaW9uQ29udGFpbmVyKTsKICAgICBmb3IgKHZhciBidWls
ZGVyIGluIGdfYnVpbGRlcnMpIHsKLSAgICAgICAgaWYgKGdldEJ1aWxkZXJNYXN0ZXIoYnVpbGRl
cikgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CisgICAgICAgIGlmIChidWlsZGVyTWFzdGVy
KGJ1aWxkZXIpID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIGxh
dGVzdFJldmlzaW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgZ19yZXN1bHRzQnlCdWls
ZGVyW2J1aWxkZXJdLndlYmtpdFJldmlzaW9uWzBdOwogICAgICAgICAgICAgdmFyIGJ1aWxkSW5m
byA9IGJ1aWxkSW5mb0ZvclJldmlzaW9uKGJ1aWxkZXIsIGxhdGVzdFJldmlzaW9uKTsKICAgICAg
ICAgICAgIHZhciByZXZpc2lvbkluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
QEAgLTIyNzIsNyArMjI3Miw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0
cyhleHBlY3RhdGlvbnNDb250YWluZXIpCiAKICAgICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVp
bGRlcnMpIHsKICAgICAgICAgdmFyIGFjdHVhbFJlc3VsdHNCYXNlOwotICAgICAgICBpZiAoZ2V0
QnVpbGRlck1hc3RlcihidWlsZGVyKSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKKyAgICAg
ICAgaWYgKGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7
CiAgICAgICAgICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2N1cnJlbnRTdGF0ZS5yZXZpc2lv
biB8fCBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2aXNpb25bMF07CiAgICAg
ICAgICAgICB2YXIgYnVpbGRJbmZvID0gYnVpbGRJbmZvRm9yUmV2aXNpb24oYnVpbGRlciwgbGF0
ZXN0UmV2aXNpb24pOwogICAgICAgICAgICAgYWN0dWFsUmVzdWx0c0Jhc2UgPSAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvcmVzdWx0cy8nICsgYnVpbGRlciArCkBAIC0yMzc1LDcgKzIzNzUsNyBA
QCBmdW5jdGlvbiBodG1sRm9yTmF2QmFyKCkKICAgICBpZiAoIWlzQ3Jvc3NCdWlsZGVyVmlldygp
KQogICAgICAgICBleHRyYUhUTUwgKz0gY2hlY2tib3hIVE1MKCdzaG93UnVuc09uQnVpbGRlclBh
Z2UnLCAnU2hvdyBmbGFraW5lc3MgZGV0YWlscycsIGdfY3VycmVudFN0YXRlLnNob3dSdW5zT25C
dWlsZGVyUGFnZSk7CiAKLSAgICB2YXIgaHRtbCA9IGdldEhUTUxGb3JUZXN0VHlwZVN3aXRjaGVy
KGZhbHNlLCBleHRyYUhUTUwsIGlzQ3Jvc3NCdWlsZGVyVmlldygpKTsKKyAgICB2YXIgaHRtbCA9
IGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKGZhbHNlLCBleHRyYUhUTUwsIGlzQ3Jvc3NCdWlsZGVy
VmlldygpKTsKICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPWZvcm1zPjxmb3JtIGlkPXJlc3VsdC1m
b3JtICcgKwogICAgICAgICAnb25zdWJtaXQ9InNldFF1ZXJ5UGFyYW1ldGVyKFwncmVzdWx0XCcs
IHJlc3VsdC52YWx1ZSk7JyArCiAgICAgICAgICdyZXR1cm4gZmFsc2U7Ij5TaG93IGFsbCB0ZXN0
cyB3aXRoIHJlc3VsdDogJyArCkBAIC0yNTI0LDggKzI1MjQsOCBAQCBmdW5jdGlvbiBzaG93TGVn
ZW5kKCkKICAgICB2YXIgaHRtbCA9ICc8ZGl2IGlkPWxlZ2VuZC10b2dnbGUgb25jbGljaz0iaGlk
ZUxlZ2VuZCgpIj5IaWRlICcgKwogICAgICAgICAnbGVnZW5kIFt0eXBlIGVzY108L2Rpdj48ZGl2
Pk51bWJlciBvZiBmbGFreSB0ZXN0cyBsaXN0ZWQgbmV4dCB0byAnICsKICAgICAgICAgJ2VhY2gg
YnVpbGRlcjwvZGl2PjxkaXYgaWQ9bGVnZW5kLWNvbnRlbnRzPic7Ci0gICAgZm9yICh2YXIgZXhw
ZWN0YXRpb24gaW4gZ2V0RXhwZWN0YXRpb25zTWFwKCkpCi0gICAgICAgIGh0bWwgKz0gJzxkaXYg
Y2xhc3M9JyArIGV4cGVjdGF0aW9uICsgJz4nICsgZ2V0RXhwZWN0YXRpb25zTWFwKClbZXhwZWN0
YXRpb25dICsgJzwvZGl2Pic7CisgICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gZXhwZWN0YXRp
b25zTWFwKCkpCisgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9JyArIGV4cGVjdGF0aW9uICsg
Jz4nICsgZXhwZWN0YXRpb25zTWFwKClbZXhwZWN0YXRpb25dICsgJzwvZGl2Pic7CiAKICAgICBo
dG1sICs9ICc8ZGl2IGNsYXNzPW1lcmdlPldFQktJVCBNRVJHRTwvZGl2Pic7CiAgICAgaWYgKGlz
TGF5b3V0VGVzdFJlc3VsdHMoKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpzIGIvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rl
c3RzLmpzCmluZGV4IDYyZTIwM2NmNTkyY2M5Yzk2ODEwNDZhZjRiZTliOGQ1M2FhYTNjY2UuLjAx
ODg3M2IwMmRiOGFjMzEyMDcwMWY3OTU4OTllMWRmYzdkNTc5OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF90
ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Zs
YWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMKQEAgLTEsMTY5ICsxLDE2MyBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZp
bGVvdmVydmlldyBQb29yLW1hbidzIHVuaXR0ZXN0cyBmb3Igc29tZSBvZiB0aGUgdHJpY2tpZXIg
bG9naWMgYml0cyBvZgotICogdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQuCi0gKgotICogQ3VycmVu
dGx5IG9ubHkgdGVzdHMgcHJvY2Vzc0V4cGVjdGF0aW9ucyBhbmQgcG9wdWxhdGVFeHBlY3RhdGlv
bnNEYXRhLgotICogQSB0ZXN0IGp1c3QgY29uc2lzdHMgb2YgY2FsbGluZyBydW5FeHBlY3RhdGlv
bnNUZXN0IHdpdGggdGhlIGFwcHJvcHJpYXRlCi0gKiBhcmd1bWVudHMuCi0gKi8KLQotLy8gVE9E
TyhvamFuKTogQWRkIG1vcmUgdGVzdCBjYXNlcy4KLS8vIFRPRE8ob2phbik6IEFkZCB0ZXN0cyBm
b3IgcHJvY2Vzc01pc3NpbmdBbmRFeHRyYUV4cGVjdGF0aW9ucwotCi0vKioKLSAqIENsZWFycyBv
dXQgdGhlIGdsb2JhbCBvYmplY3RzIG1vZGlmaWVkIG9yIHVzZWQgYnkgcHJvY2Vzc0V4cGVjdGF0
aW9ucyBhbmQKLSAqIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YS4gQSBiaXQgZ3Jvc3Mgc2luY2Ug
aXQncyBkaWdnaW5nIGludG8gaW1wbGVtZW50YXRpb24KLSAqIGRldGFpbHMsIGJ1dCBpdCdzIGdv
b2QgZW5vdWdoIGZvciBub3cuCi0gKi8KLWZ1bmN0aW9uIHNldHVwRXhwZWN0YXRpb25zVGVzdCgp
IHsKLSAgYWxsRXhwZWN0YXRpb25zID0gbnVsbDsKLSAgYWxsVGVzdHMgPSBudWxsOwotICBnX2V4
cGVjdGF0aW9uc0J5VGVzdCA9IHt9OwotICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKLSAgZ19i
dWlsZGVycyA9IHt9OworLy8gQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKy8vIEBmaWxlb3ZlcnZpZXcgUG9vci1tYW4ncyB1bml0dGVzdHMgZm9yIHNvbWUgb2YgdGhl
IHRyaWNraWVyIGxvZ2ljIGJpdHMgb2YKKy8vIHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkLgorLy8K
Ky8vIEN1cnJlbnRseSBvbmx5IHRlc3RzIHByb2Nlc3NFeHBlY3RhdGlvbnMgYW5kIHBvcHVsYXRl
RXhwZWN0YXRpb25zRGF0YS4KKy8vIEEgdGVzdCBqdXN0IGNvbnNpc3RzIG9mIGNhbGxpbmcgcnVu
RXhwZWN0YXRpb25zVGVzdCB3aXRoIHRoZSBhcHByb3ByaWF0ZQorLy8gYXJndW1lbnRzLgorCisv
LyBGSVhNRTogQWRkIHRlc3RzIGZvciBwcm9jZXNzTWlzc2luZ0FuZEV4dHJhRXhwZWN0YXRpb25z
CisKKy8vIENsZWFycyBvdXQgdGhlIGdsb2JhbCBvYmplY3RzIG1vZGlmaWVkIG9yIHVzZWQgYnkg
cHJvY2Vzc0V4cGVjdGF0aW9ucyBhbmQKKy8vIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YS4gQSBi
aXQgZ3Jvc3Mgc2luY2UgaXQncyBkaWdnaW5nIGludG8gaW1wbGVtZW50YXRpb24KKy8vIGRldGFp
bHMsIGJ1dCBpdCdzIGdvb2QgZW5vdWdoIGZvciBub3cuCitmdW5jdGlvbiBzZXR1cEV4cGVjdGF0
aW9uc1Rlc3QoKQoreworICAgIGFsbEV4cGVjdGF0aW9ucyA9IG51bGw7CisgICAgYWxsVGVzdHMg
PSBudWxsOworICAgIGdfZXhwZWN0YXRpb25zQnlUZXN0ID0ge307CisgICAgZ19yZXN1bHRzQnlC
dWlsZGVyID0ge307CisgICAgZ19idWlsZGVycyA9IHt9OwogfQogCi0vKioKLSAqIFByb2Nlc3Nl
cyB0aGUgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QgYW5kIGFzc2VydHMgdGhhdCB0aGUgZmluYWwg
ZXhwZWN0YXRpb25zCi0gKiBhbmQgbW9kaWZpZXJzIHdlIGFwcGx5IHRvIGEgdGVzdCBtYXRjaCB3
aGF0IHdlIGV4cGVjdC4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZ30gYnVpbGRlciBCdWlsZGVyIHRo
ZSB0ZXN0IGlzIHJ1biBvbi4KLSAqIEBwYXJhbSB7c3RyaW5nfSB0ZXN0IFRoZSB0ZXN0IG5hbWUu
Ci0gKiBAcGFyYW0ge3N0cmluZ30gZXhwZWN0YXRpb25zIFNvcnRlZCBzdHJpbmcgb2Ygd2hhdCB0
aGUgZXhwZWN0YXRpb25zIGZvciB0aGlzCi0gKiAgICB0ZXN0IG91Z2h0IHRvIGJlIGZvciB0aGlz
IGJ1aWxkZXIuCi0gKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZXJzIFNvcnRlZCBzdHJpbmcgb2Yg
d2hhdCB0aGUgbW9kaWZpZXJzIGZvciB0aGlzCi0gKiAgICB0ZXN0IG91Z2h0IHRvIGJlIGZvciB0
aGlzIGJ1aWxkZXIuCi0gKi8KLWZ1bmN0aW9uIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoYnVpbGRlciwg
dGVzdCwgZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpIHsKLSAgZ19idWlsZGVyc1tidWlsZGVyXSA9
IHRydWU7Ci0KLSAgLy8gUHV0IGluIHNvbWUgZHVtbXkgcmVzdWx0cy4gcHJvY2Vzc0V4cGVjdGF0
aW9ucyBleHBlY3RzIHRoZSB0ZXN0IHRvIGJlCi0gIC8vIHRoZXJlLgotICB2YXIgdGVzdHMgPSB7
fTsKLSAgdGVzdHNbdGVzdF0gPSB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6IFtb
MTAwLCAwXV19OwotICBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVz
dHN9OwotCi0gIHByb2Nlc3NFeHBlY3RhdGlvbnMoKTsKLSAgdmFyIHJlc3VsdHNGb3JUZXN0ID0g
Y3JlYXRlUmVzdWx0c09iamVjdEZvclRlc3QodGVzdCwgYnVpbGRlcik7Ci0gIHBvcHVsYXRlRXhw
ZWN0YXRpb25zRGF0YShyZXN1bHRzRm9yVGVzdCk7Ci0KLSAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNG
b3JUZXN0LCByZXN1bHRzRm9yVGVzdC5leHBlY3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7Ci0gIGFz
c2VydEVxdWFscyhyZXN1bHRzRm9yVGVzdCwgcmVzdWx0c0ZvclRlc3QubW9kaWZpZXJzLCBtb2Rp
ZmllcnMpOworLy8gUHJvY2Vzc2VzIHRoZSBleHBlY3RhdGlvbnMgZm9yIGEgdGVzdCBhbmQgYXNz
ZXJ0cyB0aGF0IHRoZSBmaW5hbCBleHBlY3RhdGlvbnMKKy8vIGFuZCBtb2RpZmllcnMgd2UgYXBw
bHkgdG8gYSB0ZXN0IG1hdGNoIHdoYXQgd2UgZXhwZWN0LgorLy8KKy8vIEBwYXJhbSB7c3RyaW5n
fSBidWlsZGVyIEJ1aWxkZXIgdGhlIHRlc3QgaXMgcnVuIG9uLgorLy8gQHBhcmFtIHtzdHJpbmd9
IHRlc3QgVGhlIHRlc3QgbmFtZS4KKy8vIEBwYXJhbSB7c3RyaW5nfSBleHBlY3RhdGlvbnMgU29y
dGVkIHN0cmluZyBvZiB3aGF0IHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoaXMKKy8vICAgICAgICB0
ZXN0IG91Z2h0IHRvIGJlIGZvciB0aGlzIGJ1aWxkZXIuCisvLyBAcGFyYW0ge3N0cmluZ30gbW9k
aWZpZXJzIFNvcnRlZCBzdHJpbmcgb2Ygd2hhdCB0aGUgbW9kaWZpZXJzIGZvciB0aGlzCisvLyAg
ICAgICAgdGVzdCBvdWdodCB0byBiZSBmb3IgdGhpcyBidWlsZGVyLgorZnVuY3Rpb24gcnVuRXhw
ZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKK3sK
KyAgICBnX2J1aWxkZXJzW2J1aWxkZXJdID0gdHJ1ZTsKKworICAgIC8vIFB1dCBpbiBzb21lIGR1
bW15IHJlc3VsdHMuIHByb2Nlc3NFeHBlY3RhdGlvbnMgZXhwZWN0cyB0aGUgdGVzdCB0byBiZQor
ICAgIC8vIHRoZXJlLgorICAgIHZhciB0ZXN0cyA9IHt9OworICAgIHRlc3RzW3Rlc3RdID0geydy
ZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfTsKKyAgICBnX3Jlc3Vs
dHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9OworCisgICAgcHJvY2Vzc0V4
cGVjdGF0aW9ucygpOworICAgIHZhciByZXN1bHRzRm9yVGVzdCA9IGNyZWF0ZVJlc3VsdHNPYmpl
Y3RGb3JUZXN0KHRlc3QsIGJ1aWxkZXIpOworICAgIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YShy
ZXN1bHRzRm9yVGVzdCk7CisKKyAgICBhc3NlcnRFcXVhbHMocmVzdWx0c0ZvclRlc3QsIHJlc3Vs
dHNGb3JUZXN0LmV4cGVjdGF0aW9ucywgZXhwZWN0YXRpb25zKTsKKyAgICBhc3NlcnRFcXVhbHMo
cmVzdWx0c0ZvclRlc3QsIHJlc3VsdHNGb3JUZXN0Lm1vZGlmaWVycywgbW9kaWZpZXJzKTsKIH0K
IAotZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0LCBhY3R1YWwsIGV4cGVjdGVk
KSB7Ci0gIGlmIChleHBlY3RlZCAhPT0gYWN0dWFsKSB7Ci0gICAgdGhyb3cgRXJyb3IoJ0J1aWxk
ZXI6ICcgKyByZXN1bHRzRm9yVGVzdC5idWlsZGVyICsgJyB0ZXN0OiAnICsKLSAgICAgICAgcmVz
dWx0c0ZvclRlc3QudGVzdCArICcgZ290OiAnICsgYWN0dWFsICsgJyBleHBlY3RlZDogJyArIGV4
cGVjdGVkKTsKLSAgfQorZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0LCBhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChleHBlY3RlZCAhPT0gYWN0dWFsKQorICAgICAgICB0
aHJvdyBFcnJvcignQnVpbGRlcjogJyArIHJlc3VsdHNGb3JUZXN0LmJ1aWxkZXIgKyAnIHRlc3Q6
ICcgKyByZXN1bHRzRm9yVGVzdC50ZXN0ICsgJyBnb3Q6ICcgKyBhY3R1YWwgKyAnIGV4cGVjdGVk
OiAnICsgZXhwZWN0ZWQpOwogfQogCi1mdW5jdGlvbiB0aHJvd0Vycm9yKHJlc3VsdHNGb3JUZXN0
cywgYWN0dWFsLCBleHBlY3RlZCkgeworZnVuY3Rpb24gdGhyb3dFcnJvcihyZXN1bHRzRm9yVGVz
dHMsIGFjdHVhbCwgZXhwZWN0ZWQpIHt9CisKK2Z1bmN0aW9uIHRlc3RSZWxlYXNlRmFpbCgpCit7
CisgICAgdmFyIGJ1aWxkZXIgPSAnV2Via2l0JzsKKyAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1s
JzsKKyAgICB2YXIgZXhwZWN0YXRpb25zQXJyYXkgPSBbCisgICAgICAgIHsnbW9kaWZpZXJzJzog
J1JFTEVBU0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfQorICAgIF07CisgICAgZ19leHBlY3Rh
dGlvbnNCeVRlc3RbdGVzdF0gPSBleHBlY3RhdGlvbnNBcnJheTsKKyAgICBydW5FeHBlY3RhdGlv
bnNUZXN0KGJ1aWxkZXIsIHRlc3QsICdGQUlMJywgJ1JFTEVBU0UnKTsKIH0KIAotZnVuY3Rpb24g
dGVzdFJlbGVhc2VGYWlsKCkgewotICB2YXIgYnVpbGRlciA9ICdXZWJraXQnOwotICB2YXIgdGVz
dCA9ICdmb28vMS5odG1sJzsKLSAgdmFyIGV4cGVjdGF0aW9uc0FycmF5ID0gWwotICAgIHsnbW9k
aWZpZXJzJzogJ1JFTEVBU0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfQotICBdOwotICBnX2V4
cGVjdGF0aW9uc0J5VGVzdFt0ZXN0XSA9IGV4cGVjdGF0aW9uc0FycmF5OwotICBydW5FeHBlY3Rh
dGlvbnNUZXN0KGJ1aWxkZXIsIHRlc3QsICdGQUlMJywgJ1JFTEVBU0UnKTsKK2Z1bmN0aW9uIHRl
c3RSZWxlYXNlRmFpbERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcigpCit7CisgICAgdmFyIGJ1aWxk
ZXIgPSAnV2Via2l0JzsKKyAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKKyAgICB2YXIgZXhw
ZWN0YXRpb25zQXJyYXkgPSBbCisgICAgICAgIHsnbW9kaWZpZXJzJzogJ1JFTEVBU0UnLCAnZXhw
ZWN0YXRpb25zJzogJ0ZBSUwnfSwKKyAgICAgICAgeydtb2RpZmllcnMnOiAnREVCVUcnLCAnZXhw
ZWN0YXRpb25zJzogJ0NSQVNIJ30KKyAgICBdOworICAgIGdfZXhwZWN0YXRpb25zQnlUZXN0W3Rl
c3RdID0gZXhwZWN0YXRpb25zQXJyYXk7CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVy
LCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RSZWxlYXNlRmFp
bERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcigpIHsKLSAgdmFyIGJ1aWxkZXIgPSAnV2Via2l0JzsK
LSAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7Ci0gIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsK
LSAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCi0g
ICAgeydtb2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30KLSAgXTsK
LSAgZ19leHBlY3RhdGlvbnNCeVRlc3RbdGVzdF0gPSBleHBlY3RhdGlvbnNBcnJheTsKLSAgcnVu
RXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CitmdW5j
dGlvbiB0ZXN0UmVsZWFzZUZhaWxEZWJ1Z0NyYXNoRGVidWdCdWlsZGVyKCkKK3sKKyAgICB2YXIg
YnVpbGRlciA9ICdXZWJraXQoZGJnKSc7CisgICAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7Cisg
ICAgdmFyIGV4cGVjdGF0aW9uc0FycmF5ID0gWworICAgICAgICB7J21vZGlmaWVycyc6ICdSRUxF
QVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCisgICAgICAgIHsnbW9kaWZpZXJzJzogJ0RF
QlVHJywgJ2V4cGVjdGF0aW9ucyc6ICdDUkFTSCd9CisgICAgXTsKKyAgICBnX2V4cGVjdGF0aW9u
c0J5VGVzdFt0ZXN0XSA9IGV4cGVjdGF0aW9uc0FycmF5OworICAgIHJ1bkV4cGVjdGF0aW9uc1Rl
c3QoYnVpbGRlciwgdGVzdCwgJ0NSQVNIJywgJ0RFQlVHJyk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RS
ZWxlYXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxkZXIoKSB7Ci0gIHZhciBidWlsZGVyID0gJ1dl
YmtpdChkYmcpJzsKLSAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7Ci0gIHZhciBleHBlY3RhdGlv
bnNBcnJheSA9IFsKLSAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6
ICdGQUlMJ30sCi0gICAgeydtb2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NS
QVNIJ30KLSAgXTsKLSAgZ19leHBlY3RhdGlvbnNCeVRlc3RbdGVzdF0gPSBleHBlY3RhdGlvbnNB
cnJheTsKLSAgcnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnQ1JBU0gnLCAnREVC
VUcnKTsKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZUp1c3RCdWlsZFR5cGUoKQoreworICAgIHZhciB0
ZXN0ID0gJ2Jhci8xLmh0bWwnOworICAgIGdfZXhwZWN0YXRpb25zQnlUZXN0WydiYXInXSA9IFsK
KyAgICAgICAgeydtb2RpZmllcnMnOiAnV09OVEZJWCcsICdleHBlY3RhdGlvbnMnOiAnRkFJTCBQ
QVNTIFRJTUVPVVQnfQorICAgIF07CisgICAgZ19leHBlY3RhdGlvbnNCeVRlc3RbdGVzdF0gPSBb
CisgICAgICAgIHsnbW9kaWZpZXJzJzogJ1dPTlRGSVggTUFDJywgJ2V4cGVjdGF0aW9ucyc6ICdG
QUlMJ30sCisgICAgICAgIHsnbW9kaWZpZXJzJzogJ0xJTlVYIERFQlVHJywgJ2V4cGVjdGF0aW9u
cyc6ICdDUkFTSCd9LAorICAgIF07CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0Jywg
dGVzdCwgJ0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgnKTsKKyAgICBydW5FeHBlY3RhdGlv
bnNUZXN0KCdXZWJraXQgKGRiZykoMyknLCB0ZXN0LCAnRkFJTCBQQVNTIFRJTUVPVVQnLCAnV09O
VEZJWCcpOworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBMaW51eCcsIHRlc3QsICdG
QUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgn
V2Via2l0IExpbnV4IChkYmcpKDMpJywgdGVzdCwgJ0NSQVNIJywgJ0xJTlVYIERFQlVHJyk7Cisg
ICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IE1hYzEwLjUnLCB0ZXN0LCAnRkFJTCcsICdX
T05URklYIE1BQycpOworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBNYWMxMC41IChk
YmcpKDMpJywgdGVzdCwgJ0ZBSUwnLCAnV09OVEZJWCBNQUMnKTsKIH0KIAotZnVuY3Rpb24gdGVz
dE92ZXJyaWRlSnVzdEJ1aWxkVHlwZSgpIHsKLSAgdmFyIHRlc3QgPSAnYmFyLzEuaHRtbCc7Ci0g
IGdfZXhwZWN0YXRpb25zQnlUZXN0WydiYXInXSA9IFsKLSAgICB7J21vZGlmaWVycyc6ICdXT05U
RklYJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMIFBBU1MgVElNRU9VVCd9Ci0gIF07Ci0gIGdfZXhw
ZWN0YXRpb25zQnlUZXN0W3Rlc3RdID0gWwotICAgIHsnbW9kaWZpZXJzJzogJ1dPTlRGSVggTUFD
JywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCi0gICAgeydtb2RpZmllcnMnOiAnTElOVVggREVC
VUcnLCAnZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30sCi0gIF07Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rl
c3QoJ1dlYmtpdCcsIHRlc3QsICdGQUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7Ci0gIHJ1
bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCAoZGJnKSgzKScsIHRlc3QsICdGQUlMIFBBU1MgVElN
RU9VVCcsICdXT05URklYJyk7Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBMaW51eCcs
IHRlc3QsICdGQUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7Ci0gIHJ1bkV4cGVjdGF0aW9u
c1Rlc3QoJ1dlYmtpdCBMaW51eCAoZGJnKSgzKScsIHRlc3QsICdDUkFTSCcsICdMSU5VWCBERUJV
RycpOwotICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQgTWFjMTAuNScsIHRlc3QsICdGQUlM
JywgJ1dPTlRGSVggTUFDJyk7Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBNYWMxMC41
IChkYmcpKDMpJywgdGVzdCwgJ0ZBSUwnLCAnV09OVEZJWCBNQUMnKTsKLX0KLQotZnVuY3Rpb24g
cnVuVGVzdHMoKSB7Ci0gIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxwcmUgaWQ9dW5pdHRl
c3QtcmVzdWx0cz48L3ByZT4nOwotICBmb3IgKHZhciBuYW1lIGluIHdpbmRvdykgewotICAgIGlm
ICh0eXBlb2Ygd2luZG93W25hbWVdID09ICdmdW5jdGlvbicgJiYgL150ZXN0Ly50ZXN0KG5hbWUp
KSB7Ci0gICAgICBzZXR1cEV4cGVjdGF0aW9uc1Rlc3QoKTsKLQotICAgICAgdmFyIHRlc3QgPSB3
aW5kb3dbbmFtZV07Ci0gICAgICB2YXIgZXJyb3IgPSBudWxsOwotCi0gICAgICB0cnkgewotICAg
ICAgICB0ZXN0KCk7Ci0gICAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAgZXJyb3IgPSBlcnI7
Ci0gICAgICB9Ci0KLSAgICAgIHZhciByZXN1bHQgPSBlcnJvciA/IGVycm9yLnRvU3RyaW5nKCkg
OiAnUEFTU0VEJzsKLSAgICAgICQoJ3VuaXR0ZXN0LXJlc3VsdHMnKS5pbnNlcnRBZGphY2VudEhU
TUwoImJlZm9yZUVuZCIsCi0gICAgICAgICAgbmFtZSArICc6ICcgKyByZXN1bHQgKyAnXG4nKTsK
K2Z1bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8
cHJlIGlkPXVuaXR0ZXN0LXJlc3VsdHM+PC9wcmU+JzsKKyAgICBmb3IgKHZhciBuYW1lIGluIHdp
bmRvdykgeworICAgICAgICBpZiAodHlwZW9mIHdpbmRvd1tuYW1lXSA9PSAnZnVuY3Rpb24nICYm
IC9edGVzdC8udGVzdChuYW1lKSkgeworICAgICAgICAgICAgc2V0dXBFeHBlY3RhdGlvbnNUZXN0
KCk7CisKKyAgICAgICAgICAgIHZhciB0ZXN0ID0gd2luZG93W25hbWVdOworICAgICAgICAgICAg
dmFyIGVycm9yID0gbnVsbDsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0
ZXN0KCk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICBlcnJv
ciA9IGVycjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGVycm9y
ID8gZXJyb3IudG9TdHJpbmcoKSA6ICdQQVNTRUQnOworICAgICAgICAgICAgJCgndW5pdHRlc3Qt
cmVzdWx0cycpLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlRW5kIiwgbmFtZSArICc6ICcgKyBy
ZXN1bHQgKyAnXG4nKTsKKyAgICAgICAgfQogICAgIH0KLSAgfQogfQogCi1pZiAoZG9jdW1lbnQu
cmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKSB7Ci0gIHJ1blRlc3RzKCk7Ci19IGVsc2UgewotICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3RzLCBmYWxzZSk7Ci19CitpZiAo
ZG9jdW1lbnQucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKQorICAgIHJ1blRlc3RzKCk7CitlbHNl
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0cywgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1l
bGluZV9leHBsb3Jlci5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sCmluZGV4IDA0YjNkMTcyM2MyNWY5OGNlMGE4ODk3
OTYyOWYwZWU4ZmE1ZjcwYTYuLmFlMDJkMzg5YTQ1MTYzZGNjN2I5MjMyNzFjYTcwNDg4Y2Q1ZDY2
N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMv
dGltZWxpbmVfZXhwbG9yZXIuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwKQEAgLTMwLDE1MCArMzAsMTQ3IEBA
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiA8aHRtbD4KIAogPGhlYWQ+Ci0gIDx0aXRsZT5UZXN0IFRpbWVsaW5lIEV4
cGxvcmVyPC90aXRsZT4KLSAgPHN0eWxlPgotICAgIGJvZHkgewotICAgICAgZm9udC1mYW1pbHk6
IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ci0gICAgICBmb250LXNpemU6IDEycHg7Ci0g
ICAgfQotCi0gICAgI3RpbWVsaW5lLWNvbnRhaW5lciB7Ci0gICAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Ci0gICAgfQotCi0gICAgI2luc3BlY3Rvci1jb250YWluZXIgewotICAgICAgd2lkdGg6IDMw
MHB4OwotICAgICAgZmxvYXQ6IHJpZ2h0OwotICAgICAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQ7
Ci0gICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKLSAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAg
fQotCi0gICAgI2luc3BlY3Rvci1jb250YWluZXIgY2FwdGlvbiB7Ci0gICAgICBiYWNrZ3JvdW5k
OiAjZWVlOwotICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgICBwYWRkaW5nOiAycHg7Ci0g
ICAgICBmb250LXNpemU6IDE0cHg7Ci0gICAgICB0ZXh0LWFsaWduOiBsZWZ0OwotICAgIH0KLQot
ICAgICNpbnNwZWN0b3ItdGFibGUgewotICAgICAgd2lkdGg6IDEwMCU7Ci0gICAgfQotCi0gICAg
I2luc3BlY3Rvci10YWJsZSB0ZCB7Ci0gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotICAgIH0K
LQotICAgICNpbnNwZWN0b3ItdGFibGUgLmxhYmVsIHsKLSAgICAgIGNvbG9yOiAjNjY2OwotICAg
ICAgdGV4dC1hbGlnbjogcmlnaHQ7Ci0gICAgICB3aWR0aDogMTBlbTsKLSAgICB9Ci0KLSAgICAj
aW5zcGVjdG9yLXRhYmxlIC5kZWx0YS5wb3NpdGl2ZSB7Ci0gICAgICBjb2xvcjogIzA5MDsKLSAg
ICB9Ci0KLSAgICAjaW5zcGVjdG9yLXRhYmxlIC5kZWx0YS5uZWdhdGl2ZSB7Ci0gICAgICBjb2xv
cjogIzkwMDsKLSAgICB9Ci0KLSAgICAjaW5zcGVjdG9yLWNvbnRhaW5lciAuYnV0dG9ucyB7Ci0g
ICAgICBwYWRkaW5nOiAxZW0gMDsKLSAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB9Ci0K
LSAgICAjaW5zcGVjdG9yLWNvbnRhaW5lciAjYnVpbGQtYnV0dG9ucyB7Ci0gICAgICBib3JkZXIt
dG9wOiAxcHggZGFzaGVkOwotICAgIH0KLQotICAgICNpbmRpY2F0b3IgewotICAgICAgdG9wOiAw
OwotICAgICAgd2lkdGg6IDFweDsKLSAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgIGJh
Y2tncm91bmQ6IHJlZDsKLSAgICB9Ci0gIDwvc3R5bGU+Ci0gIDxzY3JpcHQgc3JjPSJkeWdyYXBo
LWNvbWJpbmVkLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImJ1aWxkZXJzLmpzIj48L3Nj
cmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KLSAgPHNj
cmlwdD4KLSAgdmFyIEZBSUxJTkdfVEVTVFNfREFUQVNFVF9OQU1FID0gJ0ZhaWxpbmcgdGVzdHMn
OwotCi0gIHZhciBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zT25seSA9IGlzVGlwT2ZUcmVlV2Vi
S2l0QnVpbGRlcigpOwotICB2YXIgZHlncmFwaDsKLSAgdmFyIGJ1aWxkSW5kaWNlc0J5VGltZXN0
YW1wID0ge307Ci0gIHZhciBjdXJyZW50QnVpbGRJbmRleCA9IC0xOwotICB2YXIgY3VycmVudEJ1
aWxkZXJUZXN0UmVzdWx0czsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gTWV0aG9k
cyBhbmQgb2JqZWN0cyBmcm9tIGRhc2hib2FyZF9iYXNlLmpzIHRvIG92ZXJyaWRlLgotICAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLSAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkgewotICAgIGJ1aWxk
SW5kaWNlc0J5VGltZXN0YW1wID0ge307Cis8dGl0bGU+VGVzdCBUaW1lbGluZSBFeHBsb3Jlcjwv
dGl0bGU+Cis8c3R5bGU+Citib2R5IHsKKyAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlh
bCwgc2Fucy1zZXJpZjsKKyAgICBmb250LXNpemU6IDEycHg7Cit9CisKKyN0aW1lbGluZS1jb250
YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworI2luc3BlY3Rvci1jb250YWlu
ZXIgeworICAgIHdpZHRoOiAzMDBweDsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgYm9yZGVyLWxl
ZnQ6IDFweCBkYXNoZWQ7CisgICAgcGFkZGluZy1sZWZ0OiA1cHg7CisgICAgbWFyZ2luLWxlZnQ6
IDVweDsKK30KKworI2luc3BlY3Rvci1jb250YWluZXIgY2FwdGlvbiB7CisgICAgYmFja2dyb3Vu
ZDogI2VlZTsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBwYWRkaW5nOiAycHg7CisgICAg
Zm9udC1zaXplOiAxNHB4OworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKyNpbnNwZWN0b3It
dGFibGUgeworICAgIHdpZHRoOiAxMDAlOworfQorCisjaW5zcGVjdG9yLXRhYmxlIHRkIHsKKyAg
ICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisjaW5zcGVjdG9yLXRhYmxlIC5sYWJlbCB7Cisg
ICAgY29sb3I6ICM2NjY7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgd2lkdGg6IDEwZW07
Cit9CisKKyNpbnNwZWN0b3ItdGFibGUgLmRlbHRhLnBvc2l0aXZlIHsKKyAgICBjb2xvcjogIzA5
MDsKK30KKworI2luc3BlY3Rvci10YWJsZSAuZGVsdGEubmVnYXRpdmUgeworICAgIGNvbG9yOiAj
OTAwOworfQorCisjaW5zcGVjdG9yLWNvbnRhaW5lciAuYnV0dG9ucyB7CisgICAgcGFkZGluZzog
MWVtIDA7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCisjaW5zcGVjdG9yLWNvbnRhaW5l
ciAjYnVpbGQtYnV0dG9ucyB7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZDsKK30KKworI2lu
ZGljYXRvciB7CisgICAgdG9wOiAwOworICAgIHdpZHRoOiAxcHg7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0i
ZHlncmFwaC1jb21iaW5lZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYnVpbGRlcnMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Cit2YXIgRkFJTElOR19URVNUU19EQVRBU0VUX05BTUUgPSAnRmFpbGluZyB0ZXN0cyc7
CisKK3ZhciBnX3Nob3VsZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5ID0gaXNUaXBPZlRyZWVXZWJL
aXRCdWlsZGVyKCk7Cit2YXIgZ19keWdyYXBoOwordmFyIGdfYnVpbGRJbmRpY2VzQnlUaW1lc3Rh
bXAgPSB7fTsKK3ZhciBnX2N1cnJlbnRCdWlsZEluZGV4ID0gLTE7Cit2YXIgZ19jdXJyZW50QnVp
bGRlclRlc3RSZXN1bHRzOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIE1ldGhvZHMgYW5k
IG9iamVjdHMgZnJvbSBkYXNoYm9hcmRfYmFzZS5qcyB0byBvdmVycmlkZS4KKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKK3sKKyAgICBnX2J1aWxkSW5kaWNl
c0J5VGltZXN0YW1wID0ge307CiAgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJb
Z19jdXJyZW50U3RhdGUuYnVpbGRlcl07CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3Vs
dHNbRklYQUJMRV9DT1VOVFNfS0VZXS5sZW5ndGg7IGkrKykgewotICAgICAgdmFyIGJ1aWxkRGF0
ZSA9IG5ldyBEYXRlKHJlc3VsdHNbVElNRVNUQU1QU19LRVldW2ldICogMTAwMCk7Ci0gICAgICBi
dWlsZEluZGljZXNCeVRpbWVzdGFtcFtidWlsZERhdGUuZ2V0VGltZSgpXSA9IGk7CisgICAgICAg
IHZhciBidWlsZERhdGUgPSBuZXcgRGF0ZShyZXN1bHRzW1RJTUVTVEFNUFNfS0VZXVtpXSAqIDEw
MDApOworICAgICAgICBnX2J1aWxkSW5kaWNlc0J5VGltZXN0YW1wW2J1aWxkRGF0ZS5nZXRUaW1l
KCldID0gaTsKICAgICB9CiAKLSAgICBpZiAoZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3RhbXAg
IT0gLTEgJiYKLSAgICAgICAgZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3RhbXAgaW4gYnVpbGRJ
bmRpY2VzQnlUaW1lc3RhbXApIHsKLSAgICAgICAgdmFyIG5ld0J1aWxkSW5kZXggPQotICAgICAg
ICAgICAgYnVpbGRJbmRpY2VzQnlUaW1lc3RhbXBbZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3Rh
bXBdOwotCi0gICAgICAgIGlmIChuZXdCdWlsZEluZGV4ID09IGN1cnJlbnRCdWlsZEluZGV4KSB7
Ci0gICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gc2VsZWN0QnVpbGQgaXMgY2FsbGVkLCB3
aGljaCB1cGRhdGVzIHRoZSBVSQotICAgICAgICAgIC8vIGltbWVkaWF0ZWx5LCBpbiBhZGRpdGlv
biB0byB1cGRhdGluZyB0aGUgbG9jYXRpb24gaGFzaCAod2UgZG9uJ3QKLSAgICAgICAgICAvLyBq
dXN0IHJlbHkgb24gdGhlIGhhc2ggY2hhbmdlIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gcmVnZW5l
cmF0ZSB0aGUKLSAgICAgICAgICAvLyB3aG9sZSBwYWdlIGp1c3QgYmVjYXVzZSB0aGUgdXNlciBj
bGlja2VkIG9uIHNvbWV0aGluZykKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBp
ZiAobmV3QnVpbGRJbmRleCkgewotICAgICAgICAgIGN1cnJlbnRCdWlsZEluZGV4ID0gbmV3QnVp
bGRJbmRleDsKLSAgICAgICAgfQorICAgIGlmIChnX2N1cnJlbnRTdGF0ZS5idWlsZFRpbWVzdGFt
cCAhPSAtMSAmJiBnX2N1cnJlbnRTdGF0ZS5idWlsZFRpbWVzdGFtcCBpbiBnX2J1aWxkSW5kaWNl
c0J5VGltZXN0YW1wKSB7CisgICAgICAgIHZhciBuZXdCdWlsZEluZGV4ID0gZ19idWlsZEluZGlj
ZXNCeVRpbWVzdGFtcFtnX2N1cnJlbnRTdGF0ZS5idWlsZFRpbWVzdGFtcF07CisKKyAgICAgICAg
aWYgKG5ld0J1aWxkSW5kZXggPT0gZ19jdXJyZW50QnVpbGRJbmRleCkgeworICAgICAgICAgICAg
Ly8gVGhpcyBoYXBwZW5zIHdoZW4gc2VsZWN0QnVpbGQgaXMgY2FsbGVkLCB3aGljaCB1cGRhdGVz
IHRoZSBVSQorICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHksIGluIGFkZGl0aW9uIHRvIHVwZGF0
aW5nIHRoZSBsb2NhdGlvbiBoYXNoICh3ZSBkb24ndAorICAgICAgICAgICAgLy8ganVzdCByZWx5
IG9uIHRoZSBoYXNoIGNoYW5nZSBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIHJlZ2VuZXJhdGUgdGhl
CisgICAgICAgICAgICAvLyB3aG9sZSBwYWdlIGp1c3QgYmVjYXVzZSB0aGUgdXNlciBjbGlja2Vk
IG9uIHNvbWV0aGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIGlmIChu
ZXdCdWlsZEluZGV4KQorICAgICAgICAgICAgZ19jdXJyZW50QnVpbGRJbmRleCA9IG5ld0J1aWxk
SW5kZXg7CiAgICAgfQogCiAgICAgaW5pdEN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMoKTsKIAot
ICAgICQoJ3Rlc3QtdHlwZS1zd2l0Y2hlcicpLmlubmVySFRNTCA9IGdldEhUTUxGb3JUZXN0VHlw
ZVN3aXRjaGVyKAotICAgICAgICBmYWxzZSwKLSAgICAgICAgY2hlY2tib3hIVE1MKCdpZ25vcmVG
bGFreVRlc3RzJywgJ0lnbm9yZSBmbGFreSB0ZXN0cycsCi0gICAgICAgICAgICBnX2N1cnJlbnRT
dGF0ZS5pZ25vcmVGbGFreVRlc3RzLCAnY3VycmVudEJ1aWxkSW5kZXggPSAtMScpCisgICAgJCgn
dGVzdC10eXBlLXN3aXRjaGVyJykuaW5uZXJIVE1MID0gaHRtbEZvclRlc3RUeXBlU3dpdGNoZXIo
IGZhbHNlLAorICAgICAgICBjaGVja2JveEhUTUwoJ2lnbm9yZUZsYWt5VGVzdHMnLCAnSWdub3Jl
IGZsYWt5IHRlc3RzJywgZ19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cywgJ2dfY3VycmVu
dEJ1aWxkSW5kZXggPSAtMScpCiAgICAgKTsKIAogICAgIHVwZGF0ZVRpbWVsaW5lRm9yQnVpbGRl
cigpOwotICB9Cit9CiAKLSAgZnVuY3Rpb24gaW5pdEN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMo
KSB7CitmdW5jdGlvbiBpbml0Q3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cygpCit7CiAgICAgdmFy
IHN0YXJ0VGltZSA9IERhdGUubm93KCk7Ci0gICAgY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cyA9
Ci0gICAgICAgIGdldFRlc3RSZXN1bHRzQnlCdWlsZChnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJy
ZW50U3RhdGUuYnVpbGRlcl0pOwotICAgIGNvbnNvbGUubG9nKAotICAgICAgICAnVGltZSB0byBn
ZXQgdGVzdCByZXN1bHRzIGJ5IGJ1aWxkOiAnICsgKERhdGUubm93KCkgLSBzdGFydFRpbWUpKTsK
LSAgfQorICAgIGdfY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cyA9IHRlc3RSZXN1bHRzQnlCdWls
ZChnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0pOworICAgIGNvbnNv
bGUubG9nKCAnVGltZSB0byBnZXQgdGVzdCByZXN1bHRzIGJ5IGJ1aWxkOiAnICsgKERhdGUubm93
KCkgLSBzdGFydFRpbWUpKTsKK30KIAotICBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0
ZXIoa2V5LCB2YWx1ZSkgeworZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwg
dmFsdWUpCit7CiAgICAgc3dpdGNoKGtleSkgewotICAgICAgY2FzZSAnYnVpbGRUaW1lc3RhbXAn
OgorICAgIGNhc2UgJ2J1aWxkVGltZXN0YW1wJzoKICAgICAgICAgZ19jdXJyZW50U3RhdGUuYnVp
bGRUaW1lc3RhbXAgPSBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgIGNhc2UgJ2lnbm9yZUZsYWt5VGVzdHMnOgorICAgIGNhc2UgJ2lnbm9yZUZsYWt5VGVz
dHMnOgogICAgICAgICBnX2N1cnJlbnRTdGF0ZS5pZ25vcmVGbGFreVRlc3RzID0gdmFsdWUgPT0g
J3RydWUnOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6CisgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgfQorfQogCi0gIGdfZGVmYXVsdFN0
YXRlVmFsdWVzID0geworZ19kZWZhdWx0U3RhdGVWYWx1ZXMgPSB7CiAgICAgYnVpbGRUaW1lc3Rh
bXA6IC0xLAogICAgIGJ1aWxkZXI6IGdfZGVmYXVsdEJ1aWxkZXJOYW1lLAogICAgIGlnbm9yZUZs
YWt5VGVzdHM6IHRydWUKLSAgfTsKK307CiAKLSAgZnVuY3Rpb24gdXBkYXRlVGltZWxpbmVGb3JC
dWlsZGVyKCkgeworZnVuY3Rpb24gdXBkYXRlVGltZWxpbmVGb3JCdWlsZGVyKCkKK3sKICAgICB2
YXIgYnVpbGRlciA9IGdfY3VycmVudFN0YXRlLmJ1aWxkZXI7CiAgICAgdmFyIHJlc3VsdHMgPSBn
X3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl07CiAgICAgdmFyIGdyYXBoRGF0YSA9IFtdOwpAQCAt
MTgyLDMwICsxNzksMjQgQEAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogICAgIC8vIER5Z3JhcGggcHJlZmVycyB0
byBiZSBoYW5kZWQgZGF0YSBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyLgogICAgIGZvciAodmFyIGkg
PSByZXN1bHRzW0ZJWEFCTEVfQ09VTlRTX0tFWV0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsK
LSAgICAgIHZhciBidWlsZERhdGUgPSBuZXcgRGF0ZShyZXN1bHRzW1RJTUVTVEFNUFNfS0VZXVtp
XSAqIDEwMDApOwotICAgICAgLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGV4Y2x1ZGUg
b3V0bGllcnMuIFRoaXMgaXMganVzdCBzbyB3ZQotICAgICAgLy8gZXhjbHVkZSBydW5zIHdoZXJl
IGV2ZXJ5IHRlc3QgZmFpbGVkLgotICAgICAgdmFyIGZhaWx1cmVDb3VudCA9IE1hdGgubWluKHJl
c3VsdHNbRklYQUJMRV9DT1VOVF9LRVldW2ldLCAxMDAwMCk7Ci0KLSAgICAgIGlmIChnX2N1cnJl
bnRTdGF0ZS5pZ25vcmVGbGFreVRlc3RzKSB7Ci0gICAgICAgIGZhaWx1cmVDb3VudCAtPQotICAg
ICAgICAgICAgY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cy5mbGFreURlbHRhc0J5QnVpbGRbaV0u
dG90YWwgfHwgMDsKLSAgICAgIH0KLQotICAgICAgZ3JhcGhEYXRhLnB1c2goW2J1aWxkRGF0ZSwg
ZmFpbHVyZUNvdW50XSk7Ci0KLSAgICAgIGlmICghc2hvdWxkU2hvd1dlYktpdFJldmlzaW9uc09u
bHkgJiYKLSAgICAgICAgICAocmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baV0gIT0KLSAg
ICAgICAgICAgICAgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baSArIDFdKSkgewotICAg
ICAgICBhbm5vdGF0aW9ucy5wdXNoKHsKLSAgICAgICAgICAgIHNlcmllczogRkFJTElOR19URVNU
U19EQVRBU0VUX05BTUUsCi0gICAgICAgICAgICB4OiBidWlsZERhdGUsCi0gICAgICAgICAgICBz
aG9ydFRleHQ6ICdSJywKLSAgICAgICAgICAgIHRleHQ6ICdXZWJLaXQgcm9sbDogcicgKwotICAg
ICAgICAgICAgICAgIHJlc3VsdHNbV0VCS0lUX1JFVklTSU9OU19LRVldW2kgKyAxXSArICcgdG8g
JyArCi0gICAgICAgICAgICAgICAgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baV0KLSAg
ICAgICAgICB9KTsKLSAgICAgIH0KKyAgICAgICAgdmFyIGJ1aWxkRGF0ZSA9IG5ldyBEYXRlKHJl
c3VsdHNbVElNRVNUQU1QU19LRVldW2ldICogMTAwMCk7CisgICAgICAgIC8vIEZJWE1FOiBGaW5k
IGEgYmV0dGVyIHdheSB0byBleGNsdWRlIG91dGxpZXJzLiBUaGlzIGlzIGp1c3Qgc28gd2UKKyAg
ICAgICAgLy8gZXhjbHVkZSBydW5zIHdoZXJlIGV2ZXJ5IHRlc3QgZmFpbGVkLgorICAgICAgICB2
YXIgZmFpbHVyZUNvdW50ID0gTWF0aC5taW4ocmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV1baV0s
IDEwMDAwKTsKKworICAgICAgICBpZiAoZ19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cykK
KyAgICAgICAgICAgIGZhaWx1cmVDb3VudCAtPSBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMu
Zmxha3lEZWx0YXNCeUJ1aWxkW2ldLnRvdGFsIHx8IDA7CisKKyAgICAgICAgZ3JhcGhEYXRhLnB1
c2goW2J1aWxkRGF0ZSwgZmFpbHVyZUNvdW50XSk7CisKKyAgICAgICAgaWYgKCFnX3Nob3VsZFNo
b3dXZWJLaXRSZXZpc2lvbnNPbmx5ICYmIChyZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNfS0VZXVtp
XSAhPSByZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNfS0VZXVtpICsgMV0pKSB7CisgICAgICAgICAg
ICBhbm5vdGF0aW9ucy5wdXNoKHsKKyAgICAgICAgICAgICAgICBzZXJpZXM6IEZBSUxJTkdfVEVT
VFNfREFUQVNFVF9OQU1FLAorICAgICAgICAgICAgICAgIHg6IGJ1aWxkRGF0ZSwKKyAgICAgICAg
ICAgICAgICBzaG9ydFRleHQ6ICdSJywKKyAgICAgICAgICAgICAgICB0ZXh0OiAnV2ViS2l0IHJv
bGw6IHInICsgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baSArIDFdICsgJyB0byAnICsg
cmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baV0KKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgdmFyIHdpbmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LmNsaWVudFdpZHRoOwpAQCAtMjEzLDE0NiArMjA0LDEzNSBAQCBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IHZhciBzd2l0Y2hlck5vZGUgPSAkKCd0ZXN0LXR5cGUtc3dpdGNoZXInKTsKICAgICB2YXIgaW5z
cGVjdG9yTm9kZSA9ICQoJ2luc3BlY3Rvci1jb250YWluZXInKTsKICAgICB2YXIgZ3JhcGhXaWR0
aCA9IHdpbmRvd1dpZHRoIC0gMjAgLSBpbnNwZWN0b3JOb2RlLm9mZnNldFdpZHRoOwotICAgIHZh
ciBncmFwaEhlaWdodCA9IHdpbmRvd0hlaWdodCAtCi0gICAgICAgIHN3aXRjaGVyTm9kZS5vZmZz
ZXRUb3AgLSBzd2l0Y2hlck5vZGUub2Zmc2V0SGVpZ2h0IC0gMjA7CisgICAgdmFyIGdyYXBoSGVp
Z2h0ID0gd2luZG93SGVpZ2h0IC0gc3dpdGNoZXJOb2RlLm9mZnNldFRvcCAtIHN3aXRjaGVyTm9k
ZS5vZmZzZXRIZWlnaHQgLSAyMDsKIAogICAgIHZhciBjb250YWluZXJOb2RlID0gJCgndGltZWxp
bmUtY29udGFpbmVyJyk7CiAgICAgY29udGFpbmVyTm9kZS5zdHlsZS5oZWlnaHQgPSBncmFwaEhl
aWdodCArICdweCc7CiAgICAgY29udGFpbmVyTm9kZS5zdHlsZS53aWR0aCA9IGdyYXBoV2lkdGgg
KyAncHgnOwogICAgIGluc3BlY3Rvck5vZGUuc3R5bGUuaGVpZ2h0ID0gZ3JhcGhIZWlnaHQgKyAn
cHgnOwogCi0gICAgZHlncmFwaCA9IG5ldyBEeWdyYXBoKAorICAgIGdfZHlncmFwaCA9IG5ldyBE
eWdyYXBoKAogICAgICAgICBjb250YWluZXJOb2RlLAogICAgICAgICBncmFwaERhdGEsIHsKLSAg
ICAgICAgICBsYWJlbHM6IFsnRGF0ZScsIEZBSUxJTkdfVEVTVFNfREFUQVNFVF9OQU1FXSwKLSAg
ICAgICAgICB3aWR0aDogZ3JhcGhXaWR0aCwKLSAgICAgICAgICBoZWlnaHQ6IGdyYXBoSGVpZ2h0
LAotICAgICAgICAgIGNsaWNrQ2FsbGJhY2s6IGZ1bmN0aW9uKGV2ZW50LCBkYXRlKSB7Ci0gICAg
ICAgICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBidWlsZEluZGlj
ZXNCeVRpbWVzdGFtcFtkYXRlXSk7Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBkcmF3Q2FsbGJh
Y2s6IGZ1bmN0aW9uKGR5Z3JhcGgsIGlzSW5pdGlhbCkgewotICAgICAgICAgICAgaWYgKGlzSW5p
dGlhbCkgcmV0dXJuOwotICAgICAgICAgICAgdXBkYXRlQnVpbGRJbmRpY2F0b3IocmVzdWx0cywg
ZHlncmFwaCk7Ci0gICAgICAgICAgfSwKLSAgICAgICAgICAvLyB4VmFsdWVQYXJzZXIgaXMgbmVj
ZXNzYXJ5IGZvciBhbm5vdGF0aW9ucyB0byB3b3JrLCBldmVuIHRob3VnaCB3ZQotICAgICAgICAg
IC8vIGFscmVhZHkgaGF2ZSBEYXRlIGluc3RhbmNlcwotICAgICAgICAgIHhWYWx1ZVBhcnNlcjog
ZnVuY3Rpb24oaW5wdXQpIHsgcmV0dXJuIGlucHV0LmdldFRpbWUoKTsgfQorICAgICAgICAgICAg
bGFiZWxzOiBbJ0RhdGUnLCBGQUlMSU5HX1RFU1RTX0RBVEFTRVRfTkFNRV0sCisgICAgICAgICAg
ICB3aWR0aDogZ3JhcGhXaWR0aCwKKyAgICAgICAgICAgIGhlaWdodDogZ3JhcGhIZWlnaHQsCisg
ICAgICAgICAgICBjbGlja0NhbGxiYWNrOiBmdW5jdGlvbihldmVudCwgZGF0ZSkgeworICAgICAg
ICAgICAgICAgIHNlbGVjdEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGdfZHlncmFwaCwgZ19idWls
ZEluZGljZXNCeVRpbWVzdGFtcFtkYXRlXSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ZHJhd0NhbGxiYWNrOiBmdW5jdGlvbihkeWdyYXBoLCBpc0luaXRpYWwpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNJbml0aWFsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgdXBkYXRlQnVpbGRJbmRpY2F0b3IocmVzdWx0cywgZHlncmFwaCk7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgLy8geFZhbHVlUGFyc2VyIGlzIG5lY2Vzc2FyeSBmb3IgYW5u
b3RhdGlvbnMgdG8gd29yaywgZXZlbiB0aG91Z2ggd2UKKyAgICAgICAgICAgIC8vIGFscmVhZHkg
aGF2ZSBEYXRlIGluc3RhbmNlcworICAgICAgICAgICAgeFZhbHVlUGFyc2VyOiBmdW5jdGlvbihp
bnB1dCkgeyByZXR1cm4gaW5wdXQuZ2V0VGltZSgpOyB9CiAgICAgICAgIH0pOwotICAgIGlmIChh
bm5vdGF0aW9ucy5sZW5ndGgpIHsKLSAgICAgIGR5Z3JhcGguc2V0QW5ub3RhdGlvbnMoYW5ub3Rh
dGlvbnMpOwotICAgIH0KKyAgICBpZiAoYW5ub3RhdGlvbnMubGVuZ3RoKQorICAgICAgICBnX2R5
Z3JhcGguc2V0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpOwogCiAgICAgaW5zcGVjdG9yTm9kZS5z
dHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOwogCi0gICAgaWYgKGN1cnJlbnRCdWlsZEluZGV4
ICE9IC0xKSB7Ci0gICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBj
dXJyZW50QnVpbGRJbmRleCk7Ci0gICAgfQotICB9CisgICAgaWYgKGdfY3VycmVudEJ1aWxkSW5k
ZXggIT0gLTEpCisgICAgICAgIHNlbGVjdEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGdfZHlncmFw
aCwgZ19jdXJyZW50QnVpbGRJbmRleCk7Cit9CiAKLSAgZnVuY3Rpb24gc2VsZWN0QnVpbGQocmVz
dWx0cywgYnVpbGRlciwgZHlncmFwaCwgaW5kZXgpIHsKLSAgICBjdXJyZW50QnVpbGRJbmRleCA9
IGluZGV4OworZnVuY3Rpb24gc2VsZWN0QnVpbGQocmVzdWx0cywgYnVpbGRlciwgZHlncmFwaCwg
aW5kZXgpCit7CisgICAgZ19jdXJyZW50QnVpbGRJbmRleCA9IGluZGV4OwogICAgIHVwZGF0ZUJ1
aWxkSW5kaWNhdG9yKHJlc3VsdHMsIGR5Z3JhcGgpOwogICAgIHVwZGF0ZUJ1aWxkSW5zcGVjdG9y
KHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KTsKICAgICBzZXRRdWVyeVBhcmFtZXRl
cignYnVpbGRUaW1lc3RhbXAnLCByZXN1bHRzW1RJTUVTVEFNUFNfS0VZXVtpbmRleF0gKiAxMDAw
KTsKLSAgfQorfQogCi0gIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5kaWNhdG9yKHJlc3VsdHMsIGR5
Z3JhcGgpIHsKK2Z1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5kaWNhdG9yKHJlc3VsdHMsIGR5Z3JhcGgp
Cit7CiAgICAgdmFyIGluZGljYXRvck5vZGUgPSAkKCdpbmRpY2F0b3InKTsKIAogICAgIGlmICgh
aW5kaWNhdG9yTm9kZSkgewotICAgICAgdmFyIGNvbnRhaW5lck5vZGUgPSAkKCd0aW1lbGluZS1j
b250YWluZXInKTsKLSAgICAgIGluZGljYXRvck5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICAgIGluZGljYXRvck5vZGUuaWQgPSAnaW5kaWNhdG9yJzsKLSAgICAgIGlu
ZGljYXRvck5vZGUuc3R5bGUuaGVpZ2h0ID0gY29udGFpbmVyTm9kZS5vZmZzZXRIZWlnaHQgKyAn
cHgnOwotICAgICAgY29udGFpbmVyTm9kZS5hcHBlbmRDaGlsZChpbmRpY2F0b3JOb2RlKTsKKyAg
ICAgICAgdmFyIGNvbnRhaW5lck5vZGUgPSAkKCd0aW1lbGluZS1jb250YWluZXInKTsKKyAgICAg
ICAgaW5kaWNhdG9yTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAg
ICBpbmRpY2F0b3JOb2RlLmlkID0gJ2luZGljYXRvcic7CisgICAgICAgIGluZGljYXRvck5vZGUu
c3R5bGUuaGVpZ2h0ID0gY29udGFpbmVyTm9kZS5vZmZzZXRIZWlnaHQgKyAncHgnOworICAgICAg
ICBjb250YWluZXJOb2RlLmFwcGVuZENoaWxkKGluZGljYXRvck5vZGUpOwogICAgIH0KIAotICAg
IGlmIChjdXJyZW50QnVpbGRJbmRleCA9PSAtMSkgewotICAgICAgaW5kaWNhdG9yTm9kZS5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgIH0gZWxzZSB7Ci0gICAgICBpbmRpY2F0b3JOb2RlLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOwotICAgICAgdmFyIGJ1aWxkRGF0ZSA9Ci0gICAgICAgICAg
bmV3IERhdGUocmVzdWx0c1tUSU1FU1RBTVBTX0tFWV1bY3VycmVudEJ1aWxkSW5kZXhdICogMTAw
MCk7Ci0gICAgICB2YXIgZG9tQ29vcmRzID0gZHlncmFwaC50b0RvbUNvb3JkcyhidWlsZERhdGUs
IDApOwotICAgICAgaW5kaWNhdG9yTm9kZS5zdHlsZS5sZWZ0ID0gZG9tQ29vcmRzWzBdICsgJ3B4
JzsKKyAgICBpZiAoZ19jdXJyZW50QnVpbGRJbmRleCA9PSAtMSkKKyAgICAgICAgaW5kaWNhdG9y
Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGVsc2UgeworICAgICAgICBpbmRpY2F0
b3JOb2RlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworICAgICAgICB2YXIgYnVpbGREYXRlID0g
bmV3IERhdGUocmVzdWx0c1tUSU1FU1RBTVBTX0tFWV1bZ19jdXJyZW50QnVpbGRJbmRleF0gKiAx
MDAwKTsKKyAgICAgICAgdmFyIGRvbUNvb3JkcyA9IGR5Z3JhcGgudG9Eb21Db29yZHMoYnVpbGRE
YXRlLCAwKTsKKyAgICAgICAgaW5kaWNhdG9yTm9kZS5zdHlsZS5sZWZ0ID0gZG9tQ29vcmRzWzBd
ICsgJ3B4JzsKICAgICB9Ci0gIH0KK30KIAotICBmdW5jdGlvbiB1cGRhdGVCdWlsZEluc3BlY3Rv
cihyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBpbmRleCkgeworZnVuY3Rpb24gdXBkYXRlQnVp
bGRJbnNwZWN0b3IocmVzdWx0cywgYnVpbGRlciwgZHlncmFwaCwgaW5kZXgpCit7CiAgICAgdmFy
IGh0bWwgPSAnPHRhYmxlIGlkPSJpbnNwZWN0b3ItdGFibGUiPjxjYXB0aW9uPkRldGFpbHM8L2Nh
cHRpb24+JzsKIAotICAgIGZ1bmN0aW9uIGFkZFJvdyhsYWJlbCwgdmFsdWUpIHsKLSAgICAgIGh0
bWwgKz0KLSAgICAgICAgICAnPHRyPjx0ZCBjbGFzcz0ibGFiZWwiPicgKyBsYWJlbCArICc8L3Rk
Pjx0ZD4nICsgdmFsdWUgKyAnPC90ZD48L3RyPic7CisgICAgZnVuY3Rpb24gYWRkUm93KGxhYmVs
LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGh0bWwgKz0gJzx0cj48dGQgY2xhc3M9ImxhYmVsIj4n
ICsgbGFiZWwgKyAnPC90ZD48dGQ+JyArIHZhbHVlICsgJzwvdGQ+PC90cj4nOwogICAgIH0KIAog
ICAgIC8vIEJ1aWxkZXIgYW5kIHJlc3VsdHMgbGlua3MKICAgICB2YXIgYnVpbGROdW1iZXIgPSBy
ZXN1bHRzW0JVSUxEX05VTUJFUlNfS0VZXVtpbmRleF07CiAgICAgYWRkUm93KCcnLCAnJyk7Ci0g
ICAgdmFyIG1hc3RlciA9IGdldEJ1aWxkZXJNYXN0ZXIoYnVpbGRlcik7CisgICAgdmFyIG1hc3Rl
ciA9IGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcik7CiAgICAgdmFyIGJ1aWxkVXJsID0gbWFzdGVyLmdl
dExvZ1BhdGgoYnVpbGRlciwgcmVzdWx0c1tCVUlMRF9OVU1CRVJTX0tFWV1baW5kZXhdKTsKICAg
ICBpZiAobWFzdGVyID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewotICAgICAgdmFyIHJlc3Vs
dHNVcmwgPQotICAgICAgICAgICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzLycgKyBi
dWlsZGVyICsgJy9yJyArCi0gICAgICAgICAgICAgIHJlc3VsdHNbV0VCS0lUX1JFVklTSU9OU19L
RVldW2luZGV4XSArCi0gICAgICAgICAgICAgICcgKCcgKyByZXN1bHRzW0JVSUxEX05VTUJFUlNf
S0VZXVtpbmRleF0gKyAnKSc7CisgICAgICAgIHZhciByZXN1bHRzVXJsID0gJ2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnL3Jlc3VsdHMvJyArIGJ1aWxkZXIgKyAnL3InICsgcmVzdWx0c1tXRUJLSVRf
UkVWSVNJT05TX0tFWV1baW5kZXhdICsKKyAgICAgICAgICAgICcgKCcgKyByZXN1bHRzW0JVSUxE
X05VTUJFUlNfS0VZXVtpbmRleF0gKyAnKSc7CiAgICAgfSBlbHNlIHsKLSAgICAgIHZhciByZXN1
bHRzVXJsID0KLSAgICAgICAgICAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVt
L2xheW91dF90ZXN0X3Jlc3VsdHMvJyArCi0gICAgICAgICAgZ19idWlsZGVyc1tidWlsZGVyXSAr
ICcvJyArIHJlc3VsdHNbQ0hST01FX1JFVklTSU9OU19LRVldW2luZGV4XTsKKyAgICAgICAgdmFy
IHJlc3VsdHNVcmwgPSAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91
dF90ZXN0X3Jlc3VsdHMvJyArCisgICAgICAgICAgICBnX2J1aWxkZXJzW2J1aWxkZXJdICsgJy8n
ICsgcmVzdWx0c1tDSFJPTUVfUkVWSVNJT05TX0tFWV1baW5kZXhdOwogICAgIH0KIAotICAgIGFk
ZFJvdygKLSAgICAgICAgJ0J1aWxkOicsCi0gICAgICAgICc8YSBocmVmPSInICsgYnVpbGRVcmwg
KyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArIGJ1aWxkTnVtYmVyICsgJzwvYT4nICsKLSAgICAgICAg
JyAoPGEgaHJlZj0iJyArIHJlc3VsdHNVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+cmVzdWx0czwv
YT4pJyk7CisgICAgYWRkUm93KCdCdWlsZDonLCAnPGEgaHJlZj0iJyArIGJ1aWxkVXJsICsgJyIg
dGFyZ2V0PSJfYmxhbmsiPicgKyBidWlsZE51bWJlciArICc8L2E+ICg8YSBocmVmPSInICsgcmVz
dWx0c1VybCArICciIHRhcmdldD0iX2JsYW5rIj5yZXN1bHRzPC9hPiknKTsKIAogICAgIC8vIFJl
dmlzaW9uIGxpbmsocykKLSAgICBpZiAoIXNob3VsZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5KSB7
Ci0gICAgICBhZGRSb3coJ0Nocm9taXVtIGNoYW5nZTonLCBnZXRDaHJvbWl1bVJldmlzaW9uTGlu
ayhyZXN1bHRzLCBpbmRleCkpOwotICAgIH0KLSAgICBhZGRSb3coJ1dlYktpdCBjaGFuZ2U6Jywg
Z2V0V2ViS2l0UmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KSk7CisgICAgaWYgKCFnX3Nob3Vs
ZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5KQorICAgICAgICBhZGRSb3coJ0Nocm9taXVtIGNoYW5n
ZTonLCBjaHJvbWl1bVJldmlzaW9uTGluayhyZXN1bHRzLCBpbmRleCkpOworICAgIGFkZFJvdygn
V2ViS2l0IGNoYW5nZTonLCB3ZWJLaXRSZXZpc2lvbkxpbmsocmVzdWx0cywgaW5kZXgpKTsKIAog
ICAgIC8vIFRlc3Qgc3RhdHVzL2NvdW50cwogICAgIGFkZFJvdygnJywgJycpOwogCi0gICAgZnVu
Y3Rpb24gYWRkTnVtYmVyUm93KGxhYmVsLCBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUpIHsK
LSAgICAgIHZhciBkZWx0YSA9IGN1cnJlbnRWYWx1ZSAtIHByZXZpb3VzVmFsdWU7Ci0gICAgICB2
YXIgZGVsdGFUZXh0ID0gJycKLSAgICAgIGlmIChkZWx0YSA8IDApIHsKLSAgICAgICAgZGVsdGFU
ZXh0ID0gJyA8c3BhbiBjbGFzcz0iZGVsdGEgbmVnYXRpdmUiPicgKyBkZWx0YSArICc8L3NwYW4+
JzsKLSAgICAgIH0gZWxzZSBpZiAoZGVsdGEgPiAwKSB7Ci0gICAgICAgIGRlbHRhVGV4dCA9ICcg
PHNwYW4gY2xhc3M9ImRlbHRhIHBvc2l0aXZlIj4rJyArIGRlbHRhICsgJzwvc3Bhbj4nOwotICAg
ICAgfQorICAgIGZ1bmN0aW9uIGFkZE51bWJlclJvdyhsYWJlbCwgY3VycmVudFZhbHVlLCBwcmV2
aW91c1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIGRlbHRhID0gY3VycmVudFZhbHVlIC0gcHJl
dmlvdXNWYWx1ZTsKKyAgICAgICAgdmFyIGRlbHRhVGV4dCA9ICcnCisgICAgICAgIGlmIChkZWx0
YSA8IDApCisgICAgICAgICAgICBkZWx0YVRleHQgPSAnIDxzcGFuIGNsYXNzPSJkZWx0YSBuZWdh
dGl2ZSI+JyArIGRlbHRhICsgJzwvc3Bhbj4nOworICAgICAgICBlbHNlIGlmIChkZWx0YSA+IDAp
CisgICAgICAgICAgICBkZWx0YVRleHQgPSAnIDxzcGFuIGNsYXNzPSJkZWx0YSBwb3NpdGl2ZSI+
KycgKyBkZWx0YSArICc8L3NwYW4+JzsKIAotICAgICAgYWRkUm93KGxhYmVsLCBjdXJyZW50VmFs
dWUgKyBkZWx0YVRleHQpOworICAgICAgICBhZGRSb3cobGFiZWwsIGN1cnJlbnRWYWx1ZSArIGRl
bHRhVGV4dCk7CiAgICAgfQogCi0gICAgdmFyIGV4cGVjdGF0aW9uc01hcCA9IGdldEV4cGVjdGF0
aW9uc01hcCgpOwotICAgIHZhciBmbGFreURlbHRhc0J5QnVpbGQgPSBjdXJyZW50QnVpbGRlclRl
c3RSZXN1bHRzLmZsYWt5RGVsdGFzQnlCdWlsZDsKLSAgICBmb3IgKHZhciBleHBlY3RhdGlvbktl
eSBpbiBleHBlY3RhdGlvbnNNYXApIHsKLSAgICAgIGlmIChleHBlY3RhdGlvbktleSBpbiByZXN1
bHRzW0ZJWEFCTEVfQ09VTlRTX0tFWV1baW5kZXhdKSB7Ci0gICAgICAgIHZhciBjdXJyZW50Q291
bnQgPQotICAgICAgICAgICAgcmVzdWx0c1tGSVhBQkxFX0NPVU5UU19LRVldW2luZGV4XVtleHBl
Y3RhdGlvbktleV07Ci0gICAgICAgIHZhciBwcmV2aW91c0NvdW50ID0KLSAgICAgICAgICAgIHJl
c3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXVtpbmRleCArIDFdW2V4cGVjdGF0aW9uS2V5XTsKLSAg
ICAgICAgaWYgKGdfY3VycmVudFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMpIHsKLSAgICAgICAgICBj
dXJyZW50Q291bnQgLT0gZmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4XVtleHBlY3RhdGlvbktleV0g
fHwgMDsKLSAgICAgICAgICBwcmV2aW91c0NvdW50IC09IGZsYWt5RGVsdGFzQnlCdWlsZFtpbmRl
eCArIDFdW2V4cGVjdGF0aW9uS2V5XSB8fCAwOworICAgIHZhciBleHBlY3RhdGlvbnMgPSBleHBl
Y3RhdGlvbnNNYXAoKTsKKyAgICB2YXIgZmxha3lEZWx0YXNCeUJ1aWxkID0gZ19jdXJyZW50QnVp
bGRlclRlc3RSZXN1bHRzLmZsYWt5RGVsdGFzQnlCdWlsZDsKKyAgICBmb3IgKHZhciBleHBlY3Rh
dGlvbktleSBpbiBleHBlY3RhdGlvbnMpIHsKKyAgICAgICAgaWYgKGV4cGVjdGF0aW9uS2V5IGlu
IHJlc3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXVtpbmRleF0pIHsKKyAgICAgICAgICAgIHZhciBj
dXJyZW50Q291bnQgPSByZXN1bHRzW0ZJWEFCTEVfQ09VTlRTX0tFWV1baW5kZXhdW2V4cGVjdGF0
aW9uS2V5XTsKKyAgICAgICAgICAgIHZhciBwcmV2aW91c0NvdW50ID0gcmVzdWx0c1tGSVhBQkxF
X0NPVU5UU19LRVldW2luZGV4ICsgMV1bZXhwZWN0YXRpb25LZXldOworICAgICAgICAgICAgaWYg
KGdfY3VycmVudFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMpIHsKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q291bnQgLT0gZmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4XVtleHBlY3RhdGlvbktleV0gfHwg
MDsKKyAgICAgICAgICAgICAgICBwcmV2aW91c0NvdW50IC09IGZsYWt5RGVsdGFzQnlCdWlsZFtp
bmRleCArIDFdW2V4cGVjdGF0aW9uS2V5XSB8fCAwOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYWRkTnVtYmVyUm93KGV4cGVjdGF0aW9uc1tleHBlY3RhdGlvbktleV0sIGN1cnJlbnRDb3Vu
dCwgcHJldmlvdXNDb3VudCk7CiAgICAgICAgIH0KLSAgICAgICAgYWRkTnVtYmVyUm93KAotICAg
ICAgICAgICAgZXhwZWN0YXRpb25zTWFwW2V4cGVjdGF0aW9uS2V5XSwgY3VycmVudENvdW50LCBw
cmV2aW91c0NvdW50KTsKLSAgICAgIH0KICAgICB9CiAKICAgICB2YXIgY3VycmVudFRvdGFsID0g
cmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV1baW5kZXhdOwogICAgIHZhciBwcmV2aW91c1RvdGFs
ID0gcmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV1baW5kZXggKyAxXTsKICAgICBpZiAoZ19jdXJy
ZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cykgewotICAgICAgY3VycmVudFRvdGFsIC09IGZsYWt5
RGVsdGFzQnlCdWlsZFtpbmRleF0udG90YWwgfHwgMDsKLSAgICAgIHByZXZpb3VzVG90YWwgLT0g
Zmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4ICsgMV0udG90YWwgfHwgMDsKKyAgICAgICAgY3VycmVu
dFRvdGFsIC09IGZsYWt5RGVsdGFzQnlCdWlsZFtpbmRleF0udG90YWwgfHwgMDsKKyAgICAgICAg
cHJldmlvdXNUb3RhbCAtPSBmbGFreURlbHRhc0J5QnVpbGRbaW5kZXggKyAxXS50b3RhbCB8fCAw
OwogICAgIH0KLSAgICBhZGROdW1iZXJSb3coCi0gICAgICAgICdUb3RhbCBmYWlsaW5nIHRlc3Rz
OicsIGN1cnJlbnRUb3RhbCwgcHJldmlvdXNUb3RhbCk7CisgICAgYWRkTnVtYmVyUm93KCdUb3Rh
bCBmYWlsaW5nIHRlc3RzOicsIGN1cnJlbnRUb3RhbCwgcHJldmlvdXNUb3RhbCk7CiAKICAgICBo
dG1sICs9ICc8L3RhYmxlPic7CiAKQEAgLTM2OCw3MiArMzQ4LDU2IEBAIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
ICAgaW5zcGVjdG9yTm9kZS5pbm5lckhUTUwgPSBodG1sOwogCiAgICAgaW5zcGVjdG9yTm9kZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylbMF0ub25jbGljayA9IGZ1bmN0aW9uKCkgewot
ICAgICAgc2hvd1Jlc3VsdHNEZWx0YShpbmRleCwgYnVpbGROdW1iZXIsIGJ1aWxkVXJsLCByZXN1
bHRzVXJsKTsKKyAgICAgICAgc2hvd1Jlc3VsdHNEZWx0YShpbmRleCwgYnVpbGROdW1iZXIsIGJ1
aWxkVXJsLCByZXN1bHRzVXJsKTsKICAgICB9OwogICAgIGluc3BlY3Rvck5vZGUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2J1dHRvbicpWzFdLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKLSAgICAgIHNl
bGVjdEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4ICsgMSk7CisgICAgICAg
IHNlbGVjdEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4ICsgMSk7CiAgICAg
fTsKICAgICBpbnNwZWN0b3JOb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVsyXS5v
bmNsaWNrID0gZnVuY3Rpb24oKSB7Ci0gICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVy
LCBkeWdyYXBoLCBpbmRleCAtIDEpOworICAgICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWls
ZGVyLCBkeWdyYXBoLCBpbmRleCAtIDEpOwogICAgIH07Ci0gIH0KK30KIAotICBmdW5jdGlvbiBz
aG93UmVzdWx0c0RlbHRhKGluZGV4LCBidWlsZE51bWJlciwgYnVpbGRVcmwsIHJlc3VsdHNVcmwp
IHsKLSAgICB2YXIgZmxha3lUZXN0cyA9IGN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMuZmxha3lU
ZXN0czsKLSAgICB2YXIgY3VycmVudFJlc3VsdHMgPSBjdXJyZW50QnVpbGRlclRlc3RSZXN1bHRz
LnJlc3VsdHNCeUJ1aWxkW2luZGV4XTsKLSAgICB2YXIgdGVzdE5hbWVzID0gY3VycmVudEJ1aWxk
ZXJUZXN0UmVzdWx0cy50ZXN0TmFtZXM7Ci0gICAgdmFyIHByZXZpb3VzUmVzdWx0cyA9IGN1cnJl
bnRCdWlsZGVyVGVzdFJlc3VsdHMucmVzdWx0c0J5QnVpbGRbaW5kZXggKyAxXTsKLSAgICB2YXIg
ZXhwZWN0YXRpb25zTWFwID0gZ2V0RXhwZWN0YXRpb25zTWFwKCk7CitmdW5jdGlvbiBzaG93UmVz
dWx0c0RlbHRhKGluZGV4LCBidWlsZE51bWJlciwgYnVpbGRVcmwsIHJlc3VsdHNVcmwpCit7Cisg
ICAgdmFyIGZsYWt5VGVzdHMgPSBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMuZmxha3lUZXN0
czsKKyAgICB2YXIgY3VycmVudFJlc3VsdHMgPSBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMu
cmVzdWx0c0J5QnVpbGRbaW5kZXhdOworICAgIHZhciB0ZXN0TmFtZXMgPSBnX2N1cnJlbnRCdWls
ZGVyVGVzdFJlc3VsdHMudGVzdE5hbWVzOworICAgIHZhciBwcmV2aW91c1Jlc3VsdHMgPSBnX2N1
cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMucmVzdWx0c0J5QnVpbGRbaW5kZXggKyAxXTsKKyAgICB2
YXIgZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zTWFwKCk7CiAKICAgICB2YXIgZGVsdGFzID0g
e307Ci0gICAgZnVuY3Rpb24gYWRkRGVsdGEoY2F0ZWdvcnksIHRlc3RJbmRleCkgewotICAgICAg
aWYgKGdfY3VycmVudFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMgJiYgZmxha3lUZXN0c1t0ZXN0SW5k
ZXhdKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGlmICghKGNhdGVnb3J5IGlu
IGRlbHRhcykpIHsKLSAgICAgICAgZGVsdGFzW2NhdGVnb3J5XSA9IFtdOwotICAgICAgfQotICAg
ICAgdmFyIHRlc3ROYW1lID0gdGVzdE5hbWVzW3Rlc3RJbmRleF07Ci0gICAgICB2YXIgZmxha2lu
ZXNzRGFzaGJvYXJkVXJsID0KLSAgICAgICAgICAnZmxha2luZXNzX2Rhc2hib2FyZC5odG1sJyAr
Ci0gICAgICAgICAgKGxvY2F0aW9uLmhhc2ggPyBsb2NhdGlvbi5oYXNoICsgJyYnIDogJyMnKSAr
Ci0gICAgICAgICAgJ3Rlc3RzPScgKyB0ZXN0TmFtZTsKLSAgICAgIHZhciBodG1sID0gJzxhIGhy
ZWY9IicgKwotICAgICAgICAgIGZsYWtpbmVzc0Rhc2hib2FyZFVybCArICciPicgKyB0ZXN0TmFt
ZSArICc8L2E+JzsKLSAgICAgIGlmIChmbGFreVRlc3RzW3Rlc3RJbmRleF0pIHsKLSAgICAgICAg
aHRtbCArPSAnIDxzcGFuIHN0eWxlPSJjb2xvcjogI2Y2NiI+cG9zc2libHkgZmxha3k8L3NwYW4+
JzsKLSAgICAgIH0KLQotICAgICAgZGVsdGFzW2NhdGVnb3J5XS5wdXNoKGh0bWwpOworICAgIGZ1
bmN0aW9uIGFkZERlbHRhKGNhdGVnb3J5LCB0ZXN0SW5kZXgpCisgICAgeworICAgICAgICBpZiAo
Z19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cyAmJiBmbGFreVRlc3RzW3Rlc3RJbmRleF0p
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghKGNhdGVnb3J5IGluIGRlbHRhcykp
CisgICAgICAgICAgICBkZWx0YXNbY2F0ZWdvcnldID0gW107CisgICAgICAgIHZhciB0ZXN0TmFt
ZSA9IHRlc3ROYW1lc1t0ZXN0SW5kZXhdOworICAgICAgICB2YXIgZmxha2luZXNzRGFzaGJvYXJk
VXJsID0gJ2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbCcgKyAobG9jYXRpb24uaGFzaCA/IGxvY2F0
aW9uLmhhc2ggKyAnJicgOiAnIycpICsgJ3Rlc3RzPScgKyB0ZXN0TmFtZTsKKyAgICAgICAgdmFy
IGh0bWwgPSAnPGEgaHJlZj0iJyArIGZsYWtpbmVzc0Rhc2hib2FyZFVybCArICciPicgKyB0ZXN0
TmFtZSArICc8L2E+JzsKKyAgICAgICAgaWYgKGZsYWt5VGVzdHNbdGVzdEluZGV4XSkKKyAgICAg
ICAgICAgIGh0bWwgKz0gJyA8c3BhbiBzdHlsZT0iY29sb3I6ICNmNjYiPnBvc3NpYmx5IGZsYWt5
PC9zcGFuPic7CisgICAgICAgIGRlbHRhc1tjYXRlZ29yeV0ucHVzaChodG1sKTsKICAgICB9CiAK
ICAgICBmb3IgKHZhciB0ZXN0SW5kZXggPSAwOyB0ZXN0SW5kZXggPCBjdXJyZW50UmVzdWx0cy5s
ZW5ndGg7IHRlc3RJbmRleCsrKSB7Ci0gICAgICBpZiAoY3VycmVudFJlc3VsdHNbdGVzdEluZGV4
XSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotCi0gICAgICBp
ZiAocHJldmlvdXNSZXN1bHRzW3Rlc3RJbmRleF0gIT09IHVuZGVmaW5lZCkgewotICAgICAgICBp
ZiAoY3VycmVudFJlc3VsdHNbdGVzdEluZGV4XSA9PSBwcmV2aW91c1Jlc3VsdHNbdGVzdEluZGV4
XSkgewotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGFkZERlbHRhKAot
ICAgICAgICAgICAgJ1dhcyA8Yj4nICsgZXhwZWN0YXRpb25zTWFwW3ByZXZpb3VzUmVzdWx0c1t0
ZXN0SW5kZXhdXSArICc8L2I+ICcgKwotICAgICAgICAgICAgJ25vdyA8Yj4nICsgZXhwZWN0YXRp
b25zTWFwW2N1cnJlbnRSZXN1bHRzW3Rlc3RJbmRleF1dICsgJzwvYj4nLAotICAgICAgICAgICAg
dGVzdEluZGV4KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZERlbHRhKAotICAgICAgICAg
ICAgJ05ld2x5IDxiPicgKyBleHBlY3RhdGlvbnNNYXBbY3VycmVudFJlc3VsdHNbdGVzdEluZGV4
XV0gKyAnPC9iPicsCi0gICAgICAgICAgICB0ZXN0SW5kZXgpOwotICAgICAgfQorICAgICAgICBp
ZiAoY3VycmVudFJlc3VsdHNbdGVzdEluZGV4XSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKHByZXZpb3VzUmVzdWx0c1t0ZXN0SW5kZXhdICE9PSB1
bmRlZmluZWQpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UmVzdWx0c1t0ZXN0SW5kZXhdID09
IHByZXZpb3VzUmVzdWx0c1t0ZXN0SW5kZXhdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgYWRkRGVsdGEoJ1dhcyA8Yj4nICsgZXhwZWN0YXRpb25zW3ByZXZpb3VzUmVz
dWx0c1t0ZXN0SW5kZXhdXSArICc8L2I+IG5vdyA8Yj4nICsgZXhwZWN0YXRpb25zW2N1cnJlbnRS
ZXN1bHRzW3Rlc3RJbmRleF1dICsgJzwvYj4nLCB0ZXN0SW5kZXgpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGFkZERlbHRhKCdOZXdseSA8Yj4nICsgZXhwZWN0YXRpb25zW2N1cnJlbnRS
ZXN1bHRzW3Rlc3RJbmRleF1dICsgJzwvYj4nLCB0ZXN0SW5kZXgpOwogICAgIH0KIAogICAgIGZv
ciAodmFyIHRlc3RJbmRleCA9IDA7IHRlc3RJbmRleCA8IHByZXZpb3VzUmVzdWx0cy5sZW5ndGg7
IHRlc3RJbmRleCsrKSB7Ci0gICAgICBpZiAocHJldmlvdXNSZXN1bHRzW3Rlc3RJbmRleF0gPT09
IHVuZGVmaW5lZCkgY29udGludWU7Ci0gICAgICBpZiAoY3VycmVudFJlc3VsdHNbdGVzdEluZGV4
XSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIGFkZERlbHRhKAotICAgICAgICAgICAgJ1dhcyA8
Yj4nICsgZXhwZWN0YXRpb25zTWFwW3ByZXZpb3VzUmVzdWx0c1t0ZXN0SW5kZXhdXSArICc8L2I+
JywKLSAgICAgICAgICAgIHRlc3RJbmRleCk7Ci0gICAgICB9CisgICAgICAgIGlmIChwcmV2aW91
c1Jlc3VsdHNbdGVzdEluZGV4XSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChjdXJyZW50UmVzdWx0c1t0ZXN0SW5kZXhdID09PSB1bmRlZmluZWQpCisg
ICAgICAgICAgICBhZGREZWx0YSgnV2FzIDxiPicgKyBleHBlY3RhdGlvbnNbcHJldmlvdXNSZXN1
bHRzW3Rlc3RJbmRleF1dICsgJzwvYj4nLCB0ZXN0SW5kZXgpOwogICAgIH0KIAogICAgIHZhciBo
dG1sID0gJyc7CkBAIC00NDYsNDYgKzQxMCw0NyBAQCBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgICAgICAnIiB0
YXJnZXQ9Il9ibGFuayI+cmVzdWx0czwvYT4pPC9wPic7CiAKICAgICBmb3IgKHZhciBkZWx0YUNh
dGVnb3J5IGluIGRlbHRhcykgewotICAgICAgaHRtbCArPSAnPHA+PGRpdj4nICsgZGVsdGFDYXRl
Z29yeSArICcgKCcgKyBkZWx0YXNbZGVsdGFDYXRlZ29yeV0ubGVuZ3RoICsgJyk8L2Rpdj48dWw+
JzsKLSAgICAgIGRlbHRhc1tkZWx0YUNhdGVnb3J5XS5mb3JFYWNoKGZ1bmN0aW9uKGRlbHRhSHRt
bCkgewotICAgICAgICBodG1sICs9ICc8bGk+JyArIGRlbHRhSHRtbCArICc8L2xpPic7Ci0gICAg
ICB9KTsKLSAgICAgIGh0bWwgKz0gJzwvdWw+PC9wPic7CisgICAgICAgIGh0bWwgKz0gJzxwPjxk
aXY+JyArIGRlbHRhQ2F0ZWdvcnkgKyAnICgnICsgZGVsdGFzW2RlbHRhQ2F0ZWdvcnldLmxlbmd0
aCArICcpPC9kaXY+PHVsPic7CisgICAgICAgIGRlbHRhc1tkZWx0YUNhdGVnb3J5XS5mb3JFYWNo
KGZ1bmN0aW9uKGRlbHRhSHRtbCkgeworICAgICAgICAgICAgaHRtbCArPSAnPGxpPicgKyBkZWx0
YUh0bWwgKyAnPC9saT4nOworICAgICAgICB9KTsKKyAgICAgICAgaHRtbCArPSAnPC91bD48L3A+
JzsKICAgICB9CiAKICAgICB2YXIgZGVsdGFXaW5kb3cgPSB3aW5kb3cub3BlbigpOwogICAgIGRl
bHRhV2luZG93LmRvY3VtZW50LndyaXRlKGh0bWwpOwotICB9Cit9CiAKLSAgZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKLSAgICBpZiAoY3VycmVudEJ1
aWxkSW5kZXggPT0gLTEpIHJldHVybjsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRv
d24nLCBmdW5jdGlvbihlKSB7CisgICAgaWYgKGdfY3VycmVudEJ1aWxkSW5kZXggPT0gLTEpCisg
ICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAoZS5rZXlJZGVudGlmaWVyKSB7Ci0gICAgICBj
YXNlICdMZWZ0JzoKKyAgICBjYXNlICdMZWZ0JzoKICAgICAgICAgc2VsZWN0QnVpbGQoCiAgICAg
ICAgICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0sCiAgICAg
ICAgICAgICBnX2N1cnJlbnRTdGF0ZS5idWlsZGVyLAotICAgICAgICAgICAgZHlncmFwaCwKLSAg
ICAgICAgICAgIGN1cnJlbnRCdWlsZEluZGV4ICsgMSk7CisgICAgICAgICAgICBnX2R5Z3JhcGgs
CisgICAgICAgICAgICBnX2N1cnJlbnRCdWlsZEluZGV4ICsgMSk7CiAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSAnUmlnaHQnOgorICAgIGNhc2UgJ1JpZ2h0JzoKICAgICAgICAgc2VsZWN0QnVp
bGQoCiAgICAgICAgICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRl
cl0sCiAgICAgICAgICAgICBnX2N1cnJlbnRTdGF0ZS5idWlsZGVyLAotICAgICAgICAgICAgZHln
cmFwaCwKLSAgICAgICAgICAgIGN1cnJlbnRCdWlsZEluZGV4IC0gMSk7CisgICAgICAgICAgICBn
X2R5Z3JhcGgsCisgICAgICAgICAgICBnX2N1cnJlbnRCdWlsZEluZGV4IC0gMSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgfSk7Ci0gIDwvc2NyaXB0PgotICA8L2hlYWQ+Ci0gIDxib2R5Pgor
fSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgogICAgIDxkaXYgaWQ9InRlc3QtdHlwZS1z
d2l0Y2hlciI+PC9kaXY+CiAKICAgICA8ZGl2IGlkPSJpbnNwZWN0b3ItY29udGFpbmVyIiBzdHls
ZT0idmlzaWJpbGl0eTogaGlkZGVuIj4KLSAgICAgIDxwPkNsaWNrIG9uIGEgcG9pbnQgb24gdGhl
IGdyYXBoIHRvIHNlZSBkZXRhaWxzIGFib3V0IHRoYXQgYnVpbGQuPC9wPgotICAgICAgPHA+Q2xp
Y2sgYW5kIGRyYWcgb24gdGhlIGdyYXBoIHRvIHpvb20gaW4gdG8gdGhhdCBwZXJpb2QuPC9wPgor
ICAgICAgICA8cD5DbGljayBvbiBhIHBvaW50IG9uIHRoZSBncmFwaCB0byBzZWUgZGV0YWlscyBh
Ym91dCB0aGF0IGJ1aWxkLjwvcD4KKyAgICAgICAgPHA+Q2xpY2sgYW5kIGRyYWcgb24gdGhlIGdy
YXBoIHRvIHpvb20gaW4gdG8gdGhhdCBwZXJpb2QuPC9wPgogICAgIDwvZGl2PgogICAgIDxkaXYg
aWQ9InRpbWVsaW5lLWNvbnRhaW5lciI+TG9hZGluZy4uLjwvZGl2PgotICA8L2JvZHk+Cis8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL3RyZWVtYXAuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvdHJlZW1hcC5odG1sCmluZGV4IGUyOTgzOWJhMTJkYzMzZDcxMTRjNjBlMDhiNjg2
ZThjYWUxNDk1NGMuLmE1OTIzZjQxNjY1ZTU4ODYyNTJmYjNkOTY3ZDkwODU4MTM4YTNjMzMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1h
cC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJl
ZW1hcC5odG1sCkBAIC0zMSw3MiArMzEsNzIgQEAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxsaW5rIHJlbD0nc3R5
bGVzaGVldCcgaHJlZj0nd2VidHJlZW1hcC5jc3MnPjwvbGluaz4KIDxzdHlsZT4KIGJvZHkgewot
ICBkaXNwbGF5OiAtbW96LWJveDsKLSAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gIGRpc3BsYXk6
IGJveDsKLSAgLW1vei1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKLSAgLXdlYmtpdC1ib3gtb3JpZW50
OiB2ZXJ0aWNhbDsKLSAgYm94LW9yaWVudDogdmVydGljYWw7Ci0KLSAgcG9zaXRpb246IGFic29s
dXRlOwotICB0b3A6IDA7Ci0gIHJpZ2h0OiAwOwotICBib3R0b206IDA7Ci0gIGxlZnQ6IDA7Cisg
ICAgZGlzcGxheTogLW1vei1ib3g7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgZGlz
cGxheTogYm94OworICAgIC1tb3otYm94LW9yaWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1i
b3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICBib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9t
OiAwOworICAgIGxlZnQ6IDA7CiB9CiAKICNtYXAgewotICBkaXNwbGF5OiAtbW96LWJveDsKLSAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gIGRpc3BsYXk6IGJveDsKLQotICAtbW96LWJveC1mbGV4
OiAxOwotICAtd2Via2l0LWJveC1mbGV4OiAxOwotICBib3gtZmxleDogMTsKLQotICBwb3NpdGlv
bjogcmVsYXRpdmU7Ci0gIGN1cnNvcjogcG9pbnRlcjsKLSAgLXdlYmtpdC11c2VyLXNlbGVjdDog
bm9uZTsKLSAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBkaXNwbGF5OiAtbW96LWJveDsK
KyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICBkaXNwbGF5OiBib3g7CisKKyAgICAtbW96
LWJveC1mbGV4OiAxOworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgYm94LWZsZXg6IDE7
CisKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIC13
ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKIH0K
IAogLmV4dHJhLWRvbSB7Ci0gIGRpc3BsYXk6IG5vbmU7Ci0gIGJvcmRlcjogbm9uZTsKLSAgYm9y
ZGVyLXRvcDogMXB4IGRhc2hlZDsKLSAgcGFkZGluZzogNHB4OwotICBtYXJnaW46IDA7Ci0gIG92
ZXJmbG93OiBhdXRvOwotICBjdXJzb3I6IGF1dG87Ci0gIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRl
eHQ7Ci0gIC1tb3otdXNlci1zZWxlY3Q6IHRleHQ7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBi
b3JkZXI6IG5vbmU7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZDsKKyAgICBwYWRkaW5nOiA0
cHg7CisgICAgbWFyZ2luOiAwOworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGN1cnNvcjogYXV0
bzsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OworICAgIC1tb3otdXNlci1zZWxlY3Q6
IHRleHQ7CiB9CiAKICNmb2N1c2VkLWxlYWYgewotICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAg
ZGlzcGxheTogLW1vei1ib3g7Ci0gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7Ci0gIC1t
b3otYm94LW9yaWVudDogdmVydGljYWw7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
ZGlzcGxheTogLW1vei1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAg
ICAtbW96LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogfQogCiAjZm9jdXNlZC1sZWFmID4gLmV4dHJh
LWRvbSB7Ci0gIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICBkaXNwbGF5OiAtbW96LWJveDsKLSAg
LXdlYmtpdC1ib3gtZmxleDogMTsKLSAgLW1vei1ib3gtZmxleDogMTsKKyAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKKyAgICBkaXNwbGF5OiAtbW96LWJveDsKKyAgICAtd2Via2l0LWJveC1mbGV4
OiAxOworICAgIC1tb3otYm94LWZsZXg6IDE7CiB9CiAKICNmb2N1c2VkLWxlYWYud2VidHJlZW1h
cC1ub2RlOmhvdmVyIHsKLSAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgYmFja2dyb3VuZDogd2hp
dGU7CiB9CiAKICNmb2N1c2VkLWxlYWYgLndlYnRyZWVtYXAtY2FwdGlvbjpob3ZlciB7Ci0gIGJh
Y2tncm91bmQ6ICNlZWU7CisgICAgYmFja2dyb3VuZDogI2VlZTsKIH0KIAogLmVycm9yIHsKLSAg
Y29sb3I6IHJlZDsKLSAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGNvbG9yOiByZWQ7CisgICAg
Zm9udC1zdHlsZTogaXRhbGljOwogfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSJidWlsZGVycy5q
cyI+PC9zY3JpcHQ+CkBAIC0xMDQsMjA0ICsxMDQsMjEwIEBAIGJvZHkgewogPHNjcmlwdCBzcmM9
J3dlYnRyZWVtYXAuanMnPjwvc2NyaXB0PgogCiA8ZGl2IGlkPSdoZWFkZXItY29udGFpbmVyJz48
L2Rpdj4KLTxwPkNsaWNrIG9uIGEgYm94IHRvIHpvb20gaW4uICBDbGljayBvbiB0aGUgb3V0ZXJt
b3N0IGJveCB0byB6b29tIG91dC48L3A+Cis8cD5DbGljayBvbiBhIGJveCB0byB6b29tIGluLiAg
ICBDbGljayBvbiB0aGUgb3V0ZXJtb3N0IGJveCB0byB6b29tIG91dC48L3A+CiA8ZGl2IGlkPSdt
YXAnPjwvZGl2PgogCiA8c2NyaXB0PgotJCgnaGVhZGVyLWNvbnRhaW5lcicpLmlubmVySFRNTCA9
IGdldEhUTUxGb3JUZXN0VHlwZVN3aXRjaGVyKCk7CiskKCdoZWFkZXItY29udGFpbmVyJykuaW5u
ZXJIVE1MID0gaHRtbEZvclRlc3RUeXBlU3dpdGNoZXIoKTsKIAogdmFyIFRFU1RfVVJMX0JBU0Vf
UEFUSCA9ICJodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvIjsK
IAogLy8gVGhpcyBsb29rcyBsaWtlOgogLy8geyAiZGF0YSI6IHsiJGFyZWEiOiAoc3VtIG9mIGFs
bCB0aW1pbmdzKX0sCi0vLyAgICJuYW1lIjogKG5hbWUgb2YgdGhpcyBub2RlKSwKLS8vICAgImNo
aWxkcmVuIjogWyAoY2hpbGQgbm9kZXMsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGlzKSBdIH0K
Ky8vICAgICAibmFtZSI6IChuYW1lIG9mIHRoaXMgbm9kZSksCisvLyAgICAgImNoaWxkcmVuIjog
WyAoY2hpbGQgbm9kZXMsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGlzKSBdIH0KIC8vIGNoaWxk
Q291bnQgaXMgYWRkZWQganVzdCB0byBiZSBpbmNsdWRlcyBpbiB0aGUgbm9kZSdzIG5hbWUKLWZ1
bmN0aW9uIGNvbnZlcnRUb1dlYlRyZWVtYXBGb3JtYXQodHJlZW5hbWUsIHRyZWUpIHsKLSAgdmFy
IHRvdGFsID0gMDsKLSAgdmFyIGNoaWxkQ291bnQgPSAwOwotICB2YXIgY2hpbGRyZW4gPSBbXTsK
LSAgZm9yICh2YXIgbmFtZSBpbiB0cmVlKSB7Ci0gICAgdmFyIHRyZWVOb2RlID0gdHJlZVtuYW1l
XTsKLSAgICBpZiAodHlwZW9mIHRyZWVOb2RlID09ICJudW1iZXIiKSB7Ci0gICAgICB2YXIgdGlt
ZSA9IHRyZWVOb2RlOwotICAgICAgdmFyIG5vZGUgPSB7Ci0gICAgICAgICJkYXRhIjogeyIkYXJl
YSI6IHRpbWV9LAotICAgICAgICAibmFtZSI6IG5hbWUgKyAiICgiICsgdGltZSArICJtcykiCi0g
ICAgICB9OwotICAgICAgY2hpbGRyZW4ucHVzaChub2RlKTsKLSAgICAgIHRvdGFsICs9IHRpbWU7
Ci0gICAgICBjaGlsZENvdW50Kys7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciBzdWJ0cmVlID0g
Y29udmVydFRvV2ViVHJlZW1hcEZvcm1hdChuYW1lLCB0cmVlTm9kZSk7Ci0gICAgICBjaGlsZHJl
bi5wdXNoKHN1YnRyZWUpOwotICAgICAgdG90YWwgKz0gc3VidHJlZVsiZGF0YSJdWyIkYXJlYSJd
OwotICAgICAgY2hpbGRDb3VudCArPSBzdWJ0cmVlWyJjaGlsZENvdW50Il07CitmdW5jdGlvbiBj
b252ZXJ0VG9XZWJUcmVlbWFwRm9ybWF0KHRyZWVuYW1lLCB0cmVlKQoreworICAgIHZhciB0b3Rh
bCA9IDA7CisgICAgdmFyIGNoaWxkQ291bnQgPSAwOworICAgIHZhciBjaGlsZHJlbiA9IFtdOwor
ICAgIGZvciAodmFyIG5hbWUgaW4gdHJlZSkgeworICAgICAgICB2YXIgdHJlZU5vZGUgPSB0cmVl
W25hbWVdOworICAgICAgICBpZiAodHlwZW9mIHRyZWVOb2RlID09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICB2YXIgdGltZSA9IHRyZWVOb2RlOworICAgICAgICAgICAgdmFyIG5vZGUgPSB7Cisg
ICAgICAgICAgICAgICAgImRhdGEiOiB7IiRhcmVhIjogdGltZX0sCisgICAgICAgICAgICAgICAg
Im5hbWUiOiBuYW1lICsgIiAoIiArIHRpbWUgKyAibXMpIgorICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIGNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgICAgICB0b3RhbCArPSB0aW1lOwor
ICAgICAgICAgICAgY2hpbGRDb3VudCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dmFyIHN1YnRyZWUgPSBjb252ZXJ0VG9XZWJUcmVlbWFwRm9ybWF0KG5hbWUsIHRyZWVOb2RlKTsK
KyAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goc3VidHJlZSk7CisgICAgICAgICAgICB0b3RhbCAr
PSBzdWJ0cmVlWyJkYXRhIl1bIiRhcmVhIl07CisgICAgICAgICAgICBjaGlsZENvdW50ICs9IHN1
YnRyZWVbImNoaWxkQ291bnQiXTsKKyAgICAgICAgfQogICAgIH0KLSAgfQotCi0gIGNoaWxkcmVu
LnNvcnQoZnVuY3Rpb24oYSwgYikgewotICAgIGFUaW1lID0gYS5kYXRhWyIkYXJlYSJdCi0gICAg
YlRpbWUgPSBiLmRhdGFbIiRhcmVhIl0KLSAgICByZXR1cm4gYlRpbWUgLSBhVGltZTsKLSAgfSk7
Ci0KLSAgcmV0dXJuIHsKLSAgICAiZGF0YSI6IHsiJGFyZWEiOiB0b3RhbH0sCi0gICAgIm5hbWUi
OiB0cmVlbmFtZSArICIgKCIgKyB0b3RhbCArICJtcyAtICIgKyBjaGlsZENvdW50ICsgIiB0ZXN0
cykiLAotICAgICJjaGlsZHJlbiI6IGNoaWxkcmVuLAotICAgICJjaGlsZENvdW50IjogY2hpbGRD
b3VudAotICB9OworCisgICAgY2hpbGRyZW4uc29ydChmdW5jdGlvbihhLCBiKSB7CisgICAgICAg
IGFUaW1lID0gYS5kYXRhWyIkYXJlYSJdCisgICAgICAgIGJUaW1lID0gYi5kYXRhWyIkYXJlYSJd
CisgICAgICAgIHJldHVybiBiVGltZSAtIGFUaW1lOworICAgIH0pOworCisgICAgcmV0dXJuIHsK
KyAgICAgICAgImRhdGEiOiB7IiRhcmVhIjogdG90YWx9LAorICAgICAgICAibmFtZSI6IHRyZWVu
YW1lICsgIiAoIiArIHRvdGFsICsgIm1zIC0gIiArIGNoaWxkQ291bnQgKyAiIHRlc3RzKSIsCisg
ICAgICAgICJjaGlsZHJlbiI6IGNoaWxkcmVuLAorICAgICAgICAiY2hpbGRDb3VudCI6IGNoaWxk
Q291bnQKKyAgICB9OwogfQogCiB2YXIgZ19yZXN1bHRzQnlCdWlsZGVyID0ge307CiAKLWZ1bmN0
aW9uIEFERF9SRVNVTFRTKGRhdGEpIHsKLSAgLy8gVE9ETyhvamFuKTogV2Ugc2hvdWxkIHByb2Jh
Ymx5IGluY2x1ZGUgdGhlIGJ1aWxkZXJOYW1lIGluIHRoZSBKU09OCi0gIC8vIHJhdGhlciB0aGFu
IHJlbHlpbmcgb24gb25seSBsb2FkaW5nIG9uZSBKU09OIGZpbGUgcGVyIHBhZ2UuCi0gIGlmICgh
Z19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQotICAgIGdfcmVzdWx0
c0J5QnVpbGRlcltnX2N1cnJlbnRTdGF0ZS5idWlsZGVyXSA9IGRhdGE7CitmdW5jdGlvbiBBRERf
UkVTVUxUUyhkYXRhKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgaW5jbHVk
ZSB0aGUgYnVpbGRlck5hbWUgaW4gdGhlIEpTT04KKyAgICAvLyByYXRoZXIgdGhhbiByZWx5aW5n
IG9uIG9ubHkgbG9hZGluZyBvbmUgSlNPTiBmaWxlIHBlciBwYWdlLgorICAgIGlmICghZ19yZXN1
bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQorICAgICAgICBnX3Jlc3VsdHNC
eUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0gPSBkYXRhOwogCi0gIGhhbmRsZUxvY2F0
aW9uQ2hhbmdlKCk7CisgICAgaGFuZGxlTG9jYXRpb25DaGFuZ2UoKTsKIH0KIAotdmFyIGlzR2Vu
ZXJhdGluZ1BhZ2UgPSBmYWxzZTsKK3ZhciBnX2lzR2VuZXJhdGluZ1BhZ2UgPSBmYWxzZTsKIAot
ZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkgewotICBpZiAoIWdfcmVzdWx0c0J5QnVpbGRlcltnX2N1
cnJlbnRTdGF0ZS5idWlsZGVyXSkgewotICAgIGhhbmRsZVJlc291cmNlTG9hZEVycm9yKGdfY3Vy
cmVudFN0YXRlLmJ1aWxkZXIpOwotICAgIHJldHVybjsKLSAgfQorZnVuY3Rpb24gZ2VuZXJhdGVQ
YWdlKCkKK3sKKyAgICBpZiAoIWdfcmVzdWx0c0J5QnVpbGRlcltnX2N1cnJlbnRTdGF0ZS5idWls
ZGVyXSkgeworICAgICAgICBoYW5kbGVSZXNvdXJjZUxvYWRFcnJvcihnX2N1cnJlbnRTdGF0ZS5i
dWlsZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICBpc0dlbmVyYXRpbmdQYWdlID0g
dHJ1ZTsKKyAgICBnX2lzR2VuZXJhdGluZ1BhZ2UgPSB0cnVlOwogCi0gIHZhciByYXdUcmVlID0g
Z19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdOwotICB2YXIgd2VidHJl
ZSA9IGNvbnZlcnRUb1dlYlRyZWVtYXBGb3JtYXQoJ0xheW91dFRlc3RzJywgcmF3VHJlZSk7Ci0g
IGFwcGVuZFRyZWVtYXAoJCgnbWFwJyksIHdlYnRyZWUpOworICAgIHZhciByYXdUcmVlID0gZ19y
ZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdOworICAgIHZhciB3ZWJ0cmVl
ID0gY29udmVydFRvV2ViVHJlZW1hcEZvcm1hdCgnTGF5b3V0VGVzdHMnLCByYXdUcmVlKTsKKyAg
ICBhcHBlbmRUcmVlbWFwKCQoJ21hcCcpLCB3ZWJ0cmVlKTsKIAotICBpZiAoZ19jdXJyZW50U3Rh
dGUudHJlZW1hcGZvY3VzKQotICAgIGZvY3VzUGF0aCh3ZWJ0cmVlLCBnX2N1cnJlbnRTdGF0ZS50
cmVlbWFwZm9jdXMpCisgICAgaWYgKGdfY3VycmVudFN0YXRlLnRyZWVtYXBmb2N1cykKKyAgICAg
ICAgZm9jdXNQYXRoKHdlYnRyZWUsIGdfY3VycmVudFN0YXRlLnRyZWVtYXBmb2N1cykKIAotICBp
c0dlbmVyYXRpbmdQYWdlID0gZmFsc2U7CisgICAgZ19pc0dlbmVyYXRpbmdQYWdlID0gZmFsc2U7
CiB9CiAKLWZ1bmN0aW9uIGZvY3VzUGF0aCh0cmVlLCBwYXRoKSB7Ci0gIHZhciBwYXJ0cyA9IGRl
Y29kZVVSSUNvbXBvbmVudChwYXRoKS5zcGxpdCgnLycpOwotICBpZiAoZXh0cmFjdE5hbWUodHJl
ZSkgIT0gcGFydHNbMF0pIHsKLSAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZm9jdXMgdHJl
ZSByb290ZWQgYXQgJyArIHBhcnRzWzBdKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBmb3IgKHZh
ciBpID0gMTsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJl
ZS5jaGlsZHJlbjsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNoaWxkcmVuLmxlbmd0aDsgaisr
KSB7Ci0gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltqXTsKLSAgICAgIGlmIChleHRyYWN0TmFt
ZShjaGlsZCkgPT0gcGFydHNbaV0pIHsKLSAgICAgICAgdHJlZSA9IGNoaWxkOwotICAgICAgICBm
b2N1cyh0cmVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9CitmdW5jdGlvbiBmb2N1c1BhdGgo
dHJlZSwgcGF0aCkKK3sKKyAgICB2YXIgcGFydHMgPSBkZWNvZGVVUklDb21wb25lbnQocGF0aCku
c3BsaXQoJy8nKTsKKyAgICBpZiAoZXh0cmFjdE5hbWUodHJlZSkgIT0gcGFydHNbMF0pIHsKKyAg
ICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGZvY3VzIHRyZWUgcm9vdGVkIGF0ICcgKyBw
YXJ0c1swXSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGogPT0gY2hpbGRyZW4u
bGVuZ3RoKSB7Ci0gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZmluZCB0cmVlIGF0ICcg
KyBwYXJ0c1tpXSk7Ci0gICAgICBicmVhazsKKworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGFy
dHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjsK
KyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZHJlbi5sZW5ndGg7IGorKykgeworICAg
ICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bal07CisgICAgICAgICAgICBpZiAoZXh0cmFj
dE5hbWUoY2hpbGQpID09IHBhcnRzW2ldKSB7CisgICAgICAgICAgICAgICAgdHJlZSA9IGNoaWxk
OworICAgICAgICAgICAgICAgIGZvY3VzKHRyZWUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChqID09IGNoaWxkcmVuLmxlbmd0
aCkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGZpbmQgdHJlZSBhdCAn
ICsgcGFydHNbaV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9Ci0gIH0K
IAogfQogCi1mdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkgewot
ICBzd2l0Y2goa2V5KSB7CitmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2
YWx1ZSkKK3sKKyAgICBzd2l0Y2goa2V5KSB7CiAgICAgY2FzZSAnYnVpbGRlcic6Ci0gICAgICB2
YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBnX2J1aWxkZXJzOwotICAg
ICAgICAgIH0pOwotCi0gICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdmFsaWRhdGVQYXJhbWV0
ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsg
cmV0dXJuIHZhbHVlIGluIGdfYnVpbGRlcnM7IH0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGNhc2UgJ3RyZWVtYXBmb2N1cyc6Ci0gICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJl
bnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IC8vIFRPRE8ob2phbik6IFRoZXJlJ3MgcHJvYmFibHkgYSBzaW1wbGVyIHJlZ2V4cCBoZXJlLiBK
dXN0IHRyeWluZyB0byBtYXRjaCBhc2NpaSArIGZvcndhcmQtc2xhc2guCi0gICAgICAgICAgICAv
LyBlLmcuIExheW91dFRlc3RzL2Zvby9iYXIuaHRtbAotICAgICAgICAgICAgcmV0dXJuICh2YWx1
ZS5tYXRjaCgvXihcdytcL1x3KikqLyQpKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZh
bHVlLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoZXJlJ3MgcHJvYmFibHkgYSBzaW1wbGVyIHJlZ2V4cCBoZXJlLiBKdXN0IHRyeWluZyB0byBt
YXRjaCBhc2NpaSArIGZvcndhcmQtc2xhc2guCisgICAgICAgICAgICAgICAgLy8gZS5nLiBMYXlv
dXRUZXN0cy9mb28vYmFyLmh0bWwKKyAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlLm1hdGNo
KC9eKFx3K1wvXHcqKSovJCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQogfQogCiBnX2RlZmF1bHRTdGF0ZVZhbHVlcyA9IHsKLSAgYnVpbGRl
cjogZ19kZWZhdWx0QnVpbGRlck5hbWUKKyAgICBidWlsZGVyOiBnX2RlZmF1bHRCdWlsZGVyTmFt
ZQogfTsKIAotZnVuY3Rpb24gaGFuZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UocGFyYW1zKSB7Ci0g
IGlmICghZ19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQotICAgIGFw
cGVuZEpTT05TY3JpcHRFbGVtZW50Rm9yKGdfY3VycmVudFN0YXRlLmJ1aWxkZXIpOworZnVuY3Rp
b24gaGFuZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UocGFyYW1zKQoreworICAgIGlmICghZ19yZXN1
bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQorICAgICAgICBhcHBlbmRKU09O
U2NyaXB0RWxlbWVudEZvcihnX2N1cnJlbnRTdGF0ZS5idWlsZGVyKTsKIAotICBmb3IgKHZhciBw
YXJhbSBpbiBwYXJhbXMpIHsKLSAgICBpZiAocGFyYW0gIT0gJ3RyZWVtYXBmb2N1cycpIHsKLSAg
ICAgICQoJ21hcCcpLmlubmVySFRNTCA9ICdMb2FkaW5nLi4uJzsKLSAgICAgIHJldHVybiB0cnVl
OworICAgIGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykgeworICAgICAgICBpZiAocGFyYW0gIT0g
J3RyZWVtYXBmb2N1cycpIHsKKyAgICAgICAgICAgICQoJ21hcCcpLmlubmVySFRNTCA9ICdMb2Fk
aW5nLi4uJzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQotICB9
Ci0gIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vIE92ZXJyaWRlcyBo
YW5kbGVSZXNvdXJjZUxvYWRFcnJvciBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KLWZ1bmN0aW9uIGhh
bmRsZVJlc291cmNlTG9hZEVycm9yKGJ1aWxkZXJOYW1lLCBlKSB7Ci0gICQoJ21hcCcpLmlubmVy
SFRNTCA9ICc8c3BhbiBjbGFzcz1lcnJvcj5Db3VsZCBub3QgbG9hZCBkYXRhIGZvciAnICsgYnVp
bGRlck5hbWUgKyAnLiAnICsKLSAgICAgICdFaXRoZXIgdGhlcmUgd2FzIGEgc2VydmVyLXNpZGUg
ZXJyb3Igb3IgJyArIGJ1aWxkZXJOYW1lICsgJyBkb2VzIG5vdCBydW4gJyArCi0gICAgICBnX2N1
cnJlbnRTdGF0ZS50ZXN0VHlwZSArICcuPC9zcGFuPic7CitmdW5jdGlvbiBoYW5kbGVSZXNvdXJj
ZUxvYWRFcnJvcihidWlsZGVyTmFtZSwgZSkKK3sKKyAgICAkKCdtYXAnKS5pbm5lckhUTUwgPSAn
PHNwYW4gY2xhc3M9ZXJyb3I+Q291bGQgbm90IGxvYWQgZGF0YSBmb3IgJyArIGJ1aWxkZXJOYW1l
ICsgJy4gJyArCisgICAgICAgICdFaXRoZXIgdGhlcmUgd2FzIGEgc2VydmVyLXNpZGUgZXJyb3Ig
b3IgJyArIGJ1aWxkZXJOYW1lICsgJyBkb2VzIG5vdCBydW4gJyArCisgICAgICAgIGdfY3VycmVu
dFN0YXRlLnRlc3RUeXBlICsgJy48L3NwYW4+JzsKIH0KIAotZnVuY3Rpb24gZXh0cmFjdE5hbWUo
bm9kZSkgewotICByZXR1cm4gbm9kZS5uYW1lLnNwbGl0KCcgJylbMF07CitmdW5jdGlvbiBleHRy
YWN0TmFtZShub2RlKQoreworICAgIHJldHVybiBub2RlLm5hbWUuc3BsaXQoJyAnKVswXTsKIH0K
IAotZnVuY3Rpb24gZnVsbE5hbWUobm9kZSkgewotICB2YXIgYnVmZmVyID0gW2V4dHJhY3ROYW1l
KG5vZGUpXTsKLSAgd2hpbGUgKG5vZGUucGFyZW50KSB7Ci0gICAgbm9kZSA9IG5vZGUucGFyZW50
OwotICAgIGJ1ZmZlci51bnNoaWZ0KGV4dHJhY3ROYW1lKG5vZGUpKTsKLSAgfQotICByZXR1cm4g
YnVmZmVyLmpvaW4oJy8nKTsKK2Z1bmN0aW9uIGZ1bGxOYW1lKG5vZGUpCit7CisgICAgdmFyIGJ1
ZmZlciA9IFtleHRyYWN0TmFtZShub2RlKV07CisgICAgd2hpbGUgKG5vZGUucGFyZW50KSB7Cisg
ICAgICAgIG5vZGUgPSBub2RlLnBhcmVudDsKKyAgICAgICAgYnVmZmVyLnVuc2hpZnQoZXh0cmFj
dE5hbWUobm9kZSkpOworICAgIH0KKyAgICByZXR1cm4gYnVmZmVyLmpvaW4oJy8nKTsKIH0KIAot
ZnVuY3Rpb24gaGFuZGxlRm9jdXModHJlZSkgewotICB2YXIgY3VycmVudGx5Rm9jdXNlZE5vZGUg
PSAkKCdmb2N1c2VkLWxlYWYnKTsKLSAgaWYgKGN1cnJlbnRseUZvY3VzZWROb2RlKQotICAgIGN1
cnJlbnRseUZvY3VzZWROb2RlLmlkID0gJyc7Ci0KLSAgaWYgKCF0cmVlLmNoaWxkcmVuKQotICAg
IHRyZWUuZG9tLmlkID0gJ2ZvY3VzZWQtbGVhZic7Ci0KLSAgdmFyIG5hbWUgPSBmdWxsTmFtZSh0
cmVlKTsKLQotICBpZiAoIXRyZWUuY2hpbGRyZW4gJiYgIXRyZWUuZXh0cmFEb20gJiYgaXNMYXlv
dXRUZXN0UmVzdWx0cygpKSB7Ci0gICAgdHJlZS5leHRyYURvbSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3ByZScpOwotICAgIHRyZWUuZXh0cmFEb20uY2xhc3NOYW1lID0gJ2V4dHJhLWRvbSc7
Ci0gICAgdHJlZS5kb20uYXBwZW5kQ2hpbGQodHJlZS5leHRyYURvbSk7Ci0KLSAgICByZXF1ZXN0
KFRFU1RfVVJMX0JBU0VfUEFUSCArIG5hbWUsCi0gICAgICBmdW5jdGlvbih4aHIpIHsKLSAgICAg
ICAgdHJlZS5leHRyYURvbS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICBl
LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICB9OwotICAgICAgICB0cmVlLmV4dHJhRG9tLnRl
eHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKLSAgICAgIH0sCi0gICAgICBmdW5jdGlvbiAo
eGhyKSB7Ci0gICAgICAgIHRyZWUuZXh0cmFEb20udGV4dENvbnRlbnQgPSAiQ291bGQgbm90IGxv
YWQgdGVzdC4iCi0gICAgfSk7Ci0gIH0KK2Z1bmN0aW9uIGhhbmRsZUZvY3VzKHRyZWUpCit7Cisg
ICAgdmFyIGN1cnJlbnRseUZvY3VzZWROb2RlID0gJCgnZm9jdXNlZC1sZWFmJyk7CisgICAgaWYg
KGN1cnJlbnRseUZvY3VzZWROb2RlKQorICAgICAgICBjdXJyZW50bHlGb2N1c2VkTm9kZS5pZCA9
ICcnOworCisgICAgaWYgKCF0cmVlLmNoaWxkcmVuKQorICAgICAgICB0cmVlLmRvbS5pZCA9ICdm
b2N1c2VkLWxlYWYnOworCisgICAgdmFyIG5hbWUgPSBmdWxsTmFtZSh0cmVlKTsKKworICAgIGlm
ICghdHJlZS5jaGlsZHJlbiAmJiAhdHJlZS5leHRyYURvbSAmJiBpc0xheW91dFRlc3RSZXN1bHRz
KCkpIHsKKyAgICAgICAgdHJlZS5leHRyYURvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3By
ZScpOworICAgICAgICB0cmVlLmV4dHJhRG9tLmNsYXNzTmFtZSA9ICdleHRyYS1kb20nOworICAg
ICAgICB0cmVlLmRvbS5hcHBlbmRDaGlsZCh0cmVlLmV4dHJhRG9tKTsKKworICAgICAgICByZXF1
ZXN0KFRFU1RfVVJMX0JBU0VfUEFUSCArIG5hbWUsCisgICAgICAgICAgICBmdW5jdGlvbih4aHIp
IHsKKyAgICAgICAgICAgICAgICB0cmVlLmV4dHJhRG9tLm9ubW91c2Vkb3duID0gZnVuY3Rpb24o
ZSkgeworICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgdHJlZS5leHRyYURvbS50ZXh0Q29udGVudCA9IHho
ci5yZXNwb25zZVRleHQ7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKHho
cikgeworICAgICAgICAgICAgICAgIHRyZWUuZXh0cmFEb20udGV4dENvbnRlbnQgPSAiQ291bGQg
bm90IGxvYWQgdGVzdC4iCisgICAgICAgIH0pOworICAgIH0KIAotICAvLyBXZSBkb24ndCB3YW50
IHRoZSBmb2N1cyBjYWxscyBkdXJpbmcgZ2VuZXJhdGVQYWdlIHRvIHRyeSB0byBtb2RpZnkgdGhl
IHF1ZXJ5IHN0YXRlLgotICBpZiAoIWlzR2VuZXJhdGluZ1BhZ2UpCi0gICAgc2V0UXVlcnlQYXJh
bWV0ZXIoJ3RyZWVtYXBmb2N1cycsIG5hbWUpOworICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGZv
Y3VzIGNhbGxzIGR1cmluZyBnZW5lcmF0ZVBhZ2UgdG8gdHJ5IHRvIG1vZGlmeSB0aGUgcXVlcnkg
c3RhdGUuCisgICAgaWYgKCFnX2lzR2VuZXJhdGluZ1BhZ2UpCisgICAgICAgIHNldFF1ZXJ5UGFy
YW1ldGVyKCd0cmVlbWFwZm9jdXMnLCBuYW1lKTsKIH0KIAogcGFyc2VQYXJhbWV0ZXJzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100890</attachid>
            <date>2011-07-14 16:20:41 -0700</date>
            <delta_ts>2011-07-14 23:38:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64561-20110714162040.patch</filename>
            <type>text/plain</type>
            <size>106753</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwMjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NzVjMWM0OWNkMTM3NTAzOWI0YmIxN2EzYmE3ZTQxYWRi
ZjY5NmVkLi45MjFlZTA0OWM2YmNkOTMxZDE5MzY0OTI5MWJhZDhiM2E0NTY3ZWRiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkg
QEAKIDIwMTEtMDctMTQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAorICAgICAg
ICBmaXggcmVtYWluaW5nIHN0eWxlIGlzc3VlcyBpbiB0aGUgc3RhdGljLWRhc2hib2FyZHMgZGly
ZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1s
OgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMu
anM6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9h
cmRfYmFzZS5qczoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanM6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sOgorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5odG1sOgorCisyMDExLTA3
LTE0ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgZml4IGNvZGlu
ZyBzdHlsZSBvZiBkYXNoYm9hcmRfYmFzZS5qcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NDUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1sIGIvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1s
CmluZGV4IGExN2Q5NTQ5MWUyNzkyZDc3YjI0NDM1ZjYyMTYyZTI0Yjc2N2EyNzguLmVkZTYxYjkw
NWMzZTMzZGRjYTA4MTE3MWZlNzc2OTAyYzllYmFjMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbAorKysg
Yi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1
bHRzLmh0bWwKQEAgLTMwLDEzMiArMzAsMTIzIEBAIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiA8aHRtbD4KIAogPGhl
YWQ+Ci0gIDx0aXRsZT5MYXlvdXQgdGVzdCBwYXNzaW5nIHN0YXR1czwvdGl0bGU+Ci0gIDxzdHls
ZT4KLSAgICBoMiB7Ci0gICAgICBtYXJnaW46IDA7Ci0gICAgICBmb250LXNpemU6IDEuMmVtOwot
ICAgIH0KLSAgICBoMyB7Ci0gICAgICBtYXJnaW4tYm90dG9tOiAwOwotICAgICAgZm9udC1zaXpl
OiAxZW07Ci0gICAgfQotICAgIC5jb250YWluZXIgewotICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOwotICAgICAgcGFkZGluZzogM3B4OwotICAgIH0KLSAgICBpbWcgewotICAgICAgYm9yZGVy
OiAxcHggZG90dGVkIGdyZXk7Ci0gICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKLSAgICAgIHBhZGRp
bmc6IDJweDsKLSAgICB9Ci0gIDwvc3R5bGU+Ci0gIDxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+
PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+Ci0g
IDxzY3JpcHQ+Ci0gIC8qKgotICAgKiBAZmlsZW92ZXJ2aWV3IENyZWF0ZXMgYSBkYXNoYm9hcmQg
Zm9yIHRyYWNraW5nIG51bWJlciBvZiBwYXNzZXMvZmFpbHVyZXMKLSAgICogcGVyIHJ1bi4KLSAg
ICoKLSAgICogQ3VycmVudGx5LCBvbmx5IHdlYmtpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCBidXQg
YWRkaW5nIG90aGVyIHRlc3QgdHlwZXMKLSAgICogc2hvdWxkIGp1c3QgcmVxdWlyZSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgKiAgIC1nZW5lcmF0ZSByZXN1bHRzLmpzb24gZm9yIHRoZXNlIHRl
c3RzCi0gICAqICAgLWNvcHkgdGhlbSB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24KLSAgICog
ICAtYWRkIHRoZSBidWlsZGVyIG5hbWUgdG8gdGhlIGxpc3Qgb2YgYnVpbGRlcnMgaW4gZGFzaGJv
YXJkX2Jhc2UuanMuCi0gICAqLwotCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyBNZXRo
b2RzIGFuZCBvYmplY3RzIGZyb20gZGFzaGJvYXJkX2Jhc2UuanMgdG8gb3ZlcnJpZGUuCi0gIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotICBmdW5jdGlvbiBnZW5lcmF0ZVBhZ2UoKSB7Ci0gICAgdmFy
IGh0bWwgPSBnZXRIVE1MRm9yVGVzdFR5cGVTd2l0Y2hlcih0cnVlKSArICc8YnI+JzsKLSAgICBm
b3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKLSAgICAgIGh0bWwgKz0gZ2V0SFRNTEZv
ckJ1aWxkZXIoYnVpbGRlcik7Ci0gICAgfQorPHRpdGxlPkxheW91dCB0ZXN0IHBhc3Npbmcgc3Rh
dHVzPC90aXRsZT4KKzxzdHlsZT4KK2gyIHsKKyAgICBtYXJnaW46IDA7CisgICAgZm9udC1zaXpl
OiAxLjJlbTsKK30KK2gzIHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6ZTog
MWVtOworfQorLmNvbnRhaW5lciB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHBh
ZGRpbmc6IDNweDsKK30KK2ltZyB7CisgICAgYm9yZGVyOiAxcHggZG90dGVkIGdyZXk7CisgICAg
bWFyZ2luLXJpZ2h0OiA1cHg7CisgICAgcGFkZGluZzogMnB4OworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZGFzaGJvYXJkX2Jh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKy8vIEBmaWxlb3ZlcnZpZXcgQ3JlYXRlcyBhIGRh
c2hib2FyZCBmb3IgdHJhY2tpbmcgbnVtYmVyIG9mIHBhc3Nlcy9mYWlsdXJlcyBwZXIgcnVuLgor
Ly8KKy8vIEN1cnJlbnRseSwgb25seSB3ZWJraXQgdGVzdHMgYXJlIHN1cHBvcnRlZCwgYnV0IGFk
ZGluZyBvdGhlciB0ZXN0IHR5cGVzCisvLyBzaG91bGQganVzdCByZXF1aXJlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6CisvLyAgICAgLWdlbmVyYXRlIHJlc3VsdHMuanNvbiBmb3IgdGhlc2UgdGVzdHMK
Ky8vICAgICAtY29weSB0aGVtIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbgorLy8gICAgIC1h
ZGQgdGhlIGJ1aWxkZXIgbmFtZSB0byB0aGUgbGlzdCBvZiBidWlsZGVycyBpbiBkYXNoYm9hcmRf
YmFzZS5qcy4KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBNZXRob2RzIGFuZCBvYmplY3Rz
IGZyb20gZGFzaGJvYXJkX2Jhc2UuanMgdG8gb3ZlcnJpZGUuCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KK2Z1bmN0aW9uIGdlbmVyYXRlUGFnZSgpCit7CisgICAgdmFyIGh0bWwgPSBodG1sRm9yVGVz
dFR5cGVTd2l0Y2hlcih0cnVlKSArICc8YnI+JzsKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGdf
YnVpbGRlcnMpCisgICAgICAgIGh0bWwgKz0gaHRtbEZvckJ1aWxkZXIoYnVpbGRlcik7CiAgICAg
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBodG1sOwotICB9Cit9CiAKLSAgZnVuY3Rpb24gaGFu
ZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpIHsKK2Z1bmN0aW9uIGhhbmRsZVZhbGlk
SGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQorewogICAgIHN3aXRjaChrZXkpIHsKLSAgICAgIGNh
c2UgJ3Jhd1ZhbHVlcyc6CisgICAgY2FzZSAncmF3VmFsdWVzJzoKICAgICAgICAgZ19jdXJyZW50
U3RhdGVba2V5XSA9IHZhbHVlID09ICd0cnVlJzsKLQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgICAgZGVmYXVsdDoKKyAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICB9Cit9CiAKLSAgZ19kZWZhdWx0U3RhdGVWYWx1ZXMgPSB7CitnX2RlZmF1bHRTdGF0ZVZh
bHVlcyA9IHsKICAgICByYXdWYWx1ZXM6IGZhbHNlCi0gIH07Cit9OwogCi0gIGZ1bmN0aW9uIGdl
dEhUTUxGb3JCdWlsZGVyKGJ1aWxkZXIpIHsKK2Z1bmN0aW9uIGh0bWxGb3JCdWlsZGVyKGJ1aWxk
ZXIpCit7CiAgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl07CiAg
ICAgLy8gU29tZSBrZXlzIHdlcmUgYWRkZWQgbGF0ZXIgdGhhbiBvdGhlcnMsIHNvIHRoZXkgZG9u
J3QgaGF2ZSBhcyBtYW55CiAgICAgLy8gYnVpbGRzLiBVc2UgdGhlIHNob3J0ZXN0LgotICAgIC8v
IFRPRE8ob2phbik6IE9uY2UgNTAwIHJ1bnMgaGF2ZSBmaW5pc2hlZCwgd2UgY2FuIGdldCByaWQg
b2YgcGFzc2luZyB0aGlzCisgICAgLy8gRklYTUU6IE9uY2UgNTAwIHJ1bnMgaGF2ZSBmaW5pc2hl
ZCwgd2UgY2FuIGdldCByaWQgb2YgcGFzc2luZyB0aGlzCiAgICAgLy8gYXJvdW5kIGFuZCBqdXN0
IGFzc3VtZSBhbGwga2V5cyBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBidWlsZGVycyBmb3IgYQog
ICAgIC8vIGdpdmVuIGJ1aWxkZXIuCiAgICAgdmFyIG51bUNvbHVtbnMgPSByZXN1bHRzW0FMTF9G
SVhBQkxFX0NPVU5UX0tFWV0ubGVuZ3RoOwogICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9Y29u
dGFpbmVyPjxoMj4nICsgYnVpbGRlciArICc8L2gyPic7CiAKLSAgICBpZiAoZ19jdXJyZW50U3Rh
dGUucmF3VmFsdWVzKSB7Ci0gICAgICBodG1sICs9IGdldFJhd1ZhbHVlc0hUTUwocmVzdWx0cywg
bnVtQ29sdW1ucyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGh0bWwgKz0gJzxhIGhyZWY9InRpbWVs
aW5lX2V4cGxvcmVyLmh0bWwnICsgKGxvY2F0aW9uLmhhc2ggPyBsb2NhdGlvbi5oYXNoICsgJyYn
IDogJyMnKSArICdidWlsZGVyPScgKyBidWlsZGVyICsgJyI+JyArCi0gICAgICAgICAgZ2V0Q2hh
cnRIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpICsgJzwvYT4nOworICAgIGlmIChnX2N1cnJlbnRT
dGF0ZS5yYXdWYWx1ZXMpCisgICAgICAgIGh0bWwgKz0gcmF3VmFsdWVzSFRNTChyZXN1bHRzLCBu
dW1Db2x1bW5zKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaHRtbCArPSAnPGEgaHJlZj0idGltZWxp
bmVfZXhwbG9yZXIuaHRtbCcgKyAobG9jYXRpb24uaGFzaCA/IGxvY2F0aW9uLmhhc2ggKyAnJicg
OiAnIycpICsgJ2J1aWxkZXI9JyArIGJ1aWxkZXIgKyAnIj4nICsKKyAgICAgICAgICAgIGNoYXJ0
SFRNTChyZXN1bHRzLCBudW1Db2x1bW5zKSArICc8L2E+JzsKICAgICB9CiAKICAgICBodG1sICs9
ICc8L2Rpdj4nOwotCiAgICAgcmV0dXJuIGh0bWw7Ci0gIH0KK30KIAotICBmdW5jdGlvbiBnZXRS
YXdWYWx1ZXNIVE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpIHsKLSAgICB2YXIgaHRtbCA9IGdldEhU
TUxGb3JTdW1tYXJ5VGFibGUocmVzdWx0cywgbnVtQ29sdW1ucykgKwotICAgICAgICBnZXRIVE1M
Rm9yVGVzdFR5cGUocmVzdWx0cywgRklYQUJMRV9DT1VOVFNfS0VZLCBGSVhBQkxFX0RFU0NSSVBU
SU9OLAotICAgICAgICAgICAgbnVtQ29sdW1ucyk7CitmdW5jdGlvbiByYXdWYWx1ZXNIVE1MKHJl
c3VsdHMsIG51bUNvbHVtbnMpCit7CisgICAgdmFyIGh0bWwgPSBodG1sRm9yU3VtbWFyeVRhYmxl
KHJlc3VsdHMsIG51bUNvbHVtbnMpICsKKyAgICAgICAgaHRtbEZvclRlc3RUeXBlKHJlc3VsdHMs
IEZJWEFCTEVfQ09VTlRTX0tFWSwgRklYQUJMRV9ERVNDUklQVElPTiwgbnVtQ29sdW1ucyk7CiAg
ICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAgaHRtbCArPQotICAgICAgICAg
IGdldEhUTUxGb3JUZXN0VHlwZShyZXN1bHRzLCBERUZFUlJFRF9DT1VOVFNfS0VZLAotICAgICAg
ICAgICAgICBERUZFUlJFRF9ERVNDUklQVElPTiwgbnVtQ29sdW1ucykgKwotICAgICAgICAgIGdl
dEhUTUxGb3JUZXN0VHlwZShyZXN1bHRzLCBXT05URklYX0NPVU5UU19LRVksIFdPTlRGSVhfREVT
Q1JJUFRJT04sCi0gICAgICAgICAgICAgIG51bUNvbHVtbnMpOworICAgICAgICBodG1sICs9IGh0
bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBERUZFUlJFRF9DT1VOVFNfS0VZLCBERUZFUlJFRF9ERVND
UklQVElPTiwgbnVtQ29sdW1ucykgKworICAgICAgICAgICAgaHRtbEZvclRlc3RUeXBlKHJlc3Vs
dHMsIFdPTlRGSVhfQ09VTlRTX0tFWSwgV09OVEZJWF9ERVNDUklQVElPTiwgbnVtQ29sdW1ucyk7
CiAgICAgfQogICAgIHJldHVybiBodG1sOwotICB9Cit9CiAKLSAgZnVuY3Rpb24gZ2V0Q2hhcnRI
VE1MKHJlc3VsdHMsIG51bUNvbHVtbnMpIHsKK2Z1bmN0aW9uIGNoYXJ0SFRNTChyZXN1bHRzLCBu
dW1Db2x1bW5zKQorewogICAgIHZhciBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID0gaXNUaXBP
ZlRyZWVXZWJLaXRCdWlsZGVyKCk7Ci0gICAgdmFyIHJldmlzaW9uS2V5ID0gc2hvdWxkU2hvd1dl
YktpdFJldmlzaW9ucyA/IFdFQktJVF9SRVZJU0lPTlNfS0VZIDoKLSAgICAgICAgQ0hST01FX1JF
VklTSU9OU19LRVk7CisgICAgdmFyIHJldmlzaW9uS2V5ID0gc2hvdWxkU2hvd1dlYktpdFJldmlz
aW9ucyA/IFdFQktJVF9SRVZJU0lPTlNfS0VZIDogQ0hST01FX1JFVklTSU9OU19LRVk7CiAgICAg
dmFyIHN0YXJ0UmV2aXNpb24gPSByZXN1bHRzW3JldmlzaW9uS2V5XVtudW1Db2x1bW5zIC0gMV07
CiAgICAgdmFyIGVuZFJldmlzaW9uID0gcmVzdWx0c1tyZXZpc2lvbktleV1bMF07Ci0gICAgdmFy
IHJldmlzaW9uTGFiZWwgPSBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zID8gIldlYktpdCBSZXZp
c2lvbiIgOgotICAgICAgICAiQ2hyb21pdW0gUmV2aXNpb24iOworICAgIHZhciByZXZpc2lvbkxh
YmVsID0gc2hvdWxkU2hvd1dlYktpdFJldmlzaW9ucyA/ICJXZWJLaXQgUmV2aXNpb24iIDogIkNo
cm9taXVtIFJldmlzaW9uIjsKIAogICAgIHZhciBmaXhhYmxlID0gcmVzdWx0c1tGSVhBQkxFX0NP
VU5UX0tFWV0uc2xpY2UoMCwgbnVtQ29sdW1ucyk7Ci0gICAgdmFyIGh0bWwgPSBnZXRDaGFydCgi
VG90YWwgZmFpbGluZyIsIHsiIjogZml4YWJsZX0sIHJldmlzaW9uTGFiZWwsCi0gICAgICAgIHN0
YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uKTsKKyAgICB2YXIgaHRtbCA9IGNoYXJ0KCJUb3RhbCBm
YWlsaW5nIiwgeyIiOiBmaXhhYmxlfSwgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5k
UmV2aXNpb24pOwogCiAgICAgdmFyIHZhbHVlcyA9IHZhbHVlc1BlckV4cGVjdGF0aW9uKHJlc3Vs
dHNbRklYQUJMRV9DT1VOVFNfS0VZXSwgbnVtQ29sdW1ucyk7CiAgICAgLy8gRG9uJ3QgY2FyZSBh
Ym91dCBudW1iZXIgb2YgcGFzc2VzIGZvciB0aGUgY2hhcnRzLgogICAgIGRlbGV0ZSh2YWx1ZXNb
J1AnXSk7CiAKLSAgICByZXR1cm4gaHRtbCArIGdldENoYXJ0KCJEZXRhaWxlZCBicmVha2Rvd24i
LCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsCi0gICAgICAgIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlz
aW9uKTsKLSAgfQorICAgIHJldHVybiBodG1sICsgY2hhcnQoIkRldGFpbGVkIGJyZWFrZG93biIs
IHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pOworfQog
Ci0gIHZhciBMQUJFTF9DT0xPUlMgPSBbJ0ZGMDAwMCcsICcwMEZGMDAnLCAnMDAwMEZGJywgJzAw
MDAwMCcsICdGRjZFQjQnLAotICAgICAgJ0ZGQTgxMicsICc5QjMwRkYnLCAnMDBGRkNDJ107Cit2
YXIgTEFCRUxfQ09MT1JTID0gWydGRjAwMDAnLCAnMDBGRjAwJywgJzAwMDBGRicsICcwMDAwMDAn
LCAnRkY2RUI0JywgJ0ZGQTgxMicsICc5QjMwRkYnLCAnMDBGRkNDJ107CiAKLSAgLy8gRklYTUU6
IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGV4Y2x1ZGUgb3V0bGllcnMuIFRoaXMgaXMganVzdCBzbyB3
ZSBleGNsdWRlCi0gIC8vIHJ1bnMgd2hlcmUgZXZlcnkgdGVzdCBmYWlsZWQuCi0gIHZhciBNQVhf
VkFMVUUgPSAxMDAwMDsKKy8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBleGNsdWRlIG91
dGxpZXJzLiBUaGlzIGlzIGp1c3Qgc28gd2UgZXhjbHVkZQorLy8gcnVucyB3aGVyZSBldmVyeSB0
ZXN0IGZhaWxlZC4KK3ZhciBNQVhfVkFMVUUgPSAxMDAwMDsKIAotICBmdW5jdGlvbiBmaWx0ZXJl
ZFZhbHVlcyh2YWx1ZXMsIGRlc2lyZWROdW1iZXJPZlBvaW50cykgeworZnVuY3Rpb24gZmlsdGVy
ZWRWYWx1ZXModmFsdWVzLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpCit7CiAgICAgLy8gRmlsdGVy
IG91dCB2YWx1ZXMgdG8gbWFrZSB0aGUgZ3JhcGggYSBiaXQgbW9yZSByZWFkYWJsZSBhbmQgdG8g
a2VlcCBVUkxzCiAgICAgLy8gZnJvbSBleGNlZWRpbmcgdGhlIGJyb3dzZXJzIG1heCBsZW5ndGgg
cmVzdHJpY3Rpb24uCiAgICAgdmFyIGZpbHRlckFtb3VudCA9IE1hdGguZmxvb3IodmFsdWVzLmxl
bmd0aCAvIGRlc2lyZWROdW1iZXJPZlBvaW50cyk7CkBAIC0xNjMsMjAgKzE1NCwxNSBAQCBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICAgICAgICByZXR1cm4gdmFsdWVzOwogCiAgICAgcmV0dXJuIHZhbHVlcy5maWx0
ZXIoZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7Ci0gICAgICAvLyBJbmNsdWRlIHRo
ZSBtb3N0IHJlY2VudCBhbmQgb2xkZXN0IHZhbHVlcyBhbmQgZXhjbHVkZSBvdXRsaWVycy4KLSAg
ICAgIHJldHVybiAoaW5kZXggJSBmaWx0ZXJBbW91bnQgPT0gMCB8fCBpbmRleCA9PSBhcnJheS5s
ZW5ndGggLSAxKSAmJgotICAgICAgICAgIChhcnJheVtpbmRleF0gPCBNQVhfVkFMVUUgJiYgYXJy
YXlbaW5kZXhdICE9IDApOworICAgICAgICAvLyBJbmNsdWRlIHRoZSBtb3N0IHJlY2VudCBhbmQg
b2xkZXN0IHZhbHVlcyBhbmQgZXhjbHVkZSBvdXRsaWVycy4KKyAgICAgICAgcmV0dXJuIChpbmRl
eCAlIGZpbHRlckFtb3VudCA9PSAwIHx8IGluZGV4ID09IGFycmF5Lmxlbmd0aCAtIDEpICYmIChh
cnJheVtpbmRleF0gPCBNQVhfVkFMVUUgJiYgYXJyYXlbaW5kZXhdICE9IDApOwogICAgIH0pOwot
ICB9Cit9CiAKLSAgZnVuY3Rpb24gY2hhcnRVcmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJl
bCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sCi0gICAgICBkZXNpcmVkTnVtYmVyT2ZQb2lu
dHMpIHsKK2Z1bmN0aW9uIGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFiZWwsIHN0
YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpIHsKICAgICB2
YXIgbWF4VmFsdWUgPSAwOwotICAgIGZvciAodmFyIGV4cGVjdGF0aW9uIGluIHZhbHVlcykgewot
ICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwKLSAgICAgICAgICBNYXRoLm1heC5h
cHBseShudWxsLCBmaWx0ZXJlZFZhbHVlcyh2YWx1ZXNbZXhwZWN0YXRpb25dLAotICAgICAgICAg
ICAgICBkZXNpcmVkTnVtYmVyT2ZQb2ludHMpKSk7Ci0gICAgfQorICAgIGZvciAodmFyIGV4cGVj
dGF0aW9uIGluIHZhbHVlcykKKyAgICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwg
TWF0aC5tYXguYXBwbHkobnVsbCwgZmlsdGVyZWRWYWx1ZXModmFsdWVzW2V4cGVjdGF0aW9uXSwg
ZGVzaXJlZE51bWJlck9mUG9pbnRzKSkpOwogCiAgICAgdmFyIGNoYXJ0RGF0YSA9ICcnOwogICAg
IHZhciBsYWJlbHMgPSAnJzsKQEAgLTE4NCwxMzkgKzE3MCwxMjkgQEAgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
ICAgIHZhciBmaXJzdCA9IHRydWU7CiAgICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVz
KSB7Ci0gICAgICBjaGFydERhdGEgKz0gKGZpcnN0ID8gJ2U6JyA6ICcsJykgKwotICAgICAgICAg
IGV4dGVuZGVkRW5jb2RlKGZpbHRlcmVkVmFsdWVzKHZhbHVlc1tleHBlY3RhdGlvbl0sCi0gICAg
ICAgICAgICAgIGRlc2lyZWROdW1iZXJPZlBvaW50cykucmV2ZXJzZSgpLCBtYXhWYWx1ZSk7Ci0K
LSAgICAgIGlmIChleHBlY3RhdGlvbikgewotICAgICAgICBudW1MYWJlbHMrKzsKLSAgICAgICAg
bGFiZWxzICs9IChmaXJzdCA/ICcnIDogJ3wnKSArIGdldEV4cGVjdGF0aW9uc01hcCgpW2V4cGVj
dGF0aW9uXTsKLSAgICAgIH0KLSAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgIGNoYXJ0RGF0
YSArPSAoZmlyc3QgPyAnZTonIDogJywnKSArIGV4dGVuZGVkRW5jb2RlKGZpbHRlcmVkVmFsdWVz
KHZhbHVlc1tleHBlY3RhdGlvbl0sIGRlc2lyZWROdW1iZXJPZlBvaW50cykucmV2ZXJzZSgpLCBt
YXhWYWx1ZSk7CisKKyAgICAgICAgaWYgKGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICBudW1M
YWJlbHMrKzsKKyAgICAgICAgICAgIGxhYmVscyArPSAoZmlyc3QgPyAnJyA6ICd8JykgKyBleHBl
Y3RhdGlvbnNNYXAoKVtleHBlY3RhdGlvbl07CisgICAgICAgIH0KKyAgICAgICAgZmlyc3QgPSBm
YWxzZTsKICAgICB9CiAKICAgICB2YXIgdXJsID0gImh0dHA6Ly9jaGFydC5hcGlzLmdvb2dsZS5j
b20vY2hhcnQ/Y2h0PWxjJmNocz02MDB4NDAwJmNoZD0iICsKLSAgICAgICAgY2hhcnREYXRhICsg
IiZjaGc9MTUsMTUsMSwzJmNoeHQ9eCx4LHkmY2h4bD0xOnx8IiArIHJldmlzaW9uTGFiZWwgKwot
ICAgICAgICAifCZjaHhyPTAsIiArIHN0YXJ0UmV2aXNpb24gKyAiLCIgKyBlbmRSZXZpc2lvbiAr
ICJ8MiwwLCIgKyBtYXhWYWx1ZSArCi0gICAgICAgICImY2h0dD0iICsgdGl0bGU7CisgICAgICAg
ICAgICBjaGFydERhdGEgKyAiJmNoZz0xNSwxNSwxLDMmY2h4dD14LHgseSZjaHhsPTE6fHwiICsg
cmV2aXNpb25MYWJlbCArCisgICAgICAgICAgICAifCZjaHhyPTAsIiArIHN0YXJ0UmV2aXNpb24g
KyAiLCIgKyBlbmRSZXZpc2lvbiArICJ8MiwwLCIgKyBtYXhWYWx1ZSArICImY2h0dD0iICsgdGl0
bGU7CiAKIAotICAgIGlmIChsYWJlbHMpIHsKLSAgICAgIHVybCArPSAiJmNoZGw9IiArIGxhYmVs
cyArICImY2hjbz0iICsKLSAgICAgICAgICBMQUJFTF9DT0xPUlMuc2xpY2UoMCwgbnVtTGFiZWxz
KS5qb2luKCcsJyk7Ci0gICAgfQorICAgIGlmIChsYWJlbHMpCisgICAgICAgIHVybCArPSAiJmNo
ZGw9IiArIGxhYmVscyArICImY2hjbz0iICsgTEFCRUxfQ09MT1JTLnNsaWNlKDAsIG51bUxhYmVs
cykuam9pbignLCcpOwogICAgIHJldHVybiB1cmw7Ci0gIH0KK30KIAotICBmdW5jdGlvbiBnZXRD
aGFydCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBlbmRSZXZp
c2lvbikgeworZnVuY3Rpb24gY2hhcnQodGl0bGUsIHZhbHVlcywgcmV2aXNpb25MYWJlbCwgc3Rh
cnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pCit7CiAgICAgdmFyIGRlc2lyZWROdW1iZXJPZlBvaW50
cyA9IDQwMDsKLSAgICB2YXIgdXJsID0gY2hhcnRVcmwodGl0bGUsIHZhbHVlcywgcmV2aXNpb25M
YWJlbCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sCi0gICAgICAgIGRlc2lyZWROdW1iZXJP
ZlBvaW50cyk7CisgICAgdmFyIHVybCA9IGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9u
TGFiZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBkZXNpcmVkTnVtYmVyT2ZQb2ludHMp
OwogCiAgICAgd2hpbGUgKHVybC5sZW5ndGggPj0gMjA0OCkgewotICAgICAgLy8gRGVjcmVhc2Ug
dGhlIGRlc2lyZWQgbnVtYmVyIG9mIHBvaW50cyBncmFkdWFsbHkgdW50aWwgd2UgZ2V0IGEgVVJM
IHRoYXQKLSAgICAgIC8vIGRvZXNuJ3QgZXhjZWVkIGNoYXJ0c2VydmVyJ3MgbWF4IFVSTCBsZW5n
dGguCi0gICAgICBkZXNpcmVkTnVtYmVyT2ZQb2ludHMgPSAzIC8gNCAqIGRlc2lyZWROdW1iZXJP
ZlBvaW50czsKLSAgICAgIHVybCA9IGNoYXJ0VXJsKHRpdGxlLCB2YWx1ZXMsIHJldmlzaW9uTGFi
ZWwsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLAotICAgICAgICAgIGRlc2lyZWROdW1iZXJP
ZlBvaW50cyk7CisgICAgICAgIC8vIERlY3JlYXNlIHRoZSBkZXNpcmVkIG51bWJlciBvZiBwb2lu
dHMgZ3JhZHVhbGx5IHVudGlsIHdlIGdldCBhIFVSTCB0aGF0CisgICAgICAgIC8vIGRvZXNuJ3Qg
ZXhjZWVkIGNoYXJ0c2VydmVyJ3MgbWF4IFVSTCBsZW5ndGguCisgICAgICAgIGRlc2lyZWROdW1i
ZXJPZlBvaW50cyA9IDMgLyA0ICogZGVzaXJlZE51bWJlck9mUG9pbnRzOworICAgICAgICB1cmwg
PSBjaGFydFVybCh0aXRsZSwgdmFsdWVzLCByZXZpc2lvbkxhYmVsLCBzdGFydFJldmlzaW9uLCBl
bmRSZXZpc2lvbiwgZGVzaXJlZE51bWJlck9mUG9pbnRzKTsKICAgICB9CiAKICAgICByZXR1cm4g
JzxpbWcgc3JjPSInICsgdXJsICsgJyI+JzsKLSAgfQorfQogCi0gIGZ1bmN0aW9uIGdldEhUTUxG
b3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucykgewotICAgIHJldHVybiBnZXRIVE1M
Rm9yVGFibGVSb3coJ1dlYktpdCBSZXZpc2lvbicsCi0gICAgICAgICAgICByZXN1bHRzW1dFQktJ
VF9SRVZJU0lPTlNfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSkgKwotICAgICAgICBnZXRIVE1M
Rm9yVGFibGVSb3coJ0Nocm9tZSBSZXZpc2lvbicsCi0gICAgICAgICAgICByZXN1bHRzW0NIUk9N
RV9SRVZJU0lPTlNfS0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSk7Ci0gIH0KK2Z1bmN0aW9uIGh0
bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucykKK3sKKyAgICByZXR1cm4gaHRt
bEZvclRhYmxlUm93KCdXZWJLaXQgUmV2aXNpb24nLCByZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNf
S0VZXS5zbGljZSgwLCBudW1Db2x1bW5zKSkgKworICAgICAgICBodG1sRm9yVGFibGVSb3coJ0No
cm9tZSBSZXZpc2lvbicsIHJlc3VsdHNbQ0hST01FX1JFVklTSU9OU19LRVldLnNsaWNlKDAsIG51
bUNvbHVtbnMpKTsKK30KIAotICBmdW5jdGlvbiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24s
IGh0bWwpIHsKLSAgICByZXR1cm4gJzxoMz4nICsgZGVzY3JpcHRpb24gKyAnPC9oMz48dGFibGU+
PHRib2R5PicgKyBodG1sICsKLSAgICAgICAgJzwvdGJvZHk+PC90YWJsZT4nOwotICB9CitmdW5j
dGlvbiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0bWwpCit7CisgICAgcmV0dXJuICc8
aDM+JyArIGRlc2NyaXB0aW9uICsgJzwvaDM+PHRhYmxlPjx0Ym9keT4nICsgaHRtbCArICc8L3Ri
b2R5PjwvdGFibGU+JzsKK30KIAotICBmdW5jdGlvbiBnZXRIVE1MRm9yU3VtbWFyeVRhYmxlKHJl
c3VsdHMsIG51bUNvbHVtbnMpIHsKK2Z1bmN0aW9uIGh0bWxGb3JTdW1tYXJ5VGFibGUocmVzdWx0
cywgbnVtQ29sdW1ucykKK3sKICAgICB2YXIgcGVyY2VudCA9IFtdOwogICAgIHZhciBmaXhhYmxl
ID0gcmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV0uc2xpY2UoMCwgbnVtQ29sdW1ucyk7CiAgICAg
dmFyIGFsbEZpeGFibGUgPSByZXN1bHRzW0FMTF9GSVhBQkxFX0NPVU5UX0tFWV0uc2xpY2UoMCwg
bnVtQ29sdW1ucyk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db2x1bW5zOyBpKyspIHsK
LSAgICAgIHZhciBwZXJjZW50YWdlID0gMTAwICogKGFsbEZpeGFibGVbaV0gLSBmaXhhYmxlW2ld
KSAvIGFsbEZpeGFibGVbaV07Ci0gICAgICAvLyBSb3VuZCB0byB0aGUgbmVhcmVzdCB0ZW50aCBv
ZiBhIHBlcmNlbnQuCi0gICAgICBwZXJjZW50LnB1c2goTWF0aC5yb3VuZChwZXJjZW50YWdlICog
MTApIC8gMTAgKyAnJScpOworICAgICAgICB2YXIgcGVyY2VudGFnZSA9IDEwMCAqIChhbGxGaXhh
YmxlW2ldIC0gZml4YWJsZVtpXSkgLyBhbGxGaXhhYmxlW2ldOworICAgICAgICAvLyBSb3VuZCB0
byB0aGUgbmVhcmVzdCB0ZW50aCBvZiBhIHBlcmNlbnQuCisgICAgICAgIHBlcmNlbnQucHVzaChN
YXRoLnJvdW5kKHBlcmNlbnRhZ2UgKiAxMCkgLyAxMCArICclJyk7CiAgICAgfQotICAgIHZhciBo
dG1sID0gZ2V0SFRNTEZvclJldmlzaW9uUm93cyhyZXN1bHRzLCBudW1Db2x1bW5zKSArCi0gICAg
ICAgIGdldEhUTUxGb3JUYWJsZVJvdygnUGVyY2VudCBwYXNzZWQnLCBwZXJjZW50KSArCi0gICAg
ICAgIGdldEhUTUxGb3JUYWJsZVJvdygnRmFpbHVyZXMgKGRlZHVwZWQpJywgZml4YWJsZSkgKwot
ICAgICAgICBnZXRIVE1MRm9yVGFibGVSb3coJ0ZpeGFibGUgVGVzdHMnLCBhbGxGaXhhYmxlKTsK
KyAgICB2YXIgaHRtbCA9IGh0bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVtQ29sdW1ucykg
KworICAgICAgICBodG1sRm9yVGFibGVSb3coJ1BlcmNlbnQgcGFzc2VkJywgcGVyY2VudCkgKwor
ICAgICAgICBodG1sRm9yVGFibGVSb3coJ0ZhaWx1cmVzIChkZWR1cGVkKScsIGZpeGFibGUpICsK
KyAgICAgICAgaHRtbEZvclRhYmxlUm93KCdGaXhhYmxlIFRlc3RzJywgYWxsRml4YWJsZSk7CiAg
ICAgcmV0dXJuIHdyYXBIVE1MSW5UYWJsZSgnU3VtbWFyeScsIGh0bWwpOwotICB9Cit9CiAKLSAg
ZnVuY3Rpb24gdmFsdWVzUGVyRXhwZWN0YXRpb24oY291bnRzLCBudW1Db2x1bW5zKSB7CitmdW5j
dGlvbiB2YWx1ZXNQZXJFeHBlY3RhdGlvbihjb3VudHMsIG51bUNvbHVtbnMpCit7CiAgICAgdmFy
IHZhbHVlcyA9IHt9OwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsrKSB7
Ci0gICAgICBmb3IgKHZhciBleHBlY3RhdGlvbiBpbiBnZXRFeHBlY3RhdGlvbnNNYXAoKSkgewot
ICAgICAgICBpZiAoZXhwZWN0YXRpb24gaW4gY291bnRzW2ldKSB7Ci0gICAgICAgICAgdmFyIGNv
dW50ID0gY291bnRzW2ldW2V4cGVjdGF0aW9uXTsKLQotICAgICAgICAgIGlmICghdmFsdWVzW2V4
cGVjdGF0aW9uXSkKLSAgICAgICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0gPSBbXTsKLQotICAg
ICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0ucHVzaChjb3VudCk7CisgICAgICAgIGZvciAodmFy
IGV4cGVjdGF0aW9uIGluIGV4cGVjdGF0aW9uc01hcCgpKSB7CisgICAgICAgICAgICBpZiAoZXhw
ZWN0YXRpb24gaW4gY291bnRzW2ldKSB7CisgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gY291
bnRzW2ldW2V4cGVjdGF0aW9uXTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlc1tleHBlY3Rh
dGlvbl0pCisgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tleHBlY3RhdGlvbl0gPSBbXTsKKyAg
ICAgICAgICAgICAgICB2YWx1ZXNbZXhwZWN0YXRpb25dLnB1c2goY291bnQpOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICB9CiAgICAgfQogICAgIHJldHVybiB2YWx1ZXM7Ci0gIH0K
K30KIAotICBmdW5jdGlvbiBnZXRIVE1MRm9yVGVzdFR5cGUocmVzdWx0cywga2V5LCBkZXNjcmlw
dGlvbiwgbnVtQ29sdW1ucykgeworZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlKHJlc3VsdHMsIGtl
eSwgZGVzY3JpcHRpb24sIG51bUNvbHVtbnMpCit7CiAgICAgdmFyIGNvdW50cyA9IHJlc3VsdHNb
a2V5XTsKLSAgICB2YXIgaHRtbCA9IGdldEhUTUxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywgbnVt
Q29sdW1ucyk7Ci0KKyAgICB2YXIgaHRtbCA9IGh0bWxGb3JSZXZpc2lvblJvd3MocmVzdWx0cywg
bnVtQ29sdW1ucyk7CiAgICAgdmFyIHZhbHVlcyA9IHZhbHVlc1BlckV4cGVjdGF0aW9uKGNvdW50
cywgbnVtQ29sdW1ucyk7Ci0gICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKSB7Ci0g
ICAgICBodG1sICs9IGdldEhUTUxGb3JUYWJsZVJvdyhnZXRFeHBlY3RhdGlvbnNNYXAoKVtleHBl
Y3RhdGlvbl0sCi0gICAgICAgICAgdmFsdWVzW2V4cGVjdGF0aW9uXSk7Ci0gICAgfQotCisgICAg
Zm9yICh2YXIgZXhwZWN0YXRpb24gaW4gdmFsdWVzKQorICAgICAgICBodG1sICs9IGh0bWxGb3JU
YWJsZVJvdyhleHBlY3RhdGlvbnNNYXAoKVtleHBlY3RhdGlvbl0sIHZhbHVlc1tleHBlY3RhdGlv
bl0pOwogICAgIHJldHVybiB3cmFwSFRNTEluVGFibGUoZGVzY3JpcHRpb24sIGh0bWwpOwotICB9
Cit9CiAKLSAgZnVuY3Rpb24gZ2V0SFRNTEZvclRhYmxlUm93KGNvbHVtbk5hbWUsIHZhbHVlcykg
ewotICAgIHJldHVybiAnPHRyPjx0ZD4nICsgY29sdW1uTmFtZSArICc8L3RkPjx0ZD4nICsgdmFs
dWVzLmpvaW4oJzwvdGQ+PHRkPicpICsKLSAgICAgICAgJzwvdGQ+PC90cj4nOwotICB9CitmdW5j
dGlvbiBodG1sRm9yVGFibGVSb3coY29sdW1uTmFtZSwgdmFsdWVzKQoreworICAgIHJldHVybiAn
PHRyPjx0ZD4nICsgY29sdW1uTmFtZSArICc8L3RkPjx0ZD4nICsgdmFsdWVzLmpvaW4oJzwvdGQ+
PHRkPicpICsgJzwvdGQ+PC90cj4nOworfQogCi0gIC8vIFRha2VuIGZyb20gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9hcGlzL2NoYXJ0L2RvY3MvZGF0YV9mb3JtYXRzLmh0bWwuCi0gIGZ1bmN0aW9u
IGV4dGVuZGVkRW5jb2RlKGFyclZhbHMsIG1heFZhbCkgewotICAgIHZhciBtYXAgPQotICAgICAg
J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIz
NDU2Nzg5LS4nOworLy8gVGFrZW4gZnJvbSBodHRwOi8vY29kZS5nb29nbGUuY29tL2FwaXMvY2hh
cnQvZG9jcy9kYXRhX2Zvcm1hdHMuaHRtbC4KK2Z1bmN0aW9uIGV4dGVuZGVkRW5jb2RlKGFyclZh
bHMsIG1heFZhbCkKK3sKKyAgICB2YXIgbWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LS4nOwogICAgIHZhciBtYXBMZW5n
dGggPSBtYXAubGVuZ3RoOwogICAgIHZhciBtYXBMZW5ndGhTcXVhcmVkID0gbWFwTGVuZ3RoICog
bWFwTGVuZ3RoOwogCiAgICAgdmFyIGNoYXJ0RGF0YSA9ICcnOwogCi0gICAgZm9yKHZhciBpID0g
MCwgbGVuID0gYXJyVmFscy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAgLy8gSW4gY2Fz
ZSB0aGUgYXJyYXkgdmFscyB3ZXJlIHRyYW5zbGF0ZWQgdG8gc3RyaW5ncy4KLSAgICAgIHZhciBu
dW1lcmljVmFsID0gbmV3IE51bWJlcihhcnJWYWxzW2ldKTsKLSAgICAgIC8vIFNjYWxlIHRoZSB2
YWx1ZSB0byBtYXhWYWwuCi0gICAgICB2YXIgc2NhbGVkVmFsID0gTWF0aC5mbG9vcihtYXBMZW5n
dGhTcXVhcmVkICogbnVtZXJpY1ZhbCAvIG1heFZhbCk7Ci0KLSAgICAgIGlmKHNjYWxlZFZhbCA+
IG1hcExlbmd0aFNxdWFyZWQgLSAxKQotICAgICAgICBjaGFydERhdGEgKz0gIi4uIjsKLSAgICAg
IGVsc2UgaWYgKHNjYWxlZFZhbCA8IDApCi0gICAgICAgIGNoYXJ0RGF0YSArPSAnX18nOwotICAg
ICAgZWxzZSB7Ci0gICAgICAgIC8vIENhbGN1bGF0ZSBmaXJzdCBhbmQgc2Vjb25kIGRpZ2l0cyBh
bmQgYWRkIHRoZW0gdG8gdGhlIG91dHB1dC4KLSAgICAgICAgdmFyIHF1b3RpZW50ID0gTWF0aC5m
bG9vcihzY2FsZWRWYWwgLyBtYXBMZW5ndGgpOwotICAgICAgICB2YXIgcmVtYWluZGVyID0gc2Nh
bGVkVmFsIC0gbWFwTGVuZ3RoICogcXVvdGllbnQ7Ci0gICAgICAgIGNoYXJ0RGF0YSArPSBtYXAu
Y2hhckF0KHF1b3RpZW50KSArIG1hcC5jaGFyQXQocmVtYWluZGVyKTsKLSAgICAgIH0KKyAgICBm
b3IgKHZhciBpID0gMCwgbGVuID0gYXJyVmFscy5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworICAg
ICAgICAvLyBJbiBjYXNlIHRoZSBhcnJheSB2YWxzIHdlcmUgdHJhbnNsYXRlZCB0byBzdHJpbmdz
LgorICAgICAgICB2YXIgbnVtZXJpY1ZhbCA9IG5ldyBOdW1iZXIoYXJyVmFsc1tpXSk7CisgICAg
ICAgIC8vIFNjYWxlIHRoZSB2YWx1ZSB0byBtYXhWYWwuCisgICAgICAgIHZhciBzY2FsZWRWYWwg
PSBNYXRoLmZsb29yKG1hcExlbmd0aFNxdWFyZWQgKiBudW1lcmljVmFsIC8gbWF4VmFsKTsKKwor
ICAgICAgICBpZihzY2FsZWRWYWwgPiBtYXBMZW5ndGhTcXVhcmVkIC0gMSkKKyAgICAgICAgICAg
IGNoYXJ0RGF0YSArPSAiLi4iOworICAgICAgICBlbHNlIGlmIChzY2FsZWRWYWwgPCAwKQorICAg
ICAgICAgICAgY2hhcnREYXRhICs9ICdfXyc7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Ly8gQ2FsY3VsYXRlIGZpcnN0IGFuZCBzZWNvbmQgZGlnaXRzIGFuZCBhZGQgdGhlbSB0byB0aGUg
b3V0cHV0LgorICAgICAgICAgICAgdmFyIHF1b3RpZW50ID0gTWF0aC5mbG9vcihzY2FsZWRWYWwg
LyBtYXBMZW5ndGgpOworICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHNjYWxlZFZhbCAtIG1h
cExlbmd0aCAqIHF1b3RpZW50OworICAgICAgICAgICAgY2hhcnREYXRhICs9IG1hcC5jaGFyQXQo
cXVvdGllbnQpICsgbWFwLmNoYXJBdChyZW1haW5kZXIpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgcmV0dXJuIGNoYXJ0RGF0YTsKLSAgfQotICA8L3NjcmlwdD4KLSAgPC9oZWFkPgotICA8Ym9k
eT48L2JvZHk+Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PjwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVp
bGRlcnMuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxk
ZXJzLmpzCmluZGV4IDQ1NjE5ZjI3ODI1NzE5YTI1MDlhZDQwZWJkYmQ0ZDAyZjg0MzM0ODguLmU4
YmNmODRiYTk5MzIxYTg2YmIzNmFiY2JhYzJiMjUzOTE3Yjk0NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKKysrIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwpAQCAtMSw4
MSArMSw3NSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLS8qKgotICogQGZpbGVvdmVydmlldyBGaWxlIHRoYXQgbGlzdHMgYnVpbGRlcnMs
IHRoZWlyIG1hc3RlcnMsIGFuZCBsb2dpY2FsIGdyb3VwaW5ncwotICogb2YgdGhlbS4KLSAqLwot
Ci1mdW5jdGlvbiBCdWlsZGVyTWFzdGVyKG5hbWUsIGJhc2VQYXRoKSB7Ci0gIHRoaXMubmFtZSA9
IG5hbWU7Ci0gIHRoaXMuYmFzZVBhdGggPSBiYXNlUGF0aDsKKy8vIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBAZmlsZW92ZXJ2aWV3IEZpbGUgdGhhdCBsaXN0cyBi
dWlsZGVycywgdGhlaXIgbWFzdGVycywgYW5kIGxvZ2ljYWwgZ3JvdXBpbmdzCisvLyBvZiB0aGVt
LgorCitmdW5jdGlvbiBCdWlsZGVyTWFzdGVyKG5hbWUsIGJhc2VQYXRoKQoreworICAgIHRoaXMu
bmFtZSA9IG5hbWU7CisgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoOwogfQogCi1CdWlsZGVy
TWFzdGVyLnByb3RvdHlwZS5nZXRMb2dQYXRoID0gZnVuY3Rpb24oYnVpbGRlciwgYnVpbGROdW1i
ZXIpIHsKLSAgcmV0dXJuIHRoaXMuYmFzZVBhdGggKyBidWlsZGVyICsgJy9idWlsZHMvJyArIGJ1
aWxkTnVtYmVyOworQnVpbGRlck1hc3Rlci5wcm90b3R5cGUuZ2V0TG9nUGF0aCA9IGZ1bmN0aW9u
KGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKQoreworICAgIHJldHVybiB0aGlzLmJhc2VQYXRoICsgYnVp
bGRlciArICcvYnVpbGRzLycgKyBidWlsZE51bWJlcjsKIH07CiAKLUNIUk9NSVVNX0JVSUxERVJf
TUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIoCi0gICAgJ0Nocm9taXVtJywgJ2h0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9idWlsZGVycy8nKTsKLUNIUk9NSVVNX1dFQktJVF9C
VUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFzdGVyKAotICAgICdDaHJvbWl1bVdlYmtpdCcs
ICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2J1aWxkZXJzLycp
OwotQ0hST01JVU1fR1BVX0JVSUxERVJfTUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIoCi0gICAg
J0Nocm9taXVtR1BVJywgJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS5ncHUv
YnVpbGRlcnMvJyk7Ci1XRUJLSVRfQlVJTERFUl9NQVNURVIgPSBuZXcgQnVpbGRlck1hc3RlcigK
LSAgICAnd2Via2l0Lm9yZycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy8nKTsK
LQotZnVuY3Rpb24gQnVpbGRlckdyb3VwKGlzVG9UV2ViS2l0LCBidWlsZGVycykgewotICB0aGlz
LmlzVG9UV2ViS2l0ID0gaXNUb1RXZWJLaXQ7Ci0gIC8vIE1hcCBvZiBidWlsZGVyTmFtZSAodGhl
IG5hbWUgc2hvd24gaW4gdGhlIHdhdGVyZmFsbCkgdG8gYnVpbGRlclBhdGggKHRoZQotICAvLyBw
YXRoIHVzZWQgaW4gdGhlIGJ1aWxkZXIncyBVUkwpCi0gIHRoaXMuYnVpbGRlcnMgPSB7fTsKLSAg
YnVpbGRlcnMuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKLSAgICB2YXIgYnVp
bGRlciA9IGJ1aWxkZXJBbmRGbGFnc1swXTsKLSAgICB2YXIgZmxhZ3MgPSBidWlsZGVyQW5kRmxh
Z3NbMV07Ci0KLSAgICB0aGlzLmJ1aWxkZXJzW2J1aWxkZXJdID0gYnVpbGRlci5yZXBsYWNlKC9b
IC4oKV0vZywgJ18nKTsKLSAgICBpZiAoZmxhZ3MgJiBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlM
REVSKSB7Ci0gICAgICB0aGlzLmRlZmF1bHRCdWlsZGVyID0gYnVpbGRlcjsKLSAgICB9Ci0gICAg
aWYgKGZsYWdzICYgQnVpbGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSKSB7Ci0gICAgICB0
aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXIgPSBidWlsZGVyOwotICAgIH0KLSAgfSwgdGhpcyk7CitD
SFJPTUlVTV9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFzdGVyKCdDaHJvbWl1bScsICdo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vYnVpbGRlcnMvJyk7CitDSFJPTUlV
TV9XRUJLSVRfQlVJTERFUl9NQVNURVIgPSBuZXcgQnVpbGRlck1hc3RlcignQ2hyb21pdW1XZWJr
aXQnLCAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC9idWlsZGVy
cy8nKTsKK0NIUk9NSVVNX0dQVV9CVUlMREVSX01BU1RFUiA9IG5ldyBCdWlsZGVyTWFzdGVyKCdD
aHJvbWl1bUdQVScsICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0uZ3B1L2J1
aWxkZXJzLycpOworV0VCS0lUX0JVSUxERVJfTUFTVEVSID0gbmV3IEJ1aWxkZXJNYXN0ZXIoJ3dl
YmtpdC5vcmcnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvJyk7CisKK2Z1bmN0
aW9uIEJ1aWxkZXJHcm91cChpc1RvVFdlYktpdCwgYnVpbGRlcnMpCit7CisgICAgdGhpcy5pc1Rv
VFdlYktpdCA9IGlzVG9UV2ViS2l0OworICAgIC8vIE1hcCBvZiBidWlsZGVyTmFtZSAodGhlIG5h
bWUgc2hvd24gaW4gdGhlIHdhdGVyZmFsbCkgdG8gYnVpbGRlclBhdGggKHRoZQorICAgIC8vIHBh
dGggdXNlZCBpbiB0aGUgYnVpbGRlcidzIFVSTCkKKyAgICB0aGlzLmJ1aWxkZXJzID0ge307Cisg
ICAgYnVpbGRlcnMuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKKyAgICAgICAg
dmFyIGJ1aWxkZXIgPSBidWlsZGVyQW5kRmxhZ3NbMF07CisgICAgICAgIHZhciBmbGFncyA9IGJ1
aWxkZXJBbmRGbGFnc1sxXTsKKworICAgICAgICB0aGlzLmJ1aWxkZXJzW2J1aWxkZXJdID0gYnVp
bGRlci5yZXBsYWNlKC9bIC4oKV0vZywgJ18nKTsKKyAgICAgICAgaWYgKGZsYWdzICYgQnVpbGRl
ckdyb3VwLkRFRkFVTFRfQlVJTERFUikKKyAgICAgICAgICAgIHRoaXMuZGVmYXVsdEJ1aWxkZXIg
PSBidWlsZGVyOworICAgICAgICBpZiAoZmxhZ3MgJiBCdWlsZGVyR3JvdXAuRVhQRUNUQVRJT05T
X0JVSUxERVIpCisgICAgICAgICAgICB0aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXIgPSBidWlsZGVy
OworICAgIH0sIHRoaXMpOwogfQogCi1CdWlsZGVyR3JvdXAucHJvdG90eXBlLnNldHVwID0gZnVu
Y3Rpb24oKSB7Ci0gIC8vIFRPRE8obWloYWlwKTogaW5zdGVhZCBvZiBjb3B5aW5nIHRoZXNlIHRv
IGdsb2JhbHMsIGl0IHdvdWxkIGJlIGJldHRlciBpZgotICAvLyB0aGUgcmVzdCBvZiB0aGUgY29k
ZSByZWFkIHRoaW5ncyBmcm9tIHRoZSBCdWlsZGVyR3JvdXAgaW5zdGFuY2UgZGlyZWN0bHkKLSAg
Z19kZWZhdWx0QnVpbGRlck5hbWUgPSB0aGlzLmRlZmF1bHRCdWlsZGVyOwotICBnX2V4cGVjdGF0
aW9uc0J1aWxkZXIgPSB0aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXI7Ci0gIGdfYnVpbGRlcnMgPSB0
aGlzLmJ1aWxkZXJzOworQnVpbGRlckdyb3VwLnByb3RvdHlwZS5zZXR1cCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBjb3B5aW5nIHRoZXNlIHRvIGdsb2JhbHMsIGl0
IHdvdWxkIGJlIGJldHRlciBpZgorICAgIC8vIHRoZSByZXN0IG9mIHRoZSBjb2RlIHJlYWQgdGhp
bmdzIGZyb20gdGhlIEJ1aWxkZXJHcm91cCBpbnN0YW5jZSBkaXJlY3RseQorICAgIGdfZGVmYXVs
dEJ1aWxkZXJOYW1lID0gdGhpcy5kZWZhdWx0QnVpbGRlcjsKKyAgICBnX2V4cGVjdGF0aW9uc0J1
aWxkZXIgPSB0aGlzLmV4cGVjdGF0aW9uc0J1aWxkZXI7CisgICAgZ19idWlsZGVycyA9IHRoaXMu
YnVpbGRlcnM7CiB9OwogCiBCdWlsZGVyR3JvdXAuVE9UX1dFQktJVCA9IHRydWU7CkBAIC04Nywx
NjIgKzgxLDE2MyBAQCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSID0gMSA8PCAxOwogQnVp
bGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSID0gMSA8PCAyOwogCiB2YXIgQlVJTERFUl9U
T19NQVNURVIgPSB7fTsKLWZ1bmN0aW9uIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihidWls
ZGVycywgbWFzdGVyKSB7Ci0gIGJ1aWxkZXJzLmZvckVhY2goZnVuY3Rpb24oYnVpbGRlckFuZEZs
YWdzKSB7Ci0gICAgdmFyIGJ1aWxkZXIgPSBidWlsZGVyQW5kRmxhZ3NbMF07Ci0gICAgQlVJTERF
Ul9UT19NQVNURVJbYnVpbGRlcl0gPSBtYXN0ZXI7Ci0gIH0pOworZnVuY3Rpb24gYXNzb2NpYXRl
QnVpbGRlcnNXaXRoTWFzdGVyKGJ1aWxkZXJzLCBtYXN0ZXIpCit7CisgICAgYnVpbGRlcnMuZm9y
RWFjaChmdW5jdGlvbihidWlsZGVyQW5kRmxhZ3MpIHsKKyAgICAgICAgdmFyIGJ1aWxkZXIgPSBi
dWlsZGVyQW5kRmxhZ3NbMF07CisgICAgICAgIEJVSUxERVJfVE9fTUFTVEVSW2J1aWxkZXJdID0g
bWFzdGVyOworICAgIH0pOwogfQogCiB2YXIgQ0hST01JVU1fREVQU19CVUlMREVSUyA9IFsKLSAg
WydXZWJraXQgV2luIChkZXBzKScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAotICBb
J1dlYmtpdCBXaW4gKGRlcHMpKGRiZykoMSknXSwKLSAgWydXZWJraXQgV2luIChkZXBzKShkYmcp
KDIpJ10sCi0gIFsnV2Via2l0IExpbnV4IChkZXBzKScsIEJ1aWxkZXJHcm91cC5FWFBFQ1RBVElP
TlNfQlVJTERFUl0sCi0gIFsnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDEpJ10sCi0gIFsnV2Vi
a2l0IExpbnV4IChkZXBzKShkYmcpKDIpJ10sCi0gIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpJ10s
Ci0gIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMSknXSwKLSAgWydXZWJraXQgTWFjMTAu
NiAoZGVwcykoZGJnKSgyKSddCisgICAgWydXZWJraXQgV2luIChkZXBzKScsIEJ1aWxkZXJHcm91
cC5ERUZBVUxUX0JVSUxERVJdLAorICAgIFsnV2Via2l0IFdpbiAoZGVwcykoZGJnKSgxKSddLAor
ICAgIFsnV2Via2l0IFdpbiAoZGVwcykoZGJnKSgyKSddLAorICAgIFsnV2Via2l0IExpbnV4IChk
ZXBzKScsIEJ1aWxkZXJHcm91cC5FWFBFQ1RBVElPTlNfQlVJTERFUl0sCisgICAgWydXZWJraXQg
TGludXggKGRlcHMpKGRiZykoMSknXSwKKyAgICBbJ1dlYmtpdCBMaW51eCAoZGVwcykoZGJnKSgy
KSddLAorICAgIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpJ10sCisgICAgWydXZWJraXQgTWFjMTAu
NiAoZGVwcykoZGJnKSgxKSddLAorICAgIFsnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMikn
XQogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihDSFJPTUlVTV9ERVBTX0JVSUxERVJT
LCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIpOwogCiB2YXIgQ0hST01JVU1fVE9UX0JV
SUxERVJTID0gWwotICBbJ1dlYmtpdCBXaW4nLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVS
XSwKLSAgWydXZWJraXQgVmlzdGEnXSwKLSAgWydXZWJraXQgV2luNyddLAotICBbJ1dlYmtpdCBX
aW4gKGRiZykoMSknXSwKLSAgWydXZWJraXQgV2luIChkYmcpKDIpJ10sCi0gIFsnV2Via2l0IExp
bnV4JywgQnVpbGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSXSwKLSAgWydXZWJraXQgTGlu
dXggMzInXSwKLSAgWydXZWJraXQgTGludXggKGRiZykoMSknXSwKLSAgWydXZWJraXQgTGludXgg
KGRiZykoMiknXSwKLSAgWydXZWJraXQgTWFjMTAuNSddLAotICBbJ1dlYmtpdCBNYWMxMC41IChk
YmcpKDEpJ10sCi0gIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMiknXSwKLSAgWydXZWJraXQgTWFj
MTAuNiddLAotICBbJ1dlYmtpdCBNYWMxMC42IChkYmcpJ10KKyAgICBbJ1dlYmtpdCBXaW4nLCBC
dWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwKKyAgICBbJ1dlYmtpdCBWaXN0YSddLAorICAg
IFsnV2Via2l0IFdpbjcnXSwKKyAgICBbJ1dlYmtpdCBXaW4gKGRiZykoMSknXSwKKyAgICBbJ1dl
YmtpdCBXaW4gKGRiZykoMiknXSwKKyAgICBbJ1dlYmtpdCBMaW51eCcsIEJ1aWxkZXJHcm91cC5F
WFBFQ1RBVElPTlNfQlVJTERFUl0sCisgICAgWydXZWJraXQgTGludXggMzInXSwKKyAgICBbJ1dl
YmtpdCBMaW51eCAoZGJnKSgxKSddLAorICAgIFsnV2Via2l0IExpbnV4IChkYmcpKDIpJ10sCisg
ICAgWydXZWJraXQgTWFjMTAuNSddLAorICAgIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMSknXSwK
KyAgICBbJ1dlYmtpdCBNYWMxMC41IChkYmcpKDIpJ10sCisgICAgWydXZWJraXQgTWFjMTAuNidd
LAorICAgIFsnV2Via2l0IE1hYzEwLjYgKGRiZyknXQogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0
aE1hc3RlcihDSFJPTUlVTV9UT1RfQlVJTERFUlMsIENIUk9NSVVNX1dFQktJVF9CVUlMREVSX01B
U1RFUik7CiAKIHZhciBXRUJLSVRfVE9UX0JVSUxERVJTID0gWwotICBbJ0Nocm9taXVtIFdpbiBS
ZWxlYXNlIChUZXN0cyknLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwKLSAgWydDaHJv
bWl1bSBMaW51eCBSZWxlYXNlIChUZXN0cyknLCBCdWlsZGVyR3JvdXAuRVhQRUNUQVRJT05TX0JV
SUxERVJdLAotICBbJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cyknXQorICAgIFsnQ2hyb21p
dW0gV2luIFJlbGVhc2UgKFRlc3RzKScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAor
ICAgIFsnQ2hyb21pdW0gTGludXggUmVsZWFzZSAoVGVzdHMpJywgQnVpbGRlckdyb3VwLkVYUEVD
VEFUSU9OU19CVUlMREVSXSwKKyAgICBbJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cyknXQog
XTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihXRUJLSVRfVE9UX0JVSUxERVJTLCBXRUJL
SVRfQlVJTERFUl9NQVNURVIpOwogCiB2YXIgQ0hST01JVU1fR1BVX01FU0FfQlVJTERFUlMgPSBb
Ci0gIFsnV2Via2l0IFdpbiAtIEdQVScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAot
ICBbJ1dlYmtpdCBWaXN0YSAtIEdQVSddLAotICBbJ1dlYmtpdCBXaW43IC0gR1BVJ10sCi0gIFsn
V2Via2l0IFdpbiAoZGJnKSgxKSAtIEdQVSddLAotICBbJ1dlYmtpdCBXaW4gKGRiZykoMikgLSBH
UFUnXSwKLSAgWydXZWJraXQgTGludXggLSBHUFUnLCBCdWlsZGVyR3JvdXAuRVhQRUNUQVRJT05T
X0JVSUxERVJdLAotICBbJ1dlYmtpdCBMaW51eCAzMiAtIEdQVSddLAotICBbJ1dlYmtpdCBMaW51
eCAoZGJnKSgxKSAtIEdQVSddLAotICBbJ1dlYmtpdCBMaW51eCAoZGJnKSgyKSAtIEdQVSddLAot
ICBbJ1dlYmtpdCBNYWMxMC41IC0gR1BVJ10sCi0gIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMSkg
LSBHUFUnXSwKLSAgWydXZWJraXQgTWFjMTAuNSAoZGJnKSgyKSAtIEdQVSddLAotICBbJ1dlYmtp
dCBNYWMxMC42IC0gR1BVJ10sCi0gIFsnV2Via2l0IE1hYzEwLjYgKGRiZykgLSBHUFUnXQorICAg
IFsnV2Via2l0IFdpbiAtIEdQVScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLAorICAg
IFsnV2Via2l0IFZpc3RhIC0gR1BVJ10sCisgICAgWydXZWJraXQgV2luNyAtIEdQVSddLAorICAg
IFsnV2Via2l0IFdpbiAoZGJnKSgxKSAtIEdQVSddLAorICAgIFsnV2Via2l0IFdpbiAoZGJnKSgy
KSAtIEdQVSddLAorICAgIFsnV2Via2l0IExpbnV4IC0gR1BVJywgQnVpbGRlckdyb3VwLkVYUEVD
VEFUSU9OU19CVUlMREVSXSwKKyAgICBbJ1dlYmtpdCBMaW51eCAzMiAtIEdQVSddLAorICAgIFsn
V2Via2l0IExpbnV4IChkYmcpKDEpIC0gR1BVJ10sCisgICAgWydXZWJraXQgTGludXggKGRiZyko
MikgLSBHUFUnXSwKKyAgICBbJ1dlYmtpdCBNYWMxMC41IC0gR1BVJ10sCisgICAgWydXZWJraXQg
TWFjMTAuNSAoZGJnKSgxKSAtIEdQVSddLAorICAgIFsnV2Via2l0IE1hYzEwLjUgKGRiZykoMikg
LSBHUFUnXSwKKyAgICBbJ1dlYmtpdCBNYWMxMC42IC0gR1BVJ10sCisgICAgWydXZWJraXQgTWFj
MTAuNiAoZGJnKSAtIEdQVSddCiBdOwogYXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKENIUk9N
SVVNX0dQVV9NRVNBX0JVSUxERVJTLCBDSFJPTUlVTV9XRUJLSVRfQlVJTERFUl9NQVNURVIpOwog
CiB2YXIgQ0hST01JVU1fR1BVX0hBUkRXQVJFX0JVSUxERVJTID0gWwotICBbJ0dQVSBXaW43IFRl
c3RzIC0gR1BVJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUiB8IEJ1aWxkZXJHcm91cC5F
WFBFQ1RBVElPTlNfQlVJTERFUl0sCi0gIFsnR1BVIFdpbjcgVGVzdHMgKGRiZykoMSkgLSBHUFUn
XSwKLSAgWydHUFUgV2luNyBUZXN0cyAoZGJnKSgyKSAtIEdQVSddLAotICBbJ0dQVSBXaW43IHg2
NCBUZXN0cyAoZGJnKSgxKSAtIEdQVSddLAotICBbJ0dQVSBXaW43IHg2NCBUZXN0cyAoZGJnKSgy
KSAtIEdQVSddLAotICAKLSAgWydHUFUgVmlzdGEgVGVzdHMgKGRiZykoMSkgLSBHUFUnXSwKLSAg
WydHUFUgVmlzdGEgVGVzdHMgKGRiZykoMikgLSBHUFUnXSwKLSAgWydHUFUgVmlzdGEgeDY0IFRl
c3RzIChkYmcpIC0gR1BVJ10sCi0gIAotICBbJ0dQVSBNYWMgMTAuNiBUZXN0cyAtIEdQVSddLAot
ICBbJ0dQVSBNYWMgMTAuNiBUZXN0cyAoZGJnKSAtIEdQVSddLAotICBbJ0dQVSBNYWMgMTAuNSBU
ZXN0cyAoZGJnKSAtIEdQVSddLAotICAKLSAgWydHUFUgTGludXggVGVzdHMgKGRiZykoMSkgLSBH
UFUnXSwKLSAgWydHUFUgTGludXggVGVzdHMgKGRiZykoMikgLSBHUFUnXSwKLSAgCi0gIFsnR1BV
IFdpbjcgVGVzdHMgKGRiZykoMSkgLSBHUFUnXSwKLSAgWydHUFUgV2luNyBUZXN0cyAoZGJnKSgy
KSAtIEdQVSddLAotICBbJ0dQVSBMaW51eCBUZXN0cyB4NjQgLSBHUFUnXQorICAgIFsnR1BVIFdp
bjcgVGVzdHMgLSBHUFUnLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSIHwgQnVpbGRlckdy
b3VwLkVYUEVDVEFUSU9OU19CVUlMREVSXSwKKyAgICBbJ0dQVSBXaW43IFRlc3RzIChkYmcpKDEp
IC0gR1BVJ10sCisgICAgWydHUFUgV2luNyBUZXN0cyAoZGJnKSgyKSAtIEdQVSddLAorICAgIFsn
R1BVIFdpbjcgeDY0IFRlc3RzIChkYmcpKDEpIC0gR1BVJ10sCisgICAgWydHUFUgV2luNyB4NjQg
VGVzdHMgKGRiZykoMikgLSBHUFUnXSwKKyAgICAKKyAgICBbJ0dQVSBWaXN0YSBUZXN0cyAoZGJn
KSgxKSAtIEdQVSddLAorICAgIFsnR1BVIFZpc3RhIFRlc3RzIChkYmcpKDIpIC0gR1BVJ10sCisg
ICAgWydHUFUgVmlzdGEgeDY0IFRlc3RzIChkYmcpIC0gR1BVJ10sCisgICAgCisgICAgWydHUFUg
TWFjIDEwLjYgVGVzdHMgLSBHUFUnXSwKKyAgICBbJ0dQVSBNYWMgMTAuNiBUZXN0cyAoZGJnKSAt
IEdQVSddLAorICAgIFsnR1BVIE1hYyAxMC41IFRlc3RzIChkYmcpIC0gR1BVJ10sCisgICAgCisg
ICAgWydHUFUgTGludXggVGVzdHMgKGRiZykoMSkgLSBHUFUnXSwKKyAgICBbJ0dQVSBMaW51eCBU
ZXN0cyAoZGJnKSgyKSAtIEdQVSddLAorICAgIAorICAgIFsnR1BVIFdpbjcgVGVzdHMgKGRiZyko
MSkgLSBHUFUnXSwKKyAgICBbJ0dQVSBXaW43IFRlc3RzIChkYmcpKDIpIC0gR1BVJ10sCisgICAg
WydHUFUgTGludXggVGVzdHMgeDY0IC0gR1BVJ10KIF07CiBhc3NvY2lhdGVCdWlsZGVyc1dpdGhN
YXN0ZXIoQ0hST01JVU1fR1BVX0hBUkRXQVJFX0JVSUxERVJTLCBDSFJPTUlVTV9HUFVfQlVJTERF
Ul9NQVNURVIpOwogCiB2YXIgTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTID0gewotICAnQERF
UFMgLSBjaHJvbWl1bS5vcmcnOiAgICAgICAgICAgICBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJH
cm91cC5ERVBTX1dFQktJVCwgQ0hST01JVU1fREVQU19CVUlMREVSUyksCi0gICdAVG9UIC0gY2hy
b21pdW0ub3JnJzogICAgICAgICAgICAgIG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRP
VF9XRUJLSVQsICBDSFJPTUlVTV9UT1RfQlVJTERFUlMpLAotICAnQFRvVCAtIHdlYmtpdC5vcmcn
OiAgICAgICAgICAgICAgICBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lU
LCAgV0VCS0lUX1RPVF9CVUlMREVSUyksCi0gICdAVG9UIEdQVSBNZXNhIC0gY2hyb21pdW0ub3Jn
JzogICAgIG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsICBDSFJPTUlV
TV9HUFVfTUVTQV9CVUlMREVSUyksCi0gICdAVG9UIEdQVSBIYXJkd2FyZSAtIGNocm9taXVtLm9y
Zyc6IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsICBDSFJPTUlVTV9H
UFVfSEFSRFdBUkVfQlVJTERFUlMpCisgICAgJ0BERVBTIC0gY2hyb21pdW0ub3JnJzogbmV3IEJ1
aWxkZXJHcm91cChCdWlsZGVyR3JvdXAuREVQU19XRUJLSVQsIENIUk9NSVVNX0RFUFNfQlVJTERF
UlMpLAorICAgICdAVG9UIC0gY2hyb21pdW0ub3JnJzogbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVy
R3JvdXAuVE9UX1dFQktJVCwgQ0hST01JVU1fVE9UX0JVSUxERVJTKSwKKyAgICAnQFRvVCAtIHdl
YmtpdC5vcmcnOiBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBXRUJL
SVRfVE9UX0JVSUxERVJTKSwKKyAgICAnQFRvVCBHUFUgTWVzYSAtIGNocm9taXVtLm9yZyc6IG5l
dyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIENIUk9NSVVNX0dQVV9NRVNB
X0JVSUxERVJTKSwKKyAgICAnQFRvVCBHUFUgSGFyZHdhcmUgLSBjaHJvbWl1bS5vcmcnOiBuZXcg
QnVpbGRlckdyb3VwKEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lULCBDSFJPTUlVTV9HUFVfSEFSRFdB
UkVfQlVJTERFUlMpCiB9OwogCiB2YXIgTEVHQUNZX0JVSUxERVJfTUFTVEVSU19UT19HUk9VUFMg
PSB7Ci0gICdDaHJvbWl1bSc6ICdAREVQUyAtIGNocm9taXVtLm9yZycsCi0gICdDaHJvbWl1bVdl
YmtpdCc6ICdAVG9UIC0gY2hyb21pdW0ub3JnJywKLSAgJ3dlYmtpdC5vcmcnOiAnQFRvVCAtIHdl
YmtpdC5vcmcnCisgICAgJ0Nocm9taXVtJzogJ0BERVBTIC0gY2hyb21pdW0ub3JnJywKKyAgICAn
Q2hyb21pdW1XZWJraXQnOiAnQFRvVCAtIGNocm9taXVtLm9yZycsCisgICAgJ3dlYmtpdC5vcmcn
OiAnQFRvVCAtIHdlYmtpdC5vcmcnCiB9OwogCiB2YXIgR19URVNUU19CVUlMREVSUyA9IFsKLSAg
WydXaW4nLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwKLSAgWydNYWMnXSwKLSAgWydM
aW51eCddLAotICBbJ0xpbnV4IHg2NCddLAotICBbJ1hQIFRlc3RzICgxKSddLAotICBbJ1hQIFRl
c3RzICgyKSddLAotICBbJ1hQIFRlc3RzICgzKSddLAotICBbJ1Zpc3RhIFRlc3RzICgxKSddLAot
ICBbJ1Zpc3RhIFRlc3RzICgyKSddLAotICBbJ1Zpc3RhIFRlc3RzICgzKSddLAotICBbJ1dpbjcg
U3luYyddLAotICBbJ1hQIFRlc3RzIChkYmcpKDEpJ10sCi0gIFsnWFAgVGVzdHMgKGRiZykoMikn
XSwKLSAgWydYUCBUZXN0cyAoZGJnKSgzKSddLAotICBbJ1hQIFRlc3RzIChkYmcpKDQpJ10sCi0g
IFsnWFAgVGVzdHMgKGRiZykoNSknXSwKLSAgWydYUCBUZXN0cyAoZGJnKSg2KSddLAotICBbJ1Zp
c3RhIFRlc3RzIChkYmcpKDEpJ10sCi0gIFsnVmlzdGEgVGVzdHMgKGRiZykoMiknXSwKLSAgWydW
aXN0YSBUZXN0cyAoZGJnKSgzKSddLAotICBbJ1Zpc3RhIFRlc3RzIChkYmcpKDQpJ10sCi0gIFsn
VmlzdGEgVGVzdHMgKGRiZykoNSknXSwKLSAgWydWaXN0YSBUZXN0cyAoZGJnKSg2KSddLAotICBb
J0ludGVyYWN0aXZlIFRlc3RzIChkYmcpJ10sCi0gIFsnTWFjMTAuNSBUZXN0cyAoMSknXSwKLSAg
WydNYWMxMC41IFRlc3RzICgyKSddLAotICBbJ01hYzEwLjUgVGVzdHMgKDMpJ10sCi0gIFsnTWFj
MTAuNiBUZXN0cyAoMSknXSwKLSAgWydNYWMxMC42IFRlc3RzICgyKSddLAotICBbJ01hYzEwLjYg
VGVzdHMgKDMpJ10sCi0gIFsnTWFjMTAuNiBTeW5jJ10sCi0gIFsnTWFjIDEwLjUgVGVzdHMgKGRi
ZykoMSknXSwKLSAgWydNYWMgMTAuNSBUZXN0cyAoZGJnKSgyKSddLAotICBbJ01hYyAxMC41IFRl
c3RzIChkYmcpKDMpJ10sCi0gIFsnTWFjIDEwLjUgVGVzdHMgKGRiZykoNCknXSwKLSAgWydNYWMg
MTAuNiBUZXN0cyAoZGJnKSgxKSddLAotICBbJ01hYyAxMC42IFRlc3RzIChkYmcpKDIpJ10sCi0g
IFsnTWFjIDEwLjYgVGVzdHMgKGRiZykoMyknXSwKLSAgWydNYWMgMTAuNiBUZXN0cyAoZGJnKSg0
KSddLAotICBbJ0xpbnV4IFRlc3RzIHg2NCddLAotICBbJ0xpbnV4IFRlc3RzIChkYmcpKDEpJ10s
Ci0gIFsnTGludXggVGVzdHMgKGRiZykoMiknXSwKLSAgWydMaW51eCBUZXN0cyAoZGJnKShzaGFy
ZWQpJ10sCi0gIFsnTGludXggU3luYyddLAotICBbJ0xpbnV4IEJ1aWxkZXIgKENocm9taXVtT1Mp
J10sCi0gIFsnTGludXggQnVpbGRlciAoQ2hyb21pdW1PUyBkYmcpJ10sCi0gIFsnTGludXggVGVz
dHMgKENocm9taXVtT1MgZGJnKSgxKSddLAotICBbJ0xpbnV4IFRlc3RzIChDaHJvbWl1bU9TIGRi
ZykoMiknXSwKLSAgWydMaW51eCBUZXN0cyAoQ2hyb21pdW1PUyBkYmcpKDMpJ10sCi0gIFsnTGlu
dXggQnVpbGRlciAoQ2hyb21pdW1PUyBkYmcpJ10sCi0gIFsnTGludXggQnVpbGRlciAoVmlld3Mg
ZGJnKSddLAotICBbJ0xpbnV4IFRlc3RzIChWaWV3cyBkYmcpKDEpJ10sCi0gIFsnTGludXggVGVz
dHMgKFZpZXdzIGRiZykoMiknXSwKLSAgWydMaW51eCBUZXN0cyAoVmlld3MgZGJnKSgzKSddLAor
ICAgIFsnV2luJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUl0sCisgICAgWydNYWMnXSwK
KyAgICBbJ0xpbnV4J10sCisgICAgWydMaW51eCB4NjQnXSwKKyAgICBbJ1hQIFRlc3RzICgxKSdd
LAorICAgIFsnWFAgVGVzdHMgKDIpJ10sCisgICAgWydYUCBUZXN0cyAoMyknXSwKKyAgICBbJ1Zp
c3RhIFRlc3RzICgxKSddLAorICAgIFsnVmlzdGEgVGVzdHMgKDIpJ10sCisgICAgWydWaXN0YSBU
ZXN0cyAoMyknXSwKKyAgICBbJ1dpbjcgU3luYyddLAorICAgIFsnWFAgVGVzdHMgKGRiZykoMSkn
XSwKKyAgICBbJ1hQIFRlc3RzIChkYmcpKDIpJ10sCisgICAgWydYUCBUZXN0cyAoZGJnKSgzKSdd
LAorICAgIFsnWFAgVGVzdHMgKGRiZykoNCknXSwKKyAgICBbJ1hQIFRlc3RzIChkYmcpKDUpJ10s
CisgICAgWydYUCBUZXN0cyAoZGJnKSg2KSddLAorICAgIFsnVmlzdGEgVGVzdHMgKGRiZykoMSkn
XSwKKyAgICBbJ1Zpc3RhIFRlc3RzIChkYmcpKDIpJ10sCisgICAgWydWaXN0YSBUZXN0cyAoZGJn
KSgzKSddLAorICAgIFsnVmlzdGEgVGVzdHMgKGRiZykoNCknXSwKKyAgICBbJ1Zpc3RhIFRlc3Rz
IChkYmcpKDUpJ10sCisgICAgWydWaXN0YSBUZXN0cyAoZGJnKSg2KSddLAorICAgIFsnSW50ZXJh
Y3RpdmUgVGVzdHMgKGRiZyknXSwKKyAgICBbJ01hYzEwLjUgVGVzdHMgKDEpJ10sCisgICAgWydN
YWMxMC41IFRlc3RzICgyKSddLAorICAgIFsnTWFjMTAuNSBUZXN0cyAoMyknXSwKKyAgICBbJ01h
YzEwLjYgVGVzdHMgKDEpJ10sCisgICAgWydNYWMxMC42IFRlc3RzICgyKSddLAorICAgIFsnTWFj
MTAuNiBUZXN0cyAoMyknXSwKKyAgICBbJ01hYzEwLjYgU3luYyddLAorICAgIFsnTWFjIDEwLjUg
VGVzdHMgKGRiZykoMSknXSwKKyAgICBbJ01hYyAxMC41IFRlc3RzIChkYmcpKDIpJ10sCisgICAg
WydNYWMgMTAuNSBUZXN0cyAoZGJnKSgzKSddLAorICAgIFsnTWFjIDEwLjUgVGVzdHMgKGRiZyko
NCknXSwKKyAgICBbJ01hYyAxMC42IFRlc3RzIChkYmcpKDEpJ10sCisgICAgWydNYWMgMTAuNiBU
ZXN0cyAoZGJnKSgyKSddLAorICAgIFsnTWFjIDEwLjYgVGVzdHMgKGRiZykoMyknXSwKKyAgICBb
J01hYyAxMC42IFRlc3RzIChkYmcpKDQpJ10sCisgICAgWydMaW51eCBUZXN0cyB4NjQnXSwKKyAg
ICBbJ0xpbnV4IFRlc3RzIChkYmcpKDEpJ10sCisgICAgWydMaW51eCBUZXN0cyAoZGJnKSgyKSdd
LAorICAgIFsnTGludXggVGVzdHMgKGRiZykoc2hhcmVkKSddLAorICAgIFsnTGludXggU3luYydd
LAorICAgIFsnTGludXggQnVpbGRlciAoQ2hyb21pdW1PUyknXSwKKyAgICBbJ0xpbnV4IEJ1aWxk
ZXIgKENocm9taXVtT1MgZGJnKSddLAorICAgIFsnTGludXggVGVzdHMgKENocm9taXVtT1MgZGJn
KSgxKSddLAorICAgIFsnTGludXggVGVzdHMgKENocm9taXVtT1MgZGJnKSgyKSddLAorICAgIFsn
TGludXggVGVzdHMgKENocm9taXVtT1MgZGJnKSgzKSddLAorICAgIFsnTGludXggQnVpbGRlciAo
Q2hyb21pdW1PUyBkYmcpJ10sCisgICAgWydMaW51eCBCdWlsZGVyIChWaWV3cyBkYmcpJ10sCisg
ICAgWydMaW51eCBUZXN0cyAoVmlld3MgZGJnKSgxKSddLAorICAgIFsnTGludXggVGVzdHMgKFZp
ZXdzIGRiZykoMiknXSwKKyAgICBbJ0xpbnV4IFRlc3RzIChWaWV3cyBkYmcpKDMpJ10sCiBdOwog
YXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKEdfVEVTVFNfQlVJTERFUlMsIENIUk9NSVVNX0JV
SUxERVJfTUFTVEVSKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKaW5kZXggYTA5MTg3Y2M1Mzg4Yzlm
ZjM3OGJmM2ZlYTNiMTY4YTRmNWVlMjFlOC4uNjlmM2UxNTgyMzRmMjUxODhkMDVlMjc4OTQyY2Nk
Y2RhNTY4MWNlOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCkBAIC0zMzYsNyArMzM2LDcgQEAgZnVu
Y3Rpb24gZGlmZlN0YXRlcygpCiAgICAgcmV0dXJuIGNoYW5nZWRQYXJhbXM7CiB9CiAKLWZ1bmN0
aW9uIGdldERlZmF1bHRWYWx1ZShrZXkpCitmdW5jdGlvbiBkZWZhdWx0VmFsdWUoa2V5KQogewog
ICAgIGlmIChrZXkgaW4gZ19kZWZhdWx0U3RhdGVWYWx1ZXMpCiAgICAgICAgIHJldHVybiBnX2Rl
ZmF1bHRTdGF0ZVZhbHVlc1trZXldOwpAQCAtMzg4LDcgKzM4OCw3IEBAIGZ1bmN0aW9uIGlzTGF5
b3V0VGVzdFJlc3VsdHMoKQogICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAn
bGF5b3V0LXRlc3RzJzsKIH0KIAotZnVuY3Rpb24gZ2V0Q3VycmVudEJ1aWxkZXJHcm91cChvcHRf
c3RhdGUpCitmdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwKG9wdF9zdGF0ZSkKIHsKICAgICB2
YXIgc3RhdGUgPSBvcHRfc3RhdGUgfHwgZ19jdXJyZW50U3RhdGU7CiAgICAgc3dpdGNoIChzdGF0
ZS50ZXN0VHlwZSkgewpAQCAtNDI2LDE0ICs0MjYsMTQgQEAgZnVuY3Rpb24gZ2V0Q3VycmVudEJ1
aWxkZXJHcm91cChvcHRfc3RhdGUpCiAgICAgfQogfQogCi1mdW5jdGlvbiBnZXRCdWlsZGVyTWFz
dGVyKGJ1aWxkZXJOYW1lKQorZnVuY3Rpb24gYnVpbGRlck1hc3RlcihidWlsZGVyTmFtZSkKIHsK
ICAgICByZXR1cm4gQlVJTERFUl9UT19NQVNURVJbYnVpbGRlck5hbWVdOwogfQogCiBmdW5jdGlv
biBpc1RpcE9mVHJlZVdlYktpdEJ1aWxkZXIoKQogewotICAgIHJldHVybiBnZXRDdXJyZW50QnVp
bGRlckdyb3VwKCkuaXNUb1RXZWJLaXQ7CisgICAgcmV0dXJuIGN1cnJlbnRCdWlsZGVyR3JvdXAo
KS5pc1RvVFdlYktpdDsKIH0KIAogdmFyIGdfZGVmYXVsdEJ1aWxkZXJOYW1lLCBnX2J1aWxkZXJz
LCBnX2V4cGVjdGF0aW9uc0J1aWxkZXI7CkBAIC00NTQsNyArNDU0LDcgQEAgZnVuY3Rpb24gaW5p
dEJ1aWxkZXJzKHN0YXRlKQogICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSB3aW5k
b3cubG9jYXRpb24uaGFzaC5yZXBsYWNlKCdtYXN0ZXI9JyArIHN0YXRlLm1hc3RlciwgJ2dyb3Vw
PScgKyBzdGF0ZS5ncm91cCk7CiAgICAgICAgICAgICBkZWxldGUgc3RhdGUubWFzdGVyOwogICAg
ICAgICB9Ci0gICAgICAgIGdldEN1cnJlbnRCdWlsZGVyR3JvdXAoc3RhdGUpLnNldHVwKCk7Cisg
ICAgICAgIGN1cnJlbnRCdWlsZGVyR3JvdXAoc3RhdGUpLnNldHVwKCk7CiAgICAgfQogfQogaW5p
dEJ1aWxkZXJzKGdfY3VycmVudFN0YXRlKTsKQEAgLTQ3MiwxMCArNDcyLDEwIEBAIGZ1bmN0aW9u
IEFERF9SRVNVTFRTKGJ1aWxkcykKICAgICBoYW5kbGVSZXNvdXJjZUxvYWQoKTsKIH0KIAotZnVu
Y3Rpb24gZ2V0UGF0aFRvQnVpbGRlclJlc3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQorZnVuY3Rpb24g
cGF0aFRvQnVpbGRlclJlc3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQogewogICAgIHJldHVybiBURVNU
X1JFU1VMVFNfU0VSVkVSICsgJ3Rlc3RmaWxlP2J1aWxkZXI9JyArIGJ1aWxkZXJOYW1lICsKLSAg
ICAgICAgICAgICcmbWFzdGVyPScgKyBnZXRCdWlsZGVyTWFzdGVyKGJ1aWxkZXJOYW1lKS5uYW1l
ICsKKyAgICAgICAgICAgICcmbWFzdGVyPScgKyBidWlsZGVyTWFzdGVyKGJ1aWxkZXJOYW1lKS5u
YW1lICsKICAgICAgICAgICAgICcmdGVzdHR5cGU9JyArIGdfY3VycmVudFN0YXRlLnRlc3RUeXBl
ICsgJyZuYW1lPSc7CiB9CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCBmdW5jdGlvbiBhcHBlbmRKU09O
U2NyaXB0RWxlbWVudEZvcihidWlsZGVyTmFtZSkKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdHNG
aWxlbmFtZSA9ICdyZXN1bHRzLXNtYWxsLmpzb24nOwogCi0gICAgYXBwZW5kU2NyaXB0KGdldFBh
dGhUb0J1aWxkZXJSZXN1bHRzRmlsZShidWlsZGVyTmFtZSkgKyByZXN1bHRzRmlsZW5hbWUsCisg
ICAgYXBwZW5kU2NyaXB0KHBhdGhUb0J1aWxkZXJSZXN1bHRzRmlsZShidWlsZGVyTmFtZSkgKyBy
ZXN1bHRzRmlsZW5hbWUsCiAgICAgICAgICAgICBwYXJ0aWFsKGhhbmRsZVJlc291cmNlTG9hZEVy
cm9yLCBidWlsZGVyTmFtZSksCiAgICAgICAgICAgICBwYXJ0aWFsKGhhbmRsZVNjcmlwdExvYWRl
ZCwgYnVpbGRlck5hbWUpKTsKIH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBmdW5jdGlvbiBhcHBlbmRK
U09OU2NyaXB0RWxlbWVudHMoKQogICAgIC8vIEdyYWIgZXhwZWN0YXRpb25zIGZpbGUgZnJvbSB0
aGUgZmFzdGVzdCBidWlsZGVyLCB3aGljaCBpcyBMaW51eCByZWxlYXNlCiAgICAgLy8gcmlnaHQg
bm93LiAgICBDb3VsZCBiZSBjaGFuZ2VkIHRvIGFueSBvdGhlciBidWlsZGVyIGlmIG5lZWRlZC4K
ICAgICBpZiAoZ193YWl0aW5nT25FeHBlY3RhdGlvbnMpCi0gICAgICAgIGFwcGVuZFNjcmlwdChn
ZXRQYXRoVG9CdWlsZGVyUmVzdWx0c0ZpbGUoZ19leHBlY3RhdGlvbnNCdWlsZGVyKSArICdleHBl
Y3RhdGlvbnMuanNvbicpOworICAgICAgICBhcHBlbmRTY3JpcHQocGF0aFRvQnVpbGRlclJlc3Vs
dHNGaWxlKGdfZXhwZWN0YXRpb25zQnVpbGRlcikgKyAnZXhwZWN0YXRpb25zLmpzb24nKTsKIH0K
IAogdmFyIGdfaGFzRG9uZUluaXRpYWxQYWdlR2VuZXJhdGlvbiA9IGZhbHNlOwpAQCAtNjYwLDcg
KzY2MCw3IEBAIGZ1bmN0aW9uIGhhbmRsZUxvY2F0aW9uQ2hhbmdlKCkKICAgICBpZiAoT2JqZWN0
LmtleXMocGFyYW1zKS5sZW5ndGgpCiAgICAgICAgIHNob3VsZEdlbmVyYXRlUGFnZSA9IGhhbmRs
ZVF1ZXJ5UGFyYW1ldGVyQ2hhbmdlKHBhcmFtcyk7CiAKLSAgICB2YXIgbmV3SGFzaCA9IGdldFBl
cm1hTGlua1VSTEhhc2goKTsKKyAgICB2YXIgbmV3SGFzaCA9IHBlcm1hTGlua1VSTEhhc2goKTsK
ICAgICB2YXIgd2luSGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHx8ICIjIjsKICAgICAvLyBN
YWtlIHN1cmUgdGhlIGxvY2F0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBzdGF0ZSB3ZSBhcmUgdXNp
bmcgaW50ZXJuYWxseS4KICAgICAvLyBUaGVzZSBnZXQgb3V0IG9mIHN5bmMgaWYgcHJvY2Vzc1F1
ZXJ5UGFyYW1DaGFuZ2UgY2hhbmdlZCBzdGF0ZS4KQEAgLTY4NSwxMSArNjg1LDExIEBAIGZ1bmN0
aW9uIHNldFF1ZXJ5UGFyYW1ldGVyKHZhcl9hcmdzKQogICAgIC8vIE5vdGU6IFdlIHVzZSB3aW5k
b3cubG9jYXRpb24uaGFzaCByYXRoZXIgdGhhdCB3aW5kb3cubG9jYXRpb24ucmVwbGFjZQogICAg
IC8vIGJlY2F1c2Ugb2YgYnVncyBpbiBDaHJvbWUgd2hlcmUgZXh0cmEgZW50cmllcyB3ZXJlIGdl
dHRpbmcgY3JlYXRlZAogICAgIC8vIHdoZW4gYmFjayBidXR0b24gd2FzIHByZXNzZWQgYW5kIGZ1
bGwgcGFnZSBuYXZpZ2F0aW9uIHdhcyBvY2N1cmluZy4KLSAgICAvLyBUT0RPOiBmaWxlIHRob3Nl
IGJ1Z3MuCi0gICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBnZXRQZXJtYUxpbmtVUkxIYXNoKHN0
YXRlKTsKKyAgICAvLyBGSVhNRTogZmlsZSB0aG9zZSBidWdzLgorICAgIHdpbmRvdy5sb2NhdGlv
bi5oYXNoID0gcGVybWFMaW5rVVJMSGFzaChzdGF0ZSk7CiB9CiAKLWZ1bmN0aW9uIGdldFBlcm1h
TGlua1VSTEhhc2gob3B0X3N0YXRlKQorZnVuY3Rpb24gcGVybWFMaW5rVVJMSGFzaChvcHRfc3Rh
dGUpCiB7CiAgICAgdmFyIHN0YXRlID0gb3B0X3N0YXRlIHx8IGdfY3VycmVudFN0YXRlOwogICAg
IHJldHVybiAnIycgKyBqb2luUGFyYW1ldGVycyhzdGF0ZSk7CkBAIC03MDAsNyArNzAwLDcgQEAg
ZnVuY3Rpb24gam9pblBhcmFtZXRlcnMoc3RhdGVPYmplY3QpCiAgICAgdmFyIHN0YXRlID0gW107
CiAgICAgZm9yICh2YXIga2V5IGluIHN0YXRlT2JqZWN0KSB7CiAgICAgICAgIHZhciB2YWx1ZSA9
IHN0YXRlT2JqZWN0W2tleV07Ci0gICAgICAgIGlmICh2YWx1ZSAhPSBnZXREZWZhdWx0VmFsdWUo
a2V5KSkKKyAgICAgICAgaWYgKHZhbHVlICE9IGRlZmF1bHRWYWx1ZShrZXkpKQogICAgICAgICAg
ICAgc3RhdGUucHVzaChrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN0YXRlLmpvaW4oJyYnKTsKQEAgLTc2MiwyMSArNzYyLDggQEAgZnVu
Y3Rpb24gcGFydGlhbChmbiwgdmFyX2FyZ3MpCiAgICAgfTsKIH07CiAKLS8vIFJldHVybnMgdGhl
IGtleXMgb2YgdGhlIG9iamVjdC9tYXAvaGFzaC4KLS8vIFRha2VuIGZyb20gZ29vZy5vYmplY3Qu
Z2V0S2V5cyBpbiB0aGUgQ2xvc3VyZSBsaWJyYXJ5LgotLy8KLS8vIEBwYXJhbSB7T2JqZWN0fSBv
YmogVGhlIG9iamVjdCBmcm9tIHdoaWNoIHRvIGdldCB0aGUga2V5cy4KLS8vIEByZXR1cm4geyFB
cnJheS48c3RyaW5nPn0gQXJyYXkgb2YgcHJvcGVydHkga2V5cy4KLWZ1bmN0aW9uIGdldEtleXMo
b2JqKQotewotICAgIHZhciByZXMgPSBbXTsKLSAgICBmb3IgKHZhciBrZXkgaW4gb2JqKQotICAg
ICAgICByZXMucHVzaChrZXkpOwotICAgIHJldHVybiByZXM7Ci19Ci0KIC8vIFJldHVybnMgdGhl
IGFwcHJvcHJpYXRlIGV4cGVjdGF0aW9zbiBtYXAgZm9yIHRoZSBjdXJyZW50IHRlc3RUeXBlLgot
ZnVuY3Rpb24gZ2V0RXhwZWN0YXRpb25zTWFwKCkKK2Z1bmN0aW9uIGV4cGVjdGF0aW9uc01hcCgp
CiB7CiAgICAgcmV0dXJuIGlzTGF5b3V0VGVzdFJlc3VsdHMoKSA/IExBWU9VVF9URVNUX0VYUEVD
VEFUSU9OU19NQVBfIDogR1RFU1RfRVhQRUNUQVRJT05TX01BUF87CiB9CkBAIC04MTEsNyArNzk4
LDcgQEAgZnVuY3Rpb24gc2VsZWN0SFRNTChsYWJlbCwgcXVlcnlQYXJhbWV0ZXIsIG9wdGlvbnMp
CiB9CiAKIC8vIFJldHVybnMgdGhlIEhUTUwgZm9yIHRoZSBzZWxlY3QgZWxlbWVudCB0byBzd2l0
Y2ggdG8gZGlmZmVyZW50IHRlc3RUeXBlcy4KLWZ1bmN0aW9uIGdldEhUTUxGb3JUZXN0VHlwZVN3
aXRjaGVyKG9wdF9ub0J1aWxkZXJNZW51LCBvcHRfZXh0cmFIdG1sLCBvcHRfaW5jbHVkZU5vbmVC
dWlsZGVyKQorZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlU3dpdGNoZXIob3B0X25vQnVpbGRlck1l
bnUsIG9wdF9leHRyYUh0bWwsIG9wdF9pbmNsdWRlTm9uZUJ1aWxkZXIpCiB7CiAgICAgdmFyIGh0
bWwgPSAnPGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggZGFzaGVkIj4nOwogICAgIGh0bWwg
Kz0gJycgKwpAQCAtODMwLDcgKzgxNyw3IEBAIGZ1bmN0aW9uIGdldEhUTUxGb3JUZXN0VHlwZVN3
aXRjaGVyKG9wdF9ub0J1aWxkZXJNZW51LCBvcHRfZXh0cmFIdG1sLCBvcHRfaW5jbHVkCiAgICAg
fQogCiAgICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkKLSAgICAgICAgaHRtbCArPSBzZWxl
Y3RIVE1MKCdHcm91cCcsICdncm91cCcsIGdldEtleXMoTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JP
VVBTKSk7CisgICAgICAgIGh0bWwgKz0gc2VsZWN0SFRNTCgnR3JvdXAnLCAnZ3JvdXAnLCBPYmpl
Y3Qua2V5cyhMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9VUFMpKTsKIAogICAgIGlmICghaXNUcmVl
TWFwKCkpCiAgICAgICAgIGh0bWwgKz0gY2hlY2tib3hIVE1MKCdzaG93QWxsUnVucycsICdTaG93
IGFsbCBydW5zJywgZ19jdXJyZW50U3RhdGUuc2hvd0FsbFJ1bnMpOwpAQCAtODY4LDMyICs4NTUs
MzIgQEAgZnVuY3Rpb24gaHRtbEZvckRhc2hib2FyZExpbmsoaHRtbCwgZmlsZU5hbWUpCiAgICAg
cmV0dXJuIGh0bWxGb3JUb3BMaW5rKGh0bWwsIG9uQ2xpY2ssIGlzU2VsZWN0ZWQpOwogfQogCi1m
dW5jdGlvbiBnZXRSZXZpc2lvbkxpbmsocmVzdWx0cywgaW5kZXgsIGtleSwgc2luZ2xlVXJsVGVt
cGxhdGUsIHJhbmdlVXJsVGVtcGxhdGUpCitmdW5jdGlvbiByZXZpc2lvbkxpbmsocmVzdWx0cywg
aW5kZXgsIGtleSwgc2luZ2xlVXJsVGVtcGxhdGUsIHJhbmdlVXJsVGVtcGxhdGUpCiB7CiAgICAg
dmFyIGN1cnJlbnRSZXZpc2lvbiA9IHBhcnNlSW50KHJlc3VsdHNba2V5XVtpbmRleF0sIDEwKTsK
ICAgICB2YXIgcHJldmlvdXNSZXZpc2lvbiA9IHBhcnNlSW50KHJlc3VsdHNba2V5XVtpbmRleCAr
IDFdLCAxMCk7CiAKLSAgICBmdW5jdGlvbiBnZXRTaW5nbGVVcmwoKQorICAgIGZ1bmN0aW9uIHNp
bmdsZVVybCgpCiAgICAgewogICAgICAgICByZXR1cm4gc2luZ2xlVXJsVGVtcGxhdGUucmVwbGFj
ZSgnPHJldj4nLCBjdXJyZW50UmV2aXNpb24pOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGdldFJh
bmdlVXJsKCkKKyAgICBmdW5jdGlvbiByYW5nZVVybCgpCiAgICAgewogICAgICAgICByZXR1cm4g
cmFuZ2VVcmxUZW1wbGF0ZS5yZXBsYWNlKCc8cmV2MT4nLCBjdXJyZW50UmV2aXNpb24pLnJlcGxh
Y2UoJzxyZXYyPicsIHByZXZpb3VzUmV2aXNpb24gKyAxKTsKICAgICB9CiAKICAgICBpZiAoY3Vy
cmVudFJldmlzaW9uID09IHByZXZpb3VzUmV2aXNpb24pCi0gICAgICAgIHJldHVybiAnQXQgPGEg
aHJlZj0iJyArIGdldFNpbmdsZVVybCgpICsgJyI+cicgKyBjdXJyZW50UmV2aXNpb24gICAgKyAn
PC9hPic7CisgICAgICAgIHJldHVybiAnQXQgPGEgaHJlZj0iJyArIHNpbmdsZVVybCgpICsgJyI+
cicgKyBjdXJyZW50UmV2aXNpb24gICAgKyAnPC9hPic7CiAgICAgZWxzZSBpZiAoY3VycmVudFJl
dmlzaW9uIC0gcHJldmlvdXNSZXZpc2lvbiA9PSAxKQotICAgICAgICByZXR1cm4gJzxhIGhyZWY9
IicgKyBnZXRTaW5nbGVVcmwoKSArICciPnInICsgY3VycmVudFJldmlzaW9uICAgICsgJzwvYT4n
OworICAgICAgICByZXR1cm4gJzxhIGhyZWY9IicgKyBzaW5nbGVVcmwoKSArICciPnInICsgY3Vy
cmVudFJldmlzaW9uICAgICsgJzwvYT4nOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuICc8YSBo
cmVmPSInICsgZ2V0UmFuZ2VVcmwoKSArICciPnInICsgKHByZXZpb3VzUmV2aXNpb24gKyAxKSAr
ICcgdG8gcicgKyBjdXJyZW50UmV2aXNpb24gKyAnPC9hPic7CisgICAgICAgIHJldHVybiAnPGEg
aHJlZj0iJyArIHJhbmdlVXJsKCkgKyAnIj5yJyArIChwcmV2aW91c1JldmlzaW9uICsgMSkgKyAn
IHRvIHInICsgY3VycmVudFJldmlzaW9uICsgJzwvYT4nOwogfQogCi1mdW5jdGlvbiBnZXRDaHJv
bWl1bVJldmlzaW9uTGluayhyZXN1bHRzLCBpbmRleCkKK2Z1bmN0aW9uIGNocm9taXVtUmV2aXNp
b25MaW5rKHJlc3VsdHMsIGluZGV4KQogewotICAgIHJldHVybiBnZXRSZXZpc2lvbkxpbmsoCisg
ICAgcmV0dXJuIHJldmlzaW9uTGluaygKICAgICAgICAgcmVzdWx0cywKICAgICAgICAgaW5kZXgs
CiAgICAgICAgIENIUk9NRV9SRVZJU0lPTlNfS0VZLApAQCAtOTAxLDkgKzg4OCw5IEBAIGZ1bmN0
aW9uIGdldENocm9taXVtUmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KQogICAgICAgICAnaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL3BlcmYvZGFzaGJvYXJkL3VpL2NoYW5n
ZWxvZy5odG1sP3VybD0vdHJ1bmsvc3JjJnJhbmdlPTxyZXYyPjo8cmV2MT4mbW9kZT1odG1sJyk7
CiB9CiAKLWZ1bmN0aW9uIGdldFdlYktpdFJldmlzaW9uTGluayhyZXN1bHRzLCBpbmRleCkKK2Z1
bmN0aW9uIHdlYktpdFJldmlzaW9uTGluayhyZXN1bHRzLCBpbmRleCkKIHsKLSAgICByZXR1cm4g
Z2V0UmV2aXNpb25MaW5rKAorICAgIHJldHVybiByZXZpc2lvbkxpbmsoCiAgICAgICAgIHJlc3Vs
dHMsCiAgICAgICAgIGluZGV4LAogICAgICAgICBXRUJLSVRfUkVWSVNJT05TX0tFWSwKQEAgLTky
Myw3ICs5MTAsNyBAQCBmdW5jdGlvbiBnZXRXZWJLaXRSZXZpc2lvbkxpbmsocmVzdWx0cywgaW5k
ZXgpCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNpZGVyZWQgZmxha3kg
KG1vcmUgdGhhbiBvbmUgc2luZ2xlLWJ1aWxkIGZhaWx1cmUpLgogLy8gICAgIC0gZmxha3lEZWx0
YXNCeUJ1aWxkOiBhcnJheSBvZiBidWlsZHMsIGZvciBlYWNoIGJ1aWxkIGEgY291bnQgb2YgZmxh
a3kKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3QgcmVzdWx0cyBieSBleHBlY3RhdGlvbiwgYXMgd2VsbCBhcyBhIHRvdGFsLgotZnVuY3Rpb24g
Z2V0VGVzdFJlc3VsdHNCeUJ1aWxkKGJ1aWxkZXJSZXN1bHRzKQorZnVuY3Rpb24gdGVzdFJlc3Vs
dHNCeUJ1aWxkKGJ1aWxkZXJSZXN1bHRzKQogewogICAgIHZhciBidWlsZGVyVGVzdFJlc3VsdHMg
PSBidWlsZGVyUmVzdWx0c1tURVNUU19LRVldOwogICAgIHZhciBidWlsZENvdW50ID0gYnVpbGRl
clJlc3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXS5sZW5ndGg7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRt
bCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rh
c2hib2FyZC5odG1sCmluZGV4IGNiZGIwNGQ1NzQ5ZjMyYTI1NjRkNzc3OWEzMjI0NTFiZjRkYzdj
MWMuLjRjYzcyMzQ3ZDNmMjQ4NTUxNGRjYjU2NmMzY2ViNDRiM2MxZmFkMTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hi
b2FyZC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMv
Zmxha2luZXNzX2Rhc2hib2FyZC5odG1sCkBAIC01NTQsNyArNTU0LDcgQEAgZnVuY3Rpb24gZXhw
ZWN0YXRpb25zRmlsZVN0cmluZ0ZvclJlc3VsdChyZXN1bHQpCiAgICAgaWYgKHJlc3VsdCA9PSAn
TicpCiAgICAgICAgIHJldHVybiAnJzsKIAotICAgIHJldHVybiBnZXRFeHBlY3RhdGlvbnNNYXAo
KVtyZXN1bHRdOworICAgIHJldHVybiBleHBlY3RhdGlvbnNNYXAoKVtyZXN1bHRdOwogfQogCiAv
LyBNYXAgb2YgYWxsIHRlc3RzIHRvIHRydWUgdmFsdWVzLiBUaGlzIGlzIGp1c3Qgc28gd2UgY2Fu
IGhhdmUgdGhlIGxpc3Qgb2YKQEAgLTk4Niw3ICs5ODYsNyBAQCBmdW5jdGlvbiBwcm9jZXNzVGVz
dFJ1bnNGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQogICAgICAgICB2YXIgcmF3UmVzdWx0cyA9IHJh
d1Rlc3QucmVzdWx0czsKICAgICAgICAgcmVzdWx0c0ZvclRlc3QucmF3UmVzdWx0cyA9IHJhd1Jl
c3VsdHM7CiAKLSAgICAgICAgLy8gRklYTUU6IFN3aXRjaCB0byBnZXRUZXN0UmVzdWx0c0J5QnVp
bGQKKyAgICAgICAgLy8gRklYTUU6IFN3aXRjaCB0byB0ZXN0UmVzdWx0c0J5QnVpbGQKICAgICAg
ICAgdmFyIHRpbWVzID0gcmVzdWx0c0ZvclRlc3QucmF3VGltZXM7CiAgICAgICAgIHZhciBudW1U
aW1lc1NlZW4gPSAwOwogICAgICAgICB2YXIgbnVtUmVzdWx0c1NlZW4gPSAwOwpAQCAtMTE5Nyw3
ICsxMTk3LDcgQEAgZnVuY3Rpb24gbGlua0hUTUxUb09wZW5XaW5kb3codXJsLCB0ZXh0KQogICAg
IHJldHVybiAnPGRpdiBjbGFzcz1saW5rIG9uY2xpY2s9IndpbmRvdy5vcGVuKFwnJyArIHVybCAr
ICdcJykiPicgKyB0ZXh0ICsgJzwvZGl2Pic7CiB9CiAKLS8vIEZJWE1FOiByZXBsYWNlZCB3aXRo
IGdldENocm9taXVtUmV2aXNpb25MaW5rL2dldFdlYktpdFJldmlzaW9uTGluaworLy8gRklYTUU6
IHJlcGxhY2VkIHdpdGggY2hyb21pdW1SZXZpc2lvbkxpbmsvd2ViS2l0UmV2aXNpb25MaW5rCiBm
dW5jdGlvbiBjcmVhdGVCbGFtZUxpc3RIVE1MKHJldmlzaW9ucywgaW5kZXgsIHVybEJhc2UsIHNl
cGFyYXRvciwgcmVwbykKIHsKICAgICB2YXIgdGhpc1JldmlzaW9uID0gcmV2aXNpb25zW2luZGV4
XTsKQEAgLTEyNjIsOCArMTI2Miw4IEBAIGZ1bmN0aW9uIHNob3dQb3B1cEZvckJ1aWxkKGUsIGJ1
aWxkZXIsIGluZGV4LCBvcHRfdGVzdE5hbWUpCiAgICAgfQogCiAgICAgdmFyIGJ1aWxkTnVtYmVy
ID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLmJ1aWxkTnVtYmVyc1tpbmRleF07Ci0gICAg
dmFyIGJ1aWxkZXJNYXN0ZXIgPSBnZXRCdWlsZGVyTWFzdGVyKGJ1aWxkZXIpOwotICAgIHZhciBi
dWlsZEJhc2VQYXRoID0gYnVpbGRlck1hc3Rlci5nZXRMb2dQYXRoKGJ1aWxkZXIsIGJ1aWxkTnVt
YmVyKTsKKyAgICB2YXIgbWFzdGVyID0gYnVpbGRlck1hc3RlcihidWlsZGVyKTsKKyAgICB2YXIg
YnVpbGRCYXNlUGF0aCA9IG1hc3Rlci5nZXRMb2dQYXRoKGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKTsK
IAogICAgIGh0bWwgKz0gJzx1bD48bGk+JyArIGxpbmtIVE1MVG9PcGVuV2luZG93KGJ1aWxkQmFz
ZVBhdGgsICdCdWlsZCBsb2cnKSArCiAgICAgICAgICc8L2xpPjxsaT4nICsKQEAgLTEyNzIsNyAr
MTI3Miw3IEBAIGZ1bmN0aW9uIHNob3dQb3B1cEZvckJ1aWxkKGUsIGJ1aWxkZXIsIGluZGV4LCBv
cHRfdGVzdE5hbWUpCiAgICAgICAgICAgICAnV2ViS2l0JykgKwogICAgICAgICAnPC9saT4nOwog
Ci0gICAgaWYgKGJ1aWxkZXJNYXN0ZXIgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CisgICAg
aWYgKG1hc3RlciA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKICAgICAgICAgdmFyIHJldmlz
aW9uID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLndlYmtpdFJldmlzaW9uW2luZGV4XTsK
ICAgICAgICAgaHRtbCArPSAnPGxpPjxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVlcnlQ
YXJhbWV0ZXIoXCdyZXZpc2lvblwnLCcgKwogICAgICAgICAgICAgcmV2aXNpb24gKyAnKSI+U2hv
dyByZXN1bHRzIGZvciBXZWJLaXQgcicgKyByZXZpc2lvbiArCkBAIC0xMzEyLDcgKzEzMTIsNyBA
QCBmdW5jdGlvbiBodG1sRm9yVGVzdFJlc3VsdHModGVzdCkKICAgICB2YXIgcmVzdWx0cyA9IHRl
c3QucmF3UmVzdWx0cy5jb25jYXQoKTsKICAgICB2YXIgdGltZXMgPSB0ZXN0LnJhd1RpbWVzLmNv
bmNhdCgpOwogICAgIHZhciBidWlsZGVyID0gdGVzdC5idWlsZGVyOwotICAgIHZhciBidWlsZGVy
TWFzdGVyID0gZ2V0QnVpbGRlck1hc3RlcihidWlsZGVyKTsKKyAgICB2YXIgbWFzdGVyID0gYnVp
bGRlck1hc3RlcihidWlsZGVyKTsKICAgICB2YXIgYnVpbGROdW1iZXJzID0gZ19yZXN1bHRzQnlC
dWlsZGVyW2J1aWxkZXJdLmJ1aWxkTnVtYmVyczsKIAogICAgIHZhciBpbmRleFRvUmVwbGFjZUN1
cnJlbnRSZXN1bHQgPSAtMTsKQEAgLTEzNDksNyArMTM0OSw3IEBAIGZ1bmN0aW9uIGh0bWxGb3JU
ZXN0UmVzdWx0cyh0ZXN0KQogICAgICAgICB2YXIgZXh0cmFDbGFzc05hbWVzID0gJyc7CiAgICAg
ICAgIHZhciB3ZWJraXRSZXZpc2lvbiA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS53ZWJr
aXRSZXZpc2lvbjsKICAgICAgICAgdmFyIGlzV2Via2l0TWVyZ2UgPSB3ZWJraXRSZXZpc2lvbltp
ICsgMV0gJiYgd2Via2l0UmV2aXNpb25baV0gIT0gd2Via2l0UmV2aXNpb25baSArIDFdOwotICAg
ICAgICBpZiAoaXNXZWJraXRNZXJnZSAmJiBidWlsZGVyTWFzdGVyICE9IFdFQktJVF9CVUlMREVS
X01BU1RFUikKKyAgICAgICAgaWYgKGlzV2Via2l0TWVyZ2UgJiYgbWFzdGVyICE9IFdFQktJVF9C
VUlMREVSX01BU1RFUikKICAgICAgICAgICAgIGV4dHJhQ2xhc3NOYW1lcyArPSAnIG1lcmdlJzsK
IAogICAgICAgICBodG1sICs9ICc8dGQgdGl0bGU9IicgKyAocmVzdWx0U3RyaW5nIHx8ICdOTyBE
QVRBJykgKyAnLiBDbGljayBmb3IgbW9yZSBpbmZvLiIgY2xhc3M9InJlc3VsdHMgJyArIGN1cnJl
bnRSZXN1bHQgKwpAQCAtMTY2NywxNCArMTY2NywxNCBAQCBmdW5jdGlvbiBhZGRVcGRhdGUodGVz
dHNOZWVkaW5nVXBkYXRlLCB0ZXN0LCBidWlsZGVyTmFtZSwgbWlzc2luZywgZXh0cmEpCiAvLyAg
ICAgdGhlIHJlc3VsdHMuCiBmdW5jdGlvbiByZWFsTW9kaWZpZXJzKG1vZGlmaWVyU3RyaW5nKQog
ewotICAgIHZhciByZWFsTW9kaWZpZXJzID0gW107CisgICAgdmFyIG5ld01vZGlmaWVycyA9IFtd
OwogICAgIHZhciBtb2RpZmllcnMgPSBtb2RpZmllclN0cmluZy5zcGxpdCgnICcpOzsKICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IG1vZGlmaWVycy5sZW5ndGg7IGorKykgewogICAgICAgICB2YXIg
bW9kaWZpZXIgPSBtb2RpZmllcnNbal07CiAgICAgICAgIGlmICghKG1vZGlmaWVyIGluIEJVSUxE
X1RZUEVTKSAmJiAhKG1vZGlmaWVyIGluIFBMQVRGT1JNUykgJiYgIXN0YXJ0c1dpdGgobW9kaWZp
ZXIsICdCVUcnKSkKLSAgICAgICAgICAgIHJlYWxNb2RpZmllcnMucHVzaChtb2RpZmllcik7Cisg
ICAgICAgICAgICBuZXdNb2RpZmllcnMucHVzaChtb2RpZmllcik7CiAgICAgfQotICAgIHJldHVy
biByZWFsTW9kaWZpZXJzLmpvaW4oJyAnKTsKKyAgICByZXR1cm4gbmV3TW9kaWZpZXJzLmpvaW4o
JyAnKTsKIH0KIAogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRpb25zVXBkYXRlKCkK
QEAgLTE3MDYsMTYgKzE3MDYsMTYgQEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRp
b25zVXBkYXRlKCkKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkr
KykgewogICAgICAgICAgICAgLy8gQW55dGhpbmcgZXh0cmEgaW4gdGhpcyBjYXNlIGlzIHdoYXQg
aXMgbGlzdGVkIGluIGV4cGVjdGF0aW9ucwogICAgICAgICAgICAgLy8gcGx1cyBtb2RpZmllcnMg
b3RoZXIgdGhhbiBidWcsIHBsYXRmb3JtLCBidWlsZCB0eXBlLgotICAgICAgICAgICAgdmFyIHJl
YWxNb2RpZmllcnMgPSByZWFsTW9kaWZpZXJzKHRlc3RzW2ldLm1vZGlmaWVycyk7CisgICAgICAg
ICAgICB2YXIgbW9kaWZpZXJzID0gcmVhbE1vZGlmaWVycyh0ZXN0c1tpXS5tb2RpZmllcnMpOwog
ICAgICAgICAgICAgdmFyIGV4dHJhcyA9IHRlc3RzW2ldLmV4cGVjdGF0aW9uczsKLSAgICAgICAg
ICAgIGV4dHJhcyArPSByZWFsTW9kaWZpZXJzID8gJyAnICsgcmVhbE1vZGlmaWVycyA6ICcnOwor
ICAgICAgICAgICAgZXh0cmFzICs9IG1vZGlmaWVycyA/ICcgJyArIG1vZGlmaWVycyA6ICcnOwog
ICAgICAgICAgICAgYWRkVXBkYXRlKHRlc3RzTmVlZGluZ1VwZGF0ZSwgdGVzdHNbaV0udGVzdCwg
YnVpbGRlciwgbnVsbCwgZXh0cmFzKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEdldCB0
aGUga2V5cyBpbiBhbHBoYWJldGljYWwgb3JkZXIsIHNvIGl0IGlzIGVhc3kgdG8gcHJvY2VzcyBn
cm91cHMKICAgICAvLyBvZiB0ZXN0cy4KLSAgICB2YXIga2V5cyA9IGdldEtleXModGVzdHNOZWVk
aW5nVXBkYXRlKS5zb3J0KCk7CisgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0ZXN0c05lZWRp
bmdVcGRhdGUpLnNvcnQoKTsKICAgICBzaG93VXBkYXRlSW5mb0ZvclRlc3QodGVzdHNOZWVkaW5n
VXBkYXRlLCBrZXlzKTsKIH0KIApAQCAtMTgxNiw3ICsxODE2LDcgQEAgZnVuY3Rpb24gaGFuZGxl
VXBkYXRlKHRlc3RzTmVlZGluZ1VwZGF0ZSwga2V5cykKICAgICAgICAgICAgIGdfY29uZmlybWVk
VGVzdHNbdGVzdF1bYnVpbGRlcl0gPSB0ZXN0c05lZWRpbmdVcGRhdGVbdGVzdF1bYnVpbGRlcl07
CiAgICAgICAgIH0gZWxzZSBpZiAoZ19jb25maXJtZWRUZXN0c1t0ZXN0XSAmJiBnX2NvbmZpcm1l
ZFRlc3RzW3Rlc3RdW2J1aWxkZXJdKSB7CiAgICAgICAgICAgICBkZWxldGUgZ19jb25maXJtZWRU
ZXN0c1t0ZXN0XVtidWlsZGVyXTsKLSAgICAgICAgICAgIGlmICghZ2V0S2V5cyhnX2NvbmZpcm1l
ZFRlc3RzW3Rlc3RdKS5sZW5ndGgpCisgICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGdfY29u
ZmlybWVkVGVzdHNbdGVzdF0pLmxlbmd0aCkKICAgICAgICAgICAgICAgICBkZWxldGUgZ19jb25m
aXJtZWRUZXN0c1t0ZXN0XTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4NTMsMTAgKzE4NTMsMTAg
QEAgZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKHRlc3QpCiAgICAg
cHJvY2Vzc1Rlc3RSdW5zRm9yQWxsQnVpbGRlcnMoKTsKIAogICAgIHZhciB0ZXN0UmVzdWx0cyA9
IGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XTsKLSAgICB2YXIgYnVpbGRlck1hc3RlcjsKKyAgICB2
YXIgbWFzdGVyOwogICAgIHZhciBodG1sID0gJyc7CiAgICAgaWYgKHRlc3RSZXN1bHRzICYmIHRl
c3RSZXN1bHRzLmxlbmd0aCkgewotICAgICAgICBidWlsZGVyTWFzdGVyID0gZ2V0QnVpbGRlck1h
c3Rlcih0ZXN0UmVzdWx0c1swXS5idWlsZGVyKTsKKyAgICAgICAgbWFzdGVyID0gYnVpbGRlck1h
c3Rlcih0ZXN0UmVzdWx0c1swXS5idWlsZGVyKTsKICAgICAgICAgaWYgKGlzTGF5b3V0VGVzdFJl
c3VsdHMoKSkgewogICAgICAgICAgICAgdmFyIHRyYWNVUkwgPSBURVNUX1VSTF9CQVNFX1BBVEhf
VFJBQyArIHRlc3QKICAgICAgICAgICAgIGh0bWwgKz0gbGlua0hUTUxUb09wZW5XaW5kb3codHJh
Y1VSTCwgdHJhY1VSTCk7CkBAIC0xODg1LDcgKzE4ODUsNyBAQCBmdW5jdGlvbiBodG1sRm9ySW5k
aXZpZHVsVGVzdE9uQWxsQnVpbGRlcnModGVzdCkKIAogICAgIGlmIChpc0xheW91dFRlc3RSZXN1
bHRzKCkpIHsKICAgICAgICAgaHRtbCArPSAnIHwgJyArIGxpbmtIVE1MVG9Ub2dnbGVTdGF0ZSgn
c2hvd0xhcmdlRXhwZWN0YXRpb25zJywgJ2xhcmdlIHRodW1ibmFpbHMnKTsKLSAgICAgICAgaWYg
KGJ1aWxkZXJNYXN0ZXIgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CisgICAgICAgIGlmICht
YXN0ZXIgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CiAgICAgICAgICAgICB2YXIgcmV2aXNp
b24gPSBnX2N1cnJlbnRTdGF0ZS5yZXZpc2lvbiB8fCAnJzsKICAgICAgICAgICAgIGh0bWwgKz0g
Jzxmb3JtIG9uc3VibWl0PSJzZXRRdWVyeVBhcmFtZXRlcihcJ3JldmlzaW9uXCcsIHJldmlzaW9u
LnZhbHVlKTsnICsKICAgICAgICAgICAgICAgICAncmV0dXJuIGZhbHNlOyI+U2hvdyByZXN1bHRz
IGZvciBXZWJLaXQgcmV2aXNpb246ICcgKwpAQCAtMjE4Miw3ICsyMTgyLDcgQEAgZnVuY3Rpb24g
bG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9u
c0NvbnRhaW5lcikKICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXY+PGI+JyArIGJ1aWxk
ZXIgKyAnPC9iPjwvZGl2Pic7CiAgICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFwcGVuZENoaWxk
KGNvbnRhaW5lcik7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmYWlsdXJlcy5sZW5ndGg7IGkr
KykgewotICAgICAgICB2YXIgcGF0aFRvTG9nID0gZ2V0QnVpbGRlck1hc3RlcihidWlsZGVyKS5n
ZXRMb2dQYXRoKGJ1aWxkZXIsIGZhaWx1cmVzW2ldKSArIHBhdGhUb0ZhaWx1cmVMb2codGVzdCk7
CisgICAgICAgIHZhciBwYXRoVG9Mb2cgPSBidWlsZGVyTWFzdGVyKGJ1aWxkZXIpLmdldExvZ1Bh
dGgoYnVpbGRlciwgZmFpbHVyZXNbaV0pICsgcGF0aFRvRmFpbHVyZUxvZyh0ZXN0KTsKICAgICAg
ICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHBhdGhUb0xvZyk7CiAgICAgfQog
fQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgZnVuY3Rpb24gbG9hZEV4cGVjdGF0aW9uc0xheW91dFRl
c3RzKGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKICAgICByZXZpc2lvbkNvbnRhaW5lci50ZXh0Q29u
dGVudCA9ICJTaG93aW5nIHJlc3VsdHMgZm9yOiAiCiAgICAgZXhwZWN0YXRpb25zQ29udGFpbmVy
LmFwcGVuZENoaWxkKHJldmlzaW9uQ29udGFpbmVyKTsKICAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGdfYnVpbGRlcnMpIHsKLSAgICAgICAgaWYgKGdldEJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikgPT0g
V0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CisgICAgICAgIGlmIChidWlsZGVyTWFzdGVyKGJ1aWxk
ZXIpID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIGxhdGVzdFJl
dmlzaW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgZ19yZXN1bHRzQnlCdWlsZGVyW2J1
aWxkZXJdLndlYmtpdFJldmlzaW9uWzBdOwogICAgICAgICAgICAgdmFyIGJ1aWxkSW5mbyA9IGJ1
aWxkSW5mb0ZvclJldmlzaW9uKGJ1aWxkZXIsIGxhdGVzdFJldmlzaW9uKTsKICAgICAgICAgICAg
IHZhciByZXZpc2lvbkluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKQEAgLTIy
NzIsNyArMjI3Miw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyhleHBl
Y3RhdGlvbnNDb250YWluZXIpCiAKICAgICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMp
IHsKICAgICAgICAgdmFyIGFjdHVhbFJlc3VsdHNCYXNlOwotICAgICAgICBpZiAoZ2V0QnVpbGRl
ck1hc3RlcihidWlsZGVyKSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKKyAgICAgICAgaWYg
KGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CiAgICAg
ICAgICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2N1cnJlbnRTdGF0ZS5yZXZpc2lvbiB8fCBn
X3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2aXNpb25bMF07CiAgICAgICAgICAg
ICB2YXIgYnVpbGRJbmZvID0gYnVpbGRJbmZvRm9yUmV2aXNpb24oYnVpbGRlciwgbGF0ZXN0UmV2
aXNpb24pOwogICAgICAgICAgICAgYWN0dWFsUmVzdWx0c0Jhc2UgPSAnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvcmVzdWx0cy8nICsgYnVpbGRlciArCkBAIC0yMzc1LDcgKzIzNzUsNyBAQCBmdW5j
dGlvbiBodG1sRm9yTmF2QmFyKCkKICAgICBpZiAoIWlzQ3Jvc3NCdWlsZGVyVmlldygpKQogICAg
ICAgICBleHRyYUhUTUwgKz0gY2hlY2tib3hIVE1MKCdzaG93UnVuc09uQnVpbGRlclBhZ2UnLCAn
U2hvdyBmbGFraW5lc3MgZGV0YWlscycsIGdfY3VycmVudFN0YXRlLnNob3dSdW5zT25CdWlsZGVy
UGFnZSk7CiAKLSAgICB2YXIgaHRtbCA9IGdldEhUTUxGb3JUZXN0VHlwZVN3aXRjaGVyKGZhbHNl
LCBleHRyYUhUTUwsIGlzQ3Jvc3NCdWlsZGVyVmlldygpKTsKKyAgICB2YXIgaHRtbCA9IGh0bWxG
b3JUZXN0VHlwZVN3aXRjaGVyKGZhbHNlLCBleHRyYUhUTUwsIGlzQ3Jvc3NCdWlsZGVyVmlldygp
KTsKICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPWZvcm1zPjxmb3JtIGlkPXJlc3VsdC1mb3JtICcg
KwogICAgICAgICAnb25zdWJtaXQ9InNldFF1ZXJ5UGFyYW1ldGVyKFwncmVzdWx0XCcsIHJlc3Vs
dC52YWx1ZSk7JyArCiAgICAgICAgICdyZXR1cm4gZmFsc2U7Ij5TaG93IGFsbCB0ZXN0cyB3aXRo
IHJlc3VsdDogJyArCkBAIC0yNTI0LDggKzI1MjQsOCBAQCBmdW5jdGlvbiBzaG93TGVnZW5kKCkK
ICAgICB2YXIgaHRtbCA9ICc8ZGl2IGlkPWxlZ2VuZC10b2dnbGUgb25jbGljaz0iaGlkZUxlZ2Vu
ZCgpIj5IaWRlICcgKwogICAgICAgICAnbGVnZW5kIFt0eXBlIGVzY108L2Rpdj48ZGl2Pk51bWJl
ciBvZiBmbGFreSB0ZXN0cyBsaXN0ZWQgbmV4dCB0byAnICsKICAgICAgICAgJ2VhY2ggYnVpbGRl
cjwvZGl2PjxkaXYgaWQ9bGVnZW5kLWNvbnRlbnRzPic7Ci0gICAgZm9yICh2YXIgZXhwZWN0YXRp
b24gaW4gZ2V0RXhwZWN0YXRpb25zTWFwKCkpCi0gICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9
JyArIGV4cGVjdGF0aW9uICsgJz4nICsgZ2V0RXhwZWN0YXRpb25zTWFwKClbZXhwZWN0YXRpb25d
ICsgJzwvZGl2Pic7CisgICAgZm9yICh2YXIgZXhwZWN0YXRpb24gaW4gZXhwZWN0YXRpb25zTWFw
KCkpCisgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9JyArIGV4cGVjdGF0aW9uICsgJz4nICsg
ZXhwZWN0YXRpb25zTWFwKClbZXhwZWN0YXRpb25dICsgJzwvZGl2Pic7CiAKICAgICBodG1sICs9
ICc8ZGl2IGNsYXNzPW1lcmdlPldFQktJVCBNRVJHRTwvZGl2Pic7CiAgICAgaWYgKGlzTGF5b3V0
VGVzdFJlc3VsdHMoKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpzIGIvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpz
CmluZGV4IDYyZTIwM2NmNTkyY2M5Yzk2ODEwNDZhZjRiZTliOGQ1M2FhYTNjY2UuLjAxODg3M2Iw
MmRiOGFjMzEyMDcwMWY3OTU4OTllMWRmYzdkNTc5OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF90ZXN0cy5q
cworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVz
c19kYXNoYm9hcmRfdGVzdHMuanMKQEAgLTEsMTY5ICsxLDE2MyBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGVvdmVy
dmlldyBQb29yLW1hbidzIHVuaXR0ZXN0cyBmb3Igc29tZSBvZiB0aGUgdHJpY2tpZXIgbG9naWMg
Yml0cyBvZgotICogdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQuCi0gKgotICogQ3VycmVudGx5IG9u
bHkgdGVzdHMgcHJvY2Vzc0V4cGVjdGF0aW9ucyBhbmQgcG9wdWxhdGVFeHBlY3RhdGlvbnNEYXRh
LgotICogQSB0ZXN0IGp1c3QgY29uc2lzdHMgb2YgY2FsbGluZyBydW5FeHBlY3RhdGlvbnNUZXN0
IHdpdGggdGhlIGFwcHJvcHJpYXRlCi0gKiBhcmd1bWVudHMuCi0gKi8KLQotLy8gVE9ETyhvamFu
KTogQWRkIG1vcmUgdGVzdCBjYXNlcy4KLS8vIFRPRE8ob2phbik6IEFkZCB0ZXN0cyBmb3IgcHJv
Y2Vzc01pc3NpbmdBbmRFeHRyYUV4cGVjdGF0aW9ucwotCi0vKioKLSAqIENsZWFycyBvdXQgdGhl
IGdsb2JhbCBvYmplY3RzIG1vZGlmaWVkIG9yIHVzZWQgYnkgcHJvY2Vzc0V4cGVjdGF0aW9ucyBh
bmQKLSAqIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YS4gQSBiaXQgZ3Jvc3Mgc2luY2UgaXQncyBk
aWdnaW5nIGludG8gaW1wbGVtZW50YXRpb24KLSAqIGRldGFpbHMsIGJ1dCBpdCdzIGdvb2QgZW5v
dWdoIGZvciBub3cuCi0gKi8KLWZ1bmN0aW9uIHNldHVwRXhwZWN0YXRpb25zVGVzdCgpIHsKLSAg
YWxsRXhwZWN0YXRpb25zID0gbnVsbDsKLSAgYWxsVGVzdHMgPSBudWxsOwotICBnX2V4cGVjdGF0
aW9uc0J5VGVzdCA9IHt9OwotICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKLSAgZ19idWlsZGVy
cyA9IHt9OworLy8gQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v
IEBmaWxlb3ZlcnZpZXcgUG9vci1tYW4ncyB1bml0dGVzdHMgZm9yIHNvbWUgb2YgdGhlIHRyaWNr
aWVyIGxvZ2ljIGJpdHMgb2YKKy8vIHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkLgorLy8KKy8vIEN1
cnJlbnRseSBvbmx5IHRlc3RzIHByb2Nlc3NFeHBlY3RhdGlvbnMgYW5kIHBvcHVsYXRlRXhwZWN0
YXRpb25zRGF0YS4KKy8vIEEgdGVzdCBqdXN0IGNvbnNpc3RzIG9mIGNhbGxpbmcgcnVuRXhwZWN0
YXRpb25zVGVzdCB3aXRoIHRoZSBhcHByb3ByaWF0ZQorLy8gYXJndW1lbnRzLgorCisvLyBGSVhN
RTogQWRkIHRlc3RzIGZvciBwcm9jZXNzTWlzc2luZ0FuZEV4dHJhRXhwZWN0YXRpb25zCisKKy8v
IENsZWFycyBvdXQgdGhlIGdsb2JhbCBvYmplY3RzIG1vZGlmaWVkIG9yIHVzZWQgYnkgcHJvY2Vz
c0V4cGVjdGF0aW9ucyBhbmQKKy8vIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YS4gQSBiaXQgZ3Jv
c3Mgc2luY2UgaXQncyBkaWdnaW5nIGludG8gaW1wbGVtZW50YXRpb24KKy8vIGRldGFpbHMsIGJ1
dCBpdCdzIGdvb2QgZW5vdWdoIGZvciBub3cuCitmdW5jdGlvbiBzZXR1cEV4cGVjdGF0aW9uc1Rl
c3QoKQoreworICAgIGFsbEV4cGVjdGF0aW9ucyA9IG51bGw7CisgICAgYWxsVGVzdHMgPSBudWxs
OworICAgIGdfZXhwZWN0YXRpb25zQnlUZXN0ID0ge307CisgICAgZ19yZXN1bHRzQnlCdWlsZGVy
ID0ge307CisgICAgZ19idWlsZGVycyA9IHt9OwogfQogCi0vKioKLSAqIFByb2Nlc3NlcyB0aGUg
ZXhwZWN0YXRpb25zIGZvciBhIHRlc3QgYW5kIGFzc2VydHMgdGhhdCB0aGUgZmluYWwgZXhwZWN0
YXRpb25zCi0gKiBhbmQgbW9kaWZpZXJzIHdlIGFwcGx5IHRvIGEgdGVzdCBtYXRjaCB3aGF0IHdl
IGV4cGVjdC4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZ30gYnVpbGRlciBCdWlsZGVyIHRoZSB0ZXN0
IGlzIHJ1biBvbi4KLSAqIEBwYXJhbSB7c3RyaW5nfSB0ZXN0IFRoZSB0ZXN0IG5hbWUuCi0gKiBA
cGFyYW0ge3N0cmluZ30gZXhwZWN0YXRpb25zIFNvcnRlZCBzdHJpbmcgb2Ygd2hhdCB0aGUgZXhw
ZWN0YXRpb25zIGZvciB0aGlzCi0gKiAgICB0ZXN0IG91Z2h0IHRvIGJlIGZvciB0aGlzIGJ1aWxk
ZXIuCi0gKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZXJzIFNvcnRlZCBzdHJpbmcgb2Ygd2hhdCB0
aGUgbW9kaWZpZXJzIGZvciB0aGlzCi0gKiAgICB0ZXN0IG91Z2h0IHRvIGJlIGZvciB0aGlzIGJ1
aWxkZXIuCi0gKi8KLWZ1bmN0aW9uIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoYnVpbGRlciwgdGVzdCwg
ZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpIHsKLSAgZ19idWlsZGVyc1tidWlsZGVyXSA9IHRydWU7
Ci0KLSAgLy8gUHV0IGluIHNvbWUgZHVtbXkgcmVzdWx0cy4gcHJvY2Vzc0V4cGVjdGF0aW9ucyBl
eHBlY3RzIHRoZSB0ZXN0IHRvIGJlCi0gIC8vIHRoZXJlLgotICB2YXIgdGVzdHMgPSB7fTsKLSAg
dGVzdHNbdGVzdF0gPSB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6IFtbMTAwLCAw
XV19OwotICBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9Owot
Ci0gIHByb2Nlc3NFeHBlY3RhdGlvbnMoKTsKLSAgdmFyIHJlc3VsdHNGb3JUZXN0ID0gY3JlYXRl
UmVzdWx0c09iamVjdEZvclRlc3QodGVzdCwgYnVpbGRlcik7Ci0gIHBvcHVsYXRlRXhwZWN0YXRp
b25zRGF0YShyZXN1bHRzRm9yVGVzdCk7Ci0KLSAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0
LCByZXN1bHRzRm9yVGVzdC5leHBlY3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7Ci0gIGFzc2VydEVx
dWFscyhyZXN1bHRzRm9yVGVzdCwgcmVzdWx0c0ZvclRlc3QubW9kaWZpZXJzLCBtb2RpZmllcnMp
OworLy8gUHJvY2Vzc2VzIHRoZSBleHBlY3RhdGlvbnMgZm9yIGEgdGVzdCBhbmQgYXNzZXJ0cyB0
aGF0IHRoZSBmaW5hbCBleHBlY3RhdGlvbnMKKy8vIGFuZCBtb2RpZmllcnMgd2UgYXBwbHkgdG8g
YSB0ZXN0IG1hdGNoIHdoYXQgd2UgZXhwZWN0LgorLy8KKy8vIEBwYXJhbSB7c3RyaW5nfSBidWls
ZGVyIEJ1aWxkZXIgdGhlIHRlc3QgaXMgcnVuIG9uLgorLy8gQHBhcmFtIHtzdHJpbmd9IHRlc3Qg
VGhlIHRlc3QgbmFtZS4KKy8vIEBwYXJhbSB7c3RyaW5nfSBleHBlY3RhdGlvbnMgU29ydGVkIHN0
cmluZyBvZiB3aGF0IHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoaXMKKy8vICAgICAgICB0ZXN0IG91
Z2h0IHRvIGJlIGZvciB0aGlzIGJ1aWxkZXIuCisvLyBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZXJz
IFNvcnRlZCBzdHJpbmcgb2Ygd2hhdCB0aGUgbW9kaWZpZXJzIGZvciB0aGlzCisvLyAgICAgICAg
dGVzdCBvdWdodCB0byBiZSBmb3IgdGhpcyBidWlsZGVyLgorZnVuY3Rpb24gcnVuRXhwZWN0YXRp
b25zVGVzdChidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKK3sKKyAgICBn
X2J1aWxkZXJzW2J1aWxkZXJdID0gdHJ1ZTsKKworICAgIC8vIFB1dCBpbiBzb21lIGR1bW15IHJl
c3VsdHMuIHByb2Nlc3NFeHBlY3RhdGlvbnMgZXhwZWN0cyB0aGUgdGVzdCB0byBiZQorICAgIC8v
IHRoZXJlLgorICAgIHZhciB0ZXN0cyA9IHt9OworICAgIHRlc3RzW3Rlc3RdID0geydyZXN1bHRz
JzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfTsKKyAgICBnX3Jlc3VsdHNCeUJ1
aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9OworCisgICAgcHJvY2Vzc0V4cGVjdGF0
aW9ucygpOworICAgIHZhciByZXN1bHRzRm9yVGVzdCA9IGNyZWF0ZVJlc3VsdHNPYmplY3RGb3JU
ZXN0KHRlc3QsIGJ1aWxkZXIpOworICAgIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YShyZXN1bHRz
Rm9yVGVzdCk7CisKKyAgICBhc3NlcnRFcXVhbHMocmVzdWx0c0ZvclRlc3QsIHJlc3VsdHNGb3JU
ZXN0LmV4cGVjdGF0aW9ucywgZXhwZWN0YXRpb25zKTsKKyAgICBhc3NlcnRFcXVhbHMocmVzdWx0
c0ZvclRlc3QsIHJlc3VsdHNGb3JUZXN0Lm1vZGlmaWVycywgbW9kaWZpZXJzKTsKIH0KIAotZnVu
Y3Rpb24gYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0LCBhY3R1YWwsIGV4cGVjdGVkKSB7Ci0g
IGlmIChleHBlY3RlZCAhPT0gYWN0dWFsKSB7Ci0gICAgdGhyb3cgRXJyb3IoJ0J1aWxkZXI6ICcg
KyByZXN1bHRzRm9yVGVzdC5idWlsZGVyICsgJyB0ZXN0OiAnICsKLSAgICAgICAgcmVzdWx0c0Zv
clRlc3QudGVzdCArICcgZ290OiAnICsgYWN0dWFsICsgJyBleHBlY3RlZDogJyArIGV4cGVjdGVk
KTsKLSAgfQorZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0LCBhY3R1YWwsIGV4
cGVjdGVkKQoreworICAgIGlmIChleHBlY3RlZCAhPT0gYWN0dWFsKQorICAgICAgICB0aHJvdyBF
cnJvcignQnVpbGRlcjogJyArIHJlc3VsdHNGb3JUZXN0LmJ1aWxkZXIgKyAnIHRlc3Q6ICcgKyBy
ZXN1bHRzRm9yVGVzdC50ZXN0ICsgJyBnb3Q6ICcgKyBhY3R1YWwgKyAnIGV4cGVjdGVkOiAnICsg
ZXhwZWN0ZWQpOwogfQogCi1mdW5jdGlvbiB0aHJvd0Vycm9yKHJlc3VsdHNGb3JUZXN0cywgYWN0
dWFsLCBleHBlY3RlZCkgeworZnVuY3Rpb24gdGhyb3dFcnJvcihyZXN1bHRzRm9yVGVzdHMsIGFj
dHVhbCwgZXhwZWN0ZWQpIHt9CisKK2Z1bmN0aW9uIHRlc3RSZWxlYXNlRmFpbCgpCit7CisgICAg
dmFyIGJ1aWxkZXIgPSAnV2Via2l0JzsKKyAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKKyAg
ICB2YXIgZXhwZWN0YXRpb25zQXJyYXkgPSBbCisgICAgICAgIHsnbW9kaWZpZXJzJzogJ1JFTEVB
U0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfQorICAgIF07CisgICAgZ19leHBlY3RhdGlvbnNC
eVRlc3RbdGVzdF0gPSBleHBlY3RhdGlvbnNBcnJheTsKKyAgICBydW5FeHBlY3RhdGlvbnNUZXN0
KGJ1aWxkZXIsIHRlc3QsICdGQUlMJywgJ1JFTEVBU0UnKTsKIH0KIAotZnVuY3Rpb24gdGVzdFJl
bGVhc2VGYWlsKCkgewotICB2YXIgYnVpbGRlciA9ICdXZWJraXQnOwotICB2YXIgdGVzdCA9ICdm
b28vMS5odG1sJzsKLSAgdmFyIGV4cGVjdGF0aW9uc0FycmF5ID0gWwotICAgIHsnbW9kaWZpZXJz
JzogJ1JFTEVBU0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfQotICBdOwotICBnX2V4cGVjdGF0
aW9uc0J5VGVzdFt0ZXN0XSA9IGV4cGVjdGF0aW9uc0FycmF5OwotICBydW5FeHBlY3RhdGlvbnNU
ZXN0KGJ1aWxkZXIsIHRlc3QsICdGQUlMJywgJ1JFTEVBU0UnKTsKK2Z1bmN0aW9uIHRlc3RSZWxl
YXNlRmFpbERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcigpCit7CisgICAgdmFyIGJ1aWxkZXIgPSAn
V2Via2l0JzsKKyAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKKyAgICB2YXIgZXhwZWN0YXRp
b25zQXJyYXkgPSBbCisgICAgICAgIHsnbW9kaWZpZXJzJzogJ1JFTEVBU0UnLCAnZXhwZWN0YXRp
b25zJzogJ0ZBSUwnfSwKKyAgICAgICAgeydtb2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRp
b25zJzogJ0NSQVNIJ30KKyAgICBdOworICAgIGdfZXhwZWN0YXRpb25zQnlUZXN0W3Rlc3RdID0g
ZXhwZWN0YXRpb25zQXJyYXk7CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0
LCAnRkFJTCcsICdSRUxFQVNFJyk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RSZWxlYXNlRmFpbERlYnVn
Q3Jhc2hSZWxlYXNlQnVpbGRlcigpIHsKLSAgdmFyIGJ1aWxkZXIgPSAnV2Via2l0JzsKLSAgdmFy
IHRlc3QgPSAnZm9vLzEuaHRtbCc7Ci0gIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsKLSAgICB7
J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCi0gICAgeydt
b2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30KLSAgXTsKLSAgZ19l
eHBlY3RhdGlvbnNCeVRlc3RbdGVzdF0gPSBleHBlY3RhdGlvbnNBcnJheTsKLSAgcnVuRXhwZWN0
YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CitmdW5jdGlvbiB0
ZXN0UmVsZWFzZUZhaWxEZWJ1Z0NyYXNoRGVidWdCdWlsZGVyKCkKK3sKKyAgICB2YXIgYnVpbGRl
ciA9ICdXZWJraXQoZGJnKSc7CisgICAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7CisgICAgdmFy
IGV4cGVjdGF0aW9uc0FycmF5ID0gWworICAgICAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywg
J2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCisgICAgICAgIHsnbW9kaWZpZXJzJzogJ0RFQlVHJywg
J2V4cGVjdGF0aW9ucyc6ICdDUkFTSCd9CisgICAgXTsKKyAgICBnX2V4cGVjdGF0aW9uc0J5VGVz
dFt0ZXN0XSA9IGV4cGVjdGF0aW9uc0FycmF5OworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoYnVp
bGRlciwgdGVzdCwgJ0NSQVNIJywgJ0RFQlVHJyk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RSZWxlYXNl
RmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxkZXIoKSB7Ci0gIHZhciBidWlsZGVyID0gJ1dlYmtpdChk
YmcpJzsKLSAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7Ci0gIHZhciBleHBlY3RhdGlvbnNBcnJh
eSA9IFsKLSAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlM
J30sCi0gICAgeydtb2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30K
LSAgXTsKLSAgZ19leHBlY3RhdGlvbnNCeVRlc3RbdGVzdF0gPSBleHBlY3RhdGlvbnNBcnJheTsK
LSAgcnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnQ1JBU0gnLCAnREVCVUcnKTsK
K2Z1bmN0aW9uIHRlc3RPdmVycmlkZUp1c3RCdWlsZFR5cGUoKQoreworICAgIHZhciB0ZXN0ID0g
J2Jhci8xLmh0bWwnOworICAgIGdfZXhwZWN0YXRpb25zQnlUZXN0WydiYXInXSA9IFsKKyAgICAg
ICAgeydtb2RpZmllcnMnOiAnV09OVEZJWCcsICdleHBlY3RhdGlvbnMnOiAnRkFJTCBQQVNTIFRJ
TUVPVVQnfQorICAgIF07CisgICAgZ19leHBlY3RhdGlvbnNCeVRlc3RbdGVzdF0gPSBbCisgICAg
ICAgIHsnbW9kaWZpZXJzJzogJ1dPTlRGSVggTUFDJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30s
CisgICAgICAgIHsnbW9kaWZpZXJzJzogJ0xJTlVYIERFQlVHJywgJ2V4cGVjdGF0aW9ucyc6ICdD
UkFTSCd9LAorICAgIF07CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0JywgdGVzdCwg
J0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgnKTsKKyAgICBydW5FeHBlY3RhdGlvbnNUZXN0
KCdXZWJraXQgKGRiZykoMyknLCB0ZXN0LCAnRkFJTCBQQVNTIFRJTUVPVVQnLCAnV09OVEZJWCcp
OworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBMaW51eCcsIHRlc3QsICdGQUlMIFBB
U1MgVElNRU9VVCcsICdXT05URklYJyk7CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0
IExpbnV4IChkYmcpKDMpJywgdGVzdCwgJ0NSQVNIJywgJ0xJTlVYIERFQlVHJyk7CisgICAgcnVu
RXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IE1hYzEwLjUnLCB0ZXN0LCAnRkFJTCcsICdXT05URklY
IE1BQycpOworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBNYWMxMC41IChkYmcpKDMp
JywgdGVzdCwgJ0ZBSUwnLCAnV09OVEZJWCBNQUMnKTsKIH0KIAotZnVuY3Rpb24gdGVzdE92ZXJy
aWRlSnVzdEJ1aWxkVHlwZSgpIHsKLSAgdmFyIHRlc3QgPSAnYmFyLzEuaHRtbCc7Ci0gIGdfZXhw
ZWN0YXRpb25zQnlUZXN0WydiYXInXSA9IFsKLSAgICB7J21vZGlmaWVycyc6ICdXT05URklYJywg
J2V4cGVjdGF0aW9ucyc6ICdGQUlMIFBBU1MgVElNRU9VVCd9Ci0gIF07Ci0gIGdfZXhwZWN0YXRp
b25zQnlUZXN0W3Rlc3RdID0gWwotICAgIHsnbW9kaWZpZXJzJzogJ1dPTlRGSVggTUFDJywgJ2V4
cGVjdGF0aW9ucyc6ICdGQUlMJ30sCi0gICAgeydtb2RpZmllcnMnOiAnTElOVVggREVCVUcnLCAn
ZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30sCi0gIF07Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dl
YmtpdCcsIHRlc3QsICdGQUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7Ci0gIHJ1bkV4cGVj
dGF0aW9uc1Rlc3QoJ1dlYmtpdCAoZGJnKSgzKScsIHRlc3QsICdGQUlMIFBBU1MgVElNRU9VVCcs
ICdXT05URklYJyk7Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBMaW51eCcsIHRlc3Qs
ICdGQUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rlc3Qo
J1dlYmtpdCBMaW51eCAoZGJnKSgzKScsIHRlc3QsICdDUkFTSCcsICdMSU5VWCBERUJVRycpOwot
ICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQgTWFjMTAuNScsIHRlc3QsICdGQUlMJywgJ1dP
TlRGSVggTUFDJyk7Ci0gIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBNYWMxMC41IChkYmcp
KDMpJywgdGVzdCwgJ0ZBSUwnLCAnV09OVEZJWCBNQUMnKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVz
dHMoKSB7Ci0gIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxwcmUgaWQ9dW5pdHRlc3QtcmVz
dWx0cz48L3ByZT4nOwotICBmb3IgKHZhciBuYW1lIGluIHdpbmRvdykgewotICAgIGlmICh0eXBl
b2Ygd2luZG93W25hbWVdID09ICdmdW5jdGlvbicgJiYgL150ZXN0Ly50ZXN0KG5hbWUpKSB7Ci0g
ICAgICBzZXR1cEV4cGVjdGF0aW9uc1Rlc3QoKTsKLQotICAgICAgdmFyIHRlc3QgPSB3aW5kb3db
bmFtZV07Ci0gICAgICB2YXIgZXJyb3IgPSBudWxsOwotCi0gICAgICB0cnkgewotICAgICAgICB0
ZXN0KCk7Ci0gICAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAgZXJyb3IgPSBlcnI7Ci0gICAg
ICB9Ci0KLSAgICAgIHZhciByZXN1bHQgPSBlcnJvciA/IGVycm9yLnRvU3RyaW5nKCkgOiAnUEFT
U0VEJzsKLSAgICAgICQoJ3VuaXR0ZXN0LXJlc3VsdHMnKS5pbnNlcnRBZGphY2VudEhUTUwoImJl
Zm9yZUVuZCIsCi0gICAgICAgICAgbmFtZSArICc6ICcgKyByZXN1bHQgKyAnXG4nKTsKK2Z1bmN0
aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8cHJlIGlk
PXVuaXR0ZXN0LXJlc3VsdHM+PC9wcmU+JzsKKyAgICBmb3IgKHZhciBuYW1lIGluIHdpbmRvdykg
eworICAgICAgICBpZiAodHlwZW9mIHdpbmRvd1tuYW1lXSA9PSAnZnVuY3Rpb24nICYmIC9edGVz
dC8udGVzdChuYW1lKSkgeworICAgICAgICAgICAgc2V0dXBFeHBlY3RhdGlvbnNUZXN0KCk7CisK
KyAgICAgICAgICAgIHZhciB0ZXN0ID0gd2luZG93W25hbWVdOworICAgICAgICAgICAgdmFyIGVy
cm9yID0gbnVsbDsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0ZXN0KCk7
CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgICAgICAgICBlcnJvciA9IGVy
cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGVycm9yID8gZXJy
b3IudG9TdHJpbmcoKSA6ICdQQVNTRUQnOworICAgICAgICAgICAgJCgndW5pdHRlc3QtcmVzdWx0
cycpLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlRW5kIiwgbmFtZSArICc6ICcgKyByZXN1bHQg
KyAnXG4nKTsKKyAgICAgICAgfQogICAgIH0KLSAgfQogfQogCi1pZiAoZG9jdW1lbnQucmVhZHlT
dGF0ZSA9PSAnY29tcGxldGUnKSB7Ci0gIHJ1blRlc3RzKCk7Ci19IGVsc2UgewotICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3RzLCBmYWxzZSk7Ci19CitpZiAoZG9jdW1l
bnQucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKQorICAgIHJ1blRlc3RzKCk7CitlbHNlCisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0cywgZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9l
eHBsb3Jlci5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90
aW1lbGluZV9leHBsb3Jlci5odG1sCmluZGV4IDA0YjNkMTcyM2MyNWY5OGNlMGE4ODk3OTYyOWYw
ZWU4ZmE1ZjcwYTYuLmFlMDJkMzg5YTQ1MTYzZGNjN2I5MjMyNzFjYTcwNDg4Y2Q1ZDY2N2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxp
bmVfZXhwbG9yZXIuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwKQEAgLTMwLDE1MCArMzAsMTQ3IEBAIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiA8aHRtbD4KIAogPGhlYWQ+Ci0gIDx0aXRsZT5UZXN0IFRpbWVsaW5lIEV4cGxvcmVy
PC90aXRsZT4KLSAgPHN0eWxlPgotICAgIGJvZHkgewotICAgICAgZm9udC1mYW1pbHk6IEhlbHZl
dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ci0gICAgICBmb250LXNpemU6IDEycHg7Ci0gICAgfQot
Ci0gICAgI3RpbWVsaW5lLWNvbnRhaW5lciB7Ci0gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgfQotCi0gICAgI2luc3BlY3Rvci1jb250YWluZXIgewotICAgICAgd2lkdGg6IDMwMHB4Owot
ICAgICAgZmxvYXQ6IHJpZ2h0OwotICAgICAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQ7Ci0gICAg
ICBwYWRkaW5nLWxlZnQ6IDVweDsKLSAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAgfQotCi0g
ICAgI2luc3BlY3Rvci1jb250YWluZXIgY2FwdGlvbiB7Ci0gICAgICBiYWNrZ3JvdW5kOiAjZWVl
OwotICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgICBwYWRkaW5nOiAycHg7Ci0gICAgICBm
b250LXNpemU6IDE0cHg7Ci0gICAgICB0ZXh0LWFsaWduOiBsZWZ0OwotICAgIH0KLQotICAgICNp
bnNwZWN0b3ItdGFibGUgewotICAgICAgd2lkdGg6IDEwMCU7Ci0gICAgfQotCi0gICAgI2luc3Bl
Y3Rvci10YWJsZSB0ZCB7Ci0gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotICAgIH0KLQotICAg
ICNpbnNwZWN0b3ItdGFibGUgLmxhYmVsIHsKLSAgICAgIGNvbG9yOiAjNjY2OwotICAgICAgdGV4
dC1hbGlnbjogcmlnaHQ7Ci0gICAgICB3aWR0aDogMTBlbTsKLSAgICB9Ci0KLSAgICAjaW5zcGVj
dG9yLXRhYmxlIC5kZWx0YS5wb3NpdGl2ZSB7Ci0gICAgICBjb2xvcjogIzA5MDsKLSAgICB9Ci0K
LSAgICAjaW5zcGVjdG9yLXRhYmxlIC5kZWx0YS5uZWdhdGl2ZSB7Ci0gICAgICBjb2xvcjogIzkw
MDsKLSAgICB9Ci0KLSAgICAjaW5zcGVjdG9yLWNvbnRhaW5lciAuYnV0dG9ucyB7Ci0gICAgICBw
YWRkaW5nOiAxZW0gMDsKLSAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB9Ci0KLSAgICAj
aW5zcGVjdG9yLWNvbnRhaW5lciAjYnVpbGQtYnV0dG9ucyB7Ci0gICAgICBib3JkZXItdG9wOiAx
cHggZGFzaGVkOwotICAgIH0KLQotICAgICNpbmRpY2F0b3IgewotICAgICAgdG9wOiAwOwotICAg
ICAgd2lkdGg6IDFweDsKLSAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgIGJhY2tncm91
bmQ6IHJlZDsKLSAgICB9Ci0gIDwvc3R5bGU+Ci0gIDxzY3JpcHQgc3JjPSJkeWdyYXBoLWNvbWJp
bmVkLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImJ1aWxkZXJzLmpzIj48L3NjcmlwdD4K
LSAgPHNjcmlwdCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdD4K
LSAgdmFyIEZBSUxJTkdfVEVTVFNfREFUQVNFVF9OQU1FID0gJ0ZhaWxpbmcgdGVzdHMnOwotCi0g
IHZhciBzaG91bGRTaG93V2ViS2l0UmV2aXNpb25zT25seSA9IGlzVGlwT2ZUcmVlV2ViS2l0QnVp
bGRlcigpOwotICB2YXIgZHlncmFwaDsKLSAgdmFyIGJ1aWxkSW5kaWNlc0J5VGltZXN0YW1wID0g
e307Ci0gIHZhciBjdXJyZW50QnVpbGRJbmRleCA9IC0xOwotICB2YXIgY3VycmVudEJ1aWxkZXJU
ZXN0UmVzdWx0czsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gTWV0aG9kcyBhbmQg
b2JqZWN0cyBmcm9tIGRhc2hib2FyZF9iYXNlLmpzIHRvIG92ZXJyaWRlLgotICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLSAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkgewotICAgIGJ1aWxkSW5kaWNl
c0J5VGltZXN0YW1wID0ge307Cis8dGl0bGU+VGVzdCBUaW1lbGluZSBFeHBsb3JlcjwvdGl0bGU+
Cis8c3R5bGU+Citib2R5IHsKKyAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fu
cy1zZXJpZjsKKyAgICBmb250LXNpemU6IDEycHg7Cit9CisKKyN0aW1lbGluZS1jb250YWluZXIg
eworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworI2luc3BlY3Rvci1jb250YWluZXIgewor
ICAgIHdpZHRoOiAzMDBweDsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgYm9yZGVyLWxlZnQ6IDFw
eCBkYXNoZWQ7CisgICAgcGFkZGluZy1sZWZ0OiA1cHg7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsK
K30KKworI2luc3BlY3Rvci1jb250YWluZXIgY2FwdGlvbiB7CisgICAgYmFja2dyb3VuZDogI2Vl
ZTsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBwYWRkaW5nOiAycHg7CisgICAgZm9udC1z
aXplOiAxNHB4OworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKyNpbnNwZWN0b3ItdGFibGUg
eworICAgIHdpZHRoOiAxMDAlOworfQorCisjaW5zcGVjdG9yLXRhYmxlIHRkIHsKKyAgICB3aGl0
ZS1zcGFjZTogbm93cmFwOworfQorCisjaW5zcGVjdG9yLXRhYmxlIC5sYWJlbCB7CisgICAgY29s
b3I6ICM2NjY7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgd2lkdGg6IDEwZW07Cit9CisK
KyNpbnNwZWN0b3ItdGFibGUgLmRlbHRhLnBvc2l0aXZlIHsKKyAgICBjb2xvcjogIzA5MDsKK30K
KworI2luc3BlY3Rvci10YWJsZSAuZGVsdGEubmVnYXRpdmUgeworICAgIGNvbG9yOiAjOTAwOwor
fQorCisjaW5zcGVjdG9yLWNvbnRhaW5lciAuYnV0dG9ucyB7CisgICAgcGFkZGluZzogMWVtIDA7
CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCisjaW5zcGVjdG9yLWNvbnRhaW5lciAjYnVp
bGQtYnV0dG9ucyB7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZDsKK30KKworI2luZGljYXRv
ciB7CisgICAgdG9wOiAwOworICAgIHdpZHRoOiAxcHg7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iZHlncmFw
aC1jb21iaW5lZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYnVpbGRlcnMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Cit2YXIgRkFJTElOR19URVNUU19EQVRBU0VUX05BTUUgPSAnRmFpbGluZyB0ZXN0cyc7CisKK3Zh
ciBnX3Nob3VsZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5ID0gaXNUaXBPZlRyZWVXZWJLaXRCdWls
ZGVyKCk7Cit2YXIgZ19keWdyYXBoOwordmFyIGdfYnVpbGRJbmRpY2VzQnlUaW1lc3RhbXAgPSB7
fTsKK3ZhciBnX2N1cnJlbnRCdWlsZEluZGV4ID0gLTE7Cit2YXIgZ19jdXJyZW50QnVpbGRlclRl
c3RSZXN1bHRzOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIE1ldGhvZHMgYW5kIG9iamVj
dHMgZnJvbSBkYXNoYm9hcmRfYmFzZS5qcyB0byBvdmVycmlkZS4KKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKK3sKKyAgICBnX2J1aWxkSW5kaWNlc0J5VGlt
ZXN0YW1wID0ge307CiAgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJy
ZW50U3RhdGUuYnVpbGRlcl07CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHNbRklY
QUJMRV9DT1VOVFNfS0VZXS5sZW5ndGg7IGkrKykgewotICAgICAgdmFyIGJ1aWxkRGF0ZSA9IG5l
dyBEYXRlKHJlc3VsdHNbVElNRVNUQU1QU19LRVldW2ldICogMTAwMCk7Ci0gICAgICBidWlsZElu
ZGljZXNCeVRpbWVzdGFtcFtidWlsZERhdGUuZ2V0VGltZSgpXSA9IGk7CisgICAgICAgIHZhciBi
dWlsZERhdGUgPSBuZXcgRGF0ZShyZXN1bHRzW1RJTUVTVEFNUFNfS0VZXVtpXSAqIDEwMDApOwor
ICAgICAgICBnX2J1aWxkSW5kaWNlc0J5VGltZXN0YW1wW2J1aWxkRGF0ZS5nZXRUaW1lKCldID0g
aTsKICAgICB9CiAKLSAgICBpZiAoZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3RhbXAgIT0gLTEg
JiYKLSAgICAgICAgZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3RhbXAgaW4gYnVpbGRJbmRpY2Vz
QnlUaW1lc3RhbXApIHsKLSAgICAgICAgdmFyIG5ld0J1aWxkSW5kZXggPQotICAgICAgICAgICAg
YnVpbGRJbmRpY2VzQnlUaW1lc3RhbXBbZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3RhbXBdOwot
Ci0gICAgICAgIGlmIChuZXdCdWlsZEluZGV4ID09IGN1cnJlbnRCdWlsZEluZGV4KSB7Ci0gICAg
ICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gc2VsZWN0QnVpbGQgaXMgY2FsbGVkLCB3aGljaCB1
cGRhdGVzIHRoZSBVSQotICAgICAgICAgIC8vIGltbWVkaWF0ZWx5LCBpbiBhZGRpdGlvbiB0byB1
cGRhdGluZyB0aGUgbG9jYXRpb24gaGFzaCAod2UgZG9uJ3QKLSAgICAgICAgICAvLyBqdXN0IHJl
bHkgb24gdGhlIGhhc2ggY2hhbmdlIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gcmVnZW5lcmF0ZSB0
aGUKLSAgICAgICAgICAvLyB3aG9sZSBwYWdlIGp1c3QgYmVjYXVzZSB0aGUgdXNlciBjbGlja2Vk
IG9uIHNvbWV0aGluZykKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3
QnVpbGRJbmRleCkgewotICAgICAgICAgIGN1cnJlbnRCdWlsZEluZGV4ID0gbmV3QnVpbGRJbmRl
eDsKLSAgICAgICAgfQorICAgIGlmIChnX2N1cnJlbnRTdGF0ZS5idWlsZFRpbWVzdGFtcCAhPSAt
MSAmJiBnX2N1cnJlbnRTdGF0ZS5idWlsZFRpbWVzdGFtcCBpbiBnX2J1aWxkSW5kaWNlc0J5VGlt
ZXN0YW1wKSB7CisgICAgICAgIHZhciBuZXdCdWlsZEluZGV4ID0gZ19idWlsZEluZGljZXNCeVRp
bWVzdGFtcFtnX2N1cnJlbnRTdGF0ZS5idWlsZFRpbWVzdGFtcF07CisKKyAgICAgICAgaWYgKG5l
d0J1aWxkSW5kZXggPT0gZ19jdXJyZW50QnVpbGRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhp
cyBoYXBwZW5zIHdoZW4gc2VsZWN0QnVpbGQgaXMgY2FsbGVkLCB3aGljaCB1cGRhdGVzIHRoZSBV
SQorICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHksIGluIGFkZGl0aW9uIHRvIHVwZGF0aW5nIHRo
ZSBsb2NhdGlvbiBoYXNoICh3ZSBkb24ndAorICAgICAgICAgICAgLy8ganVzdCByZWx5IG9uIHRo
ZSBoYXNoIGNoYW5nZSBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIHJlZ2VuZXJhdGUgdGhlCisgICAg
ICAgICAgICAvLyB3aG9sZSBwYWdlIGp1c3QgYmVjYXVzZSB0aGUgdXNlciBjbGlja2VkIG9uIHNv
bWV0aGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdCdWls
ZEluZGV4KQorICAgICAgICAgICAgZ19jdXJyZW50QnVpbGRJbmRleCA9IG5ld0J1aWxkSW5kZXg7
CiAgICAgfQogCiAgICAgaW5pdEN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMoKTsKIAotICAgICQo
J3Rlc3QtdHlwZS1zd2l0Y2hlcicpLmlubmVySFRNTCA9IGdldEhUTUxGb3JUZXN0VHlwZVN3aXRj
aGVyKAotICAgICAgICBmYWxzZSwKLSAgICAgICAgY2hlY2tib3hIVE1MKCdpZ25vcmVGbGFreVRl
c3RzJywgJ0lnbm9yZSBmbGFreSB0ZXN0cycsCi0gICAgICAgICAgICBnX2N1cnJlbnRTdGF0ZS5p
Z25vcmVGbGFreVRlc3RzLCAnY3VycmVudEJ1aWxkSW5kZXggPSAtMScpCisgICAgJCgndGVzdC10
eXBlLXN3aXRjaGVyJykuaW5uZXJIVE1MID0gaHRtbEZvclRlc3RUeXBlU3dpdGNoZXIoIGZhbHNl
LAorICAgICAgICBjaGVja2JveEhUTUwoJ2lnbm9yZUZsYWt5VGVzdHMnLCAnSWdub3JlIGZsYWt5
IHRlc3RzJywgZ19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cywgJ2dfY3VycmVudEJ1aWxk
SW5kZXggPSAtMScpCiAgICAgKTsKIAogICAgIHVwZGF0ZVRpbWVsaW5lRm9yQnVpbGRlcigpOwot
ICB9Cit9CiAKLSAgZnVuY3Rpb24gaW5pdEN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMoKSB7Citm
dW5jdGlvbiBpbml0Q3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cygpCit7CiAgICAgdmFyIHN0YXJ0
VGltZSA9IERhdGUubm93KCk7Ci0gICAgY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cyA9Ci0gICAg
ICAgIGdldFRlc3RSZXN1bHRzQnlCdWlsZChnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3Rh
dGUuYnVpbGRlcl0pOwotICAgIGNvbnNvbGUubG9nKAotICAgICAgICAnVGltZSB0byBnZXQgdGVz
dCByZXN1bHRzIGJ5IGJ1aWxkOiAnICsgKERhdGUubm93KCkgLSBzdGFydFRpbWUpKTsKLSAgfQor
ICAgIGdfY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cyA9IHRlc3RSZXN1bHRzQnlCdWlsZChnX3Jl
c3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0pOworICAgIGNvbnNvbGUubG9n
KCAnVGltZSB0byBnZXQgdGVzdCByZXN1bHRzIGJ5IGJ1aWxkOiAnICsgKERhdGUubm93KCkgLSBz
dGFydFRpbWUpKTsKK30KIAotICBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5
LCB2YWx1ZSkgeworZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUp
Cit7CiAgICAgc3dpdGNoKGtleSkgewotICAgICAgY2FzZSAnYnVpbGRUaW1lc3RhbXAnOgorICAg
IGNhc2UgJ2J1aWxkVGltZXN0YW1wJzoKICAgICAgICAgZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1l
c3RhbXAgPSBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
IGNhc2UgJ2lnbm9yZUZsYWt5VGVzdHMnOgorICAgIGNhc2UgJ2lnbm9yZUZsYWt5VGVzdHMnOgog
ICAgICAgICBnX2N1cnJlbnRTdGF0ZS5pZ25vcmVGbGFreVRlc3RzID0gdmFsdWUgPT0gJ3RydWUn
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6CisgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgfQorfQogCi0gIGdfZGVmYXVsdFN0YXRlVmFs
dWVzID0geworZ19kZWZhdWx0U3RhdGVWYWx1ZXMgPSB7CiAgICAgYnVpbGRUaW1lc3RhbXA6IC0x
LAogICAgIGJ1aWxkZXI6IGdfZGVmYXVsdEJ1aWxkZXJOYW1lLAogICAgIGlnbm9yZUZsYWt5VGVz
dHM6IHRydWUKLSAgfTsKK307CiAKLSAgZnVuY3Rpb24gdXBkYXRlVGltZWxpbmVGb3JCdWlsZGVy
KCkgeworZnVuY3Rpb24gdXBkYXRlVGltZWxpbmVGb3JCdWlsZGVyKCkKK3sKICAgICB2YXIgYnVp
bGRlciA9IGdfY3VycmVudFN0YXRlLmJ1aWxkZXI7CiAgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3Vs
dHNCeUJ1aWxkZXJbYnVpbGRlcl07CiAgICAgdmFyIGdyYXBoRGF0YSA9IFtdOwpAQCAtMTgyLDMw
ICsxNzksMjQgQEAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogICAgIC8vIER5Z3JhcGggcHJlZmVycyB0byBiZSBo
YW5kZWQgZGF0YSBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyLgogICAgIGZvciAodmFyIGkgPSByZXN1
bHRzW0ZJWEFCTEVfQ09VTlRTX0tFWV0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAg
IHZhciBidWlsZERhdGUgPSBuZXcgRGF0ZShyZXN1bHRzW1RJTUVTVEFNUFNfS0VZXVtpXSAqIDEw
MDApOwotICAgICAgLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGV4Y2x1ZGUgb3V0bGll
cnMuIFRoaXMgaXMganVzdCBzbyB3ZQotICAgICAgLy8gZXhjbHVkZSBydW5zIHdoZXJlIGV2ZXJ5
IHRlc3QgZmFpbGVkLgotICAgICAgdmFyIGZhaWx1cmVDb3VudCA9IE1hdGgubWluKHJlc3VsdHNb
RklYQUJMRV9DT1VOVF9LRVldW2ldLCAxMDAwMCk7Ci0KLSAgICAgIGlmIChnX2N1cnJlbnRTdGF0
ZS5pZ25vcmVGbGFreVRlc3RzKSB7Ci0gICAgICAgIGZhaWx1cmVDb3VudCAtPQotICAgICAgICAg
ICAgY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cy5mbGFreURlbHRhc0J5QnVpbGRbaV0udG90YWwg
fHwgMDsKLSAgICAgIH0KLQotICAgICAgZ3JhcGhEYXRhLnB1c2goW2J1aWxkRGF0ZSwgZmFpbHVy
ZUNvdW50XSk7Ci0KLSAgICAgIGlmICghc2hvdWxkU2hvd1dlYktpdFJldmlzaW9uc09ubHkgJiYK
LSAgICAgICAgICAocmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baV0gIT0KLSAgICAgICAg
ICAgICAgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baSArIDFdKSkgewotICAgICAgICBh
bm5vdGF0aW9ucy5wdXNoKHsKLSAgICAgICAgICAgIHNlcmllczogRkFJTElOR19URVNUU19EQVRB
U0VUX05BTUUsCi0gICAgICAgICAgICB4OiBidWlsZERhdGUsCi0gICAgICAgICAgICBzaG9ydFRl
eHQ6ICdSJywKLSAgICAgICAgICAgIHRleHQ6ICdXZWJLaXQgcm9sbDogcicgKwotICAgICAgICAg
ICAgICAgIHJlc3VsdHNbV0VCS0lUX1JFVklTSU9OU19LRVldW2kgKyAxXSArICcgdG8gJyArCi0g
ICAgICAgICAgICAgICAgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baV0KLSAgICAgICAg
ICB9KTsKLSAgICAgIH0KKyAgICAgICAgdmFyIGJ1aWxkRGF0ZSA9IG5ldyBEYXRlKHJlc3VsdHNb
VElNRVNUQU1QU19LRVldW2ldICogMTAwMCk7CisgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgYmV0
dGVyIHdheSB0byBleGNsdWRlIG91dGxpZXJzLiBUaGlzIGlzIGp1c3Qgc28gd2UKKyAgICAgICAg
Ly8gZXhjbHVkZSBydW5zIHdoZXJlIGV2ZXJ5IHRlc3QgZmFpbGVkLgorICAgICAgICB2YXIgZmFp
bHVyZUNvdW50ID0gTWF0aC5taW4ocmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV1baV0sIDEwMDAw
KTsKKworICAgICAgICBpZiAoZ19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cykKKyAgICAg
ICAgICAgIGZhaWx1cmVDb3VudCAtPSBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMuZmxha3lE
ZWx0YXNCeUJ1aWxkW2ldLnRvdGFsIHx8IDA7CisKKyAgICAgICAgZ3JhcGhEYXRhLnB1c2goW2J1
aWxkRGF0ZSwgZmFpbHVyZUNvdW50XSk7CisKKyAgICAgICAgaWYgKCFnX3Nob3VsZFNob3dXZWJL
aXRSZXZpc2lvbnNPbmx5ICYmIChyZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNfS0VZXVtpXSAhPSBy
ZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNfS0VZXVtpICsgMV0pKSB7CisgICAgICAgICAgICBhbm5v
dGF0aW9ucy5wdXNoKHsKKyAgICAgICAgICAgICAgICBzZXJpZXM6IEZBSUxJTkdfVEVTVFNfREFU
QVNFVF9OQU1FLAorICAgICAgICAgICAgICAgIHg6IGJ1aWxkRGF0ZSwKKyAgICAgICAgICAgICAg
ICBzaG9ydFRleHQ6ICdSJywKKyAgICAgICAgICAgICAgICB0ZXh0OiAnV2ViS2l0IHJvbGw6IHIn
ICsgcmVzdWx0c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baSArIDFdICsgJyB0byAnICsgcmVzdWx0
c1tXRUJLSVRfUkVWSVNJT05TX0tFWV1baV0KKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgdmFyIHdpbmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNs
aWVudFdpZHRoOwpAQCAtMjEzLDE0NiArMjA0LDEzNSBAQCBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIHZhciBz
d2l0Y2hlck5vZGUgPSAkKCd0ZXN0LXR5cGUtc3dpdGNoZXInKTsKICAgICB2YXIgaW5zcGVjdG9y
Tm9kZSA9ICQoJ2luc3BlY3Rvci1jb250YWluZXInKTsKICAgICB2YXIgZ3JhcGhXaWR0aCA9IHdp
bmRvd1dpZHRoIC0gMjAgLSBpbnNwZWN0b3JOb2RlLm9mZnNldFdpZHRoOwotICAgIHZhciBncmFw
aEhlaWdodCA9IHdpbmRvd0hlaWdodCAtCi0gICAgICAgIHN3aXRjaGVyTm9kZS5vZmZzZXRUb3Ag
LSBzd2l0Y2hlck5vZGUub2Zmc2V0SGVpZ2h0IC0gMjA7CisgICAgdmFyIGdyYXBoSGVpZ2h0ID0g
d2luZG93SGVpZ2h0IC0gc3dpdGNoZXJOb2RlLm9mZnNldFRvcCAtIHN3aXRjaGVyTm9kZS5vZmZz
ZXRIZWlnaHQgLSAyMDsKIAogICAgIHZhciBjb250YWluZXJOb2RlID0gJCgndGltZWxpbmUtY29u
dGFpbmVyJyk7CiAgICAgY29udGFpbmVyTm9kZS5zdHlsZS5oZWlnaHQgPSBncmFwaEhlaWdodCAr
ICdweCc7CiAgICAgY29udGFpbmVyTm9kZS5zdHlsZS53aWR0aCA9IGdyYXBoV2lkdGggKyAncHgn
OwogICAgIGluc3BlY3Rvck5vZGUuc3R5bGUuaGVpZ2h0ID0gZ3JhcGhIZWlnaHQgKyAncHgnOwog
Ci0gICAgZHlncmFwaCA9IG5ldyBEeWdyYXBoKAorICAgIGdfZHlncmFwaCA9IG5ldyBEeWdyYXBo
KAogICAgICAgICBjb250YWluZXJOb2RlLAogICAgICAgICBncmFwaERhdGEsIHsKLSAgICAgICAg
ICBsYWJlbHM6IFsnRGF0ZScsIEZBSUxJTkdfVEVTVFNfREFUQVNFVF9OQU1FXSwKLSAgICAgICAg
ICB3aWR0aDogZ3JhcGhXaWR0aCwKLSAgICAgICAgICBoZWlnaHQ6IGdyYXBoSGVpZ2h0LAotICAg
ICAgICAgIGNsaWNrQ2FsbGJhY2s6IGZ1bmN0aW9uKGV2ZW50LCBkYXRlKSB7Ci0gICAgICAgICAg
ICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBidWlsZEluZGljZXNCeVRp
bWVzdGFtcFtkYXRlXSk7Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBkcmF3Q2FsbGJhY2s6IGZ1
bmN0aW9uKGR5Z3JhcGgsIGlzSW5pdGlhbCkgewotICAgICAgICAgICAgaWYgKGlzSW5pdGlhbCkg
cmV0dXJuOwotICAgICAgICAgICAgdXBkYXRlQnVpbGRJbmRpY2F0b3IocmVzdWx0cywgZHlncmFw
aCk7Ci0gICAgICAgICAgfSwKLSAgICAgICAgICAvLyB4VmFsdWVQYXJzZXIgaXMgbmVjZXNzYXJ5
IGZvciBhbm5vdGF0aW9ucyB0byB3b3JrLCBldmVuIHRob3VnaCB3ZQotICAgICAgICAgIC8vIGFs
cmVhZHkgaGF2ZSBEYXRlIGluc3RhbmNlcwotICAgICAgICAgIHhWYWx1ZVBhcnNlcjogZnVuY3Rp
b24oaW5wdXQpIHsgcmV0dXJuIGlucHV0LmdldFRpbWUoKTsgfQorICAgICAgICAgICAgbGFiZWxz
OiBbJ0RhdGUnLCBGQUlMSU5HX1RFU1RTX0RBVEFTRVRfTkFNRV0sCisgICAgICAgICAgICB3aWR0
aDogZ3JhcGhXaWR0aCwKKyAgICAgICAgICAgIGhlaWdodDogZ3JhcGhIZWlnaHQsCisgICAgICAg
ICAgICBjbGlja0NhbGxiYWNrOiBmdW5jdGlvbihldmVudCwgZGF0ZSkgeworICAgICAgICAgICAg
ICAgIHNlbGVjdEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGdfZHlncmFwaCwgZ19idWlsZEluZGlj
ZXNCeVRpbWVzdGFtcFtkYXRlXSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZHJhd0Nh
bGxiYWNrOiBmdW5jdGlvbihkeWdyYXBoLCBpc0luaXRpYWwpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNJbml0aWFsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgdXBkYXRlQnVpbGRJbmRpY2F0b3IocmVzdWx0cywgZHlncmFwaCk7CisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgLy8geFZhbHVlUGFyc2VyIGlzIG5lY2Vzc2FyeSBmb3IgYW5ub3RhdGlv
bnMgdG8gd29yaywgZXZlbiB0aG91Z2ggd2UKKyAgICAgICAgICAgIC8vIGFscmVhZHkgaGF2ZSBE
YXRlIGluc3RhbmNlcworICAgICAgICAgICAgeFZhbHVlUGFyc2VyOiBmdW5jdGlvbihpbnB1dCkg
eyByZXR1cm4gaW5wdXQuZ2V0VGltZSgpOyB9CiAgICAgICAgIH0pOwotICAgIGlmIChhbm5vdGF0
aW9ucy5sZW5ndGgpIHsKLSAgICAgIGR5Z3JhcGguc2V0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMp
OwotICAgIH0KKyAgICBpZiAoYW5ub3RhdGlvbnMubGVuZ3RoKQorICAgICAgICBnX2R5Z3JhcGgu
c2V0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpOwogCiAgICAgaW5zcGVjdG9yTm9kZS5zdHlsZS52
aXNpYmlsaXR5ID0gJ3Zpc2libGUnOwogCi0gICAgaWYgKGN1cnJlbnRCdWlsZEluZGV4ICE9IC0x
KSB7Ci0gICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBjdXJyZW50
QnVpbGRJbmRleCk7Ci0gICAgfQotICB9CisgICAgaWYgKGdfY3VycmVudEJ1aWxkSW5kZXggIT0g
LTEpCisgICAgICAgIHNlbGVjdEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGdfZHlncmFwaCwgZ19j
dXJyZW50QnVpbGRJbmRleCk7Cit9CiAKLSAgZnVuY3Rpb24gc2VsZWN0QnVpbGQocmVzdWx0cywg
YnVpbGRlciwgZHlncmFwaCwgaW5kZXgpIHsKLSAgICBjdXJyZW50QnVpbGRJbmRleCA9IGluZGV4
OworZnVuY3Rpb24gc2VsZWN0QnVpbGQocmVzdWx0cywgYnVpbGRlciwgZHlncmFwaCwgaW5kZXgp
Cit7CisgICAgZ19jdXJyZW50QnVpbGRJbmRleCA9IGluZGV4OwogICAgIHVwZGF0ZUJ1aWxkSW5k
aWNhdG9yKHJlc3VsdHMsIGR5Z3JhcGgpOwogICAgIHVwZGF0ZUJ1aWxkSW5zcGVjdG9yKHJlc3Vs
dHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KTsKICAgICBzZXRRdWVyeVBhcmFtZXRlcignYnVp
bGRUaW1lc3RhbXAnLCByZXN1bHRzW1RJTUVTVEFNUFNfS0VZXVtpbmRleF0gKiAxMDAwKTsKLSAg
fQorfQogCi0gIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5kaWNhdG9yKHJlc3VsdHMsIGR5Z3JhcGgp
IHsKK2Z1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5kaWNhdG9yKHJlc3VsdHMsIGR5Z3JhcGgpCit7CiAg
ICAgdmFyIGluZGljYXRvck5vZGUgPSAkKCdpbmRpY2F0b3InKTsKIAogICAgIGlmICghaW5kaWNh
dG9yTm9kZSkgewotICAgICAgdmFyIGNvbnRhaW5lck5vZGUgPSAkKCd0aW1lbGluZS1jb250YWlu
ZXInKTsKLSAgICAgIGluZGljYXRvck5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKLSAgICAgIGluZGljYXRvck5vZGUuaWQgPSAnaW5kaWNhdG9yJzsKLSAgICAgIGluZGljYXRv
ck5vZGUuc3R5bGUuaGVpZ2h0ID0gY29udGFpbmVyTm9kZS5vZmZzZXRIZWlnaHQgKyAncHgnOwot
ICAgICAgY29udGFpbmVyTm9kZS5hcHBlbmRDaGlsZChpbmRpY2F0b3JOb2RlKTsKKyAgICAgICAg
dmFyIGNvbnRhaW5lck5vZGUgPSAkKCd0aW1lbGluZS1jb250YWluZXInKTsKKyAgICAgICAgaW5k
aWNhdG9yTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBpbmRp
Y2F0b3JOb2RlLmlkID0gJ2luZGljYXRvcic7CisgICAgICAgIGluZGljYXRvck5vZGUuc3R5bGUu
aGVpZ2h0ID0gY29udGFpbmVyTm9kZS5vZmZzZXRIZWlnaHQgKyAncHgnOworICAgICAgICBjb250
YWluZXJOb2RlLmFwcGVuZENoaWxkKGluZGljYXRvck5vZGUpOwogICAgIH0KIAotICAgIGlmIChj
dXJyZW50QnVpbGRJbmRleCA9PSAtMSkgewotICAgICAgaW5kaWNhdG9yTm9kZS5zdHlsZS5kaXNw
bGF5ID0gJ25vbmUnOwotICAgIH0gZWxzZSB7Ci0gICAgICBpbmRpY2F0b3JOb2RlLnN0eWxlLmRp
c3BsYXkgPSAnYmxvY2snOwotICAgICAgdmFyIGJ1aWxkRGF0ZSA9Ci0gICAgICAgICAgbmV3IERh
dGUocmVzdWx0c1tUSU1FU1RBTVBTX0tFWV1bY3VycmVudEJ1aWxkSW5kZXhdICogMTAwMCk7Ci0g
ICAgICB2YXIgZG9tQ29vcmRzID0gZHlncmFwaC50b0RvbUNvb3JkcyhidWlsZERhdGUsIDApOwot
ICAgICAgaW5kaWNhdG9yTm9kZS5zdHlsZS5sZWZ0ID0gZG9tQ29vcmRzWzBdICsgJ3B4JzsKKyAg
ICBpZiAoZ19jdXJyZW50QnVpbGRJbmRleCA9PSAtMSkKKyAgICAgICAgaW5kaWNhdG9yTm9kZS5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGVsc2UgeworICAgICAgICBpbmRpY2F0b3JOb2Rl
LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworICAgICAgICB2YXIgYnVpbGREYXRlID0gbmV3IERh
dGUocmVzdWx0c1tUSU1FU1RBTVBTX0tFWV1bZ19jdXJyZW50QnVpbGRJbmRleF0gKiAxMDAwKTsK
KyAgICAgICAgdmFyIGRvbUNvb3JkcyA9IGR5Z3JhcGgudG9Eb21Db29yZHMoYnVpbGREYXRlLCAw
KTsKKyAgICAgICAgaW5kaWNhdG9yTm9kZS5zdHlsZS5sZWZ0ID0gZG9tQ29vcmRzWzBdICsgJ3B4
JzsKICAgICB9Ci0gIH0KK30KIAotICBmdW5jdGlvbiB1cGRhdGVCdWlsZEluc3BlY3RvcihyZXN1
bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBpbmRleCkgeworZnVuY3Rpb24gdXBkYXRlQnVpbGRJbnNw
ZWN0b3IocmVzdWx0cywgYnVpbGRlciwgZHlncmFwaCwgaW5kZXgpCit7CiAgICAgdmFyIGh0bWwg
PSAnPHRhYmxlIGlkPSJpbnNwZWN0b3ItdGFibGUiPjxjYXB0aW9uPkRldGFpbHM8L2NhcHRpb24+
JzsKIAotICAgIGZ1bmN0aW9uIGFkZFJvdyhsYWJlbCwgdmFsdWUpIHsKLSAgICAgIGh0bWwgKz0K
LSAgICAgICAgICAnPHRyPjx0ZCBjbGFzcz0ibGFiZWwiPicgKyBsYWJlbCArICc8L3RkPjx0ZD4n
ICsgdmFsdWUgKyAnPC90ZD48L3RyPic7CisgICAgZnVuY3Rpb24gYWRkUm93KGxhYmVsLCB2YWx1
ZSkKKyAgICB7CisgICAgICAgIGh0bWwgKz0gJzx0cj48dGQgY2xhc3M9ImxhYmVsIj4nICsgbGFi
ZWwgKyAnPC90ZD48dGQ+JyArIHZhbHVlICsgJzwvdGQ+PC90cj4nOwogICAgIH0KIAogICAgIC8v
IEJ1aWxkZXIgYW5kIHJlc3VsdHMgbGlua3MKICAgICB2YXIgYnVpbGROdW1iZXIgPSByZXN1bHRz
W0JVSUxEX05VTUJFUlNfS0VZXVtpbmRleF07CiAgICAgYWRkUm93KCcnLCAnJyk7Ci0gICAgdmFy
IG1hc3RlciA9IGdldEJ1aWxkZXJNYXN0ZXIoYnVpbGRlcik7CisgICAgdmFyIG1hc3RlciA9IGJ1
aWxkZXJNYXN0ZXIoYnVpbGRlcik7CiAgICAgdmFyIGJ1aWxkVXJsID0gbWFzdGVyLmdldExvZ1Bh
dGgoYnVpbGRlciwgcmVzdWx0c1tCVUlMRF9OVU1CRVJTX0tFWV1baW5kZXhdKTsKICAgICBpZiAo
bWFzdGVyID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewotICAgICAgdmFyIHJlc3VsdHNVcmwg
PQotICAgICAgICAgICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzLycgKyBidWlsZGVy
ICsgJy9yJyArCi0gICAgICAgICAgICAgIHJlc3VsdHNbV0VCS0lUX1JFVklTSU9OU19LRVldW2lu
ZGV4XSArCi0gICAgICAgICAgICAgICcgKCcgKyByZXN1bHRzW0JVSUxEX05VTUJFUlNfS0VZXVtp
bmRleF0gKyAnKSc7CisgICAgICAgIHZhciByZXN1bHRzVXJsID0gJ2h0dHA6Ly9idWlsZC53ZWJr
aXQub3JnL3Jlc3VsdHMvJyArIGJ1aWxkZXIgKyAnL3InICsgcmVzdWx0c1tXRUJLSVRfUkVWSVNJ
T05TX0tFWV1baW5kZXhdICsKKyAgICAgICAgICAgICcgKCcgKyByZXN1bHRzW0JVSUxEX05VTUJF
UlNfS0VZXVtpbmRleF0gKyAnKSc7CiAgICAgfSBlbHNlIHsKLSAgICAgIHZhciByZXN1bHRzVXJs
ID0KLSAgICAgICAgICAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91
dF90ZXN0X3Jlc3VsdHMvJyArCi0gICAgICAgICAgZ19idWlsZGVyc1tidWlsZGVyXSArICcvJyAr
IHJlc3VsdHNbQ0hST01FX1JFVklTSU9OU19LRVldW2luZGV4XTsKKyAgICAgICAgdmFyIHJlc3Vs
dHNVcmwgPSAnaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0
X3Jlc3VsdHMvJyArCisgICAgICAgICAgICBnX2J1aWxkZXJzW2J1aWxkZXJdICsgJy8nICsgcmVz
dWx0c1tDSFJPTUVfUkVWSVNJT05TX0tFWV1baW5kZXhdOwogICAgIH0KIAotICAgIGFkZFJvdygK
LSAgICAgICAgJ0J1aWxkOicsCi0gICAgICAgICc8YSBocmVmPSInICsgYnVpbGRVcmwgKyAnIiB0
YXJnZXQ9Il9ibGFuayI+JyArIGJ1aWxkTnVtYmVyICsgJzwvYT4nICsKLSAgICAgICAgJyAoPGEg
aHJlZj0iJyArIHJlc3VsdHNVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+cmVzdWx0czwvYT4pJyk7
CisgICAgYWRkUm93KCdCdWlsZDonLCAnPGEgaHJlZj0iJyArIGJ1aWxkVXJsICsgJyIgdGFyZ2V0
PSJfYmxhbmsiPicgKyBidWlsZE51bWJlciArICc8L2E+ICg8YSBocmVmPSInICsgcmVzdWx0c1Vy
bCArICciIHRhcmdldD0iX2JsYW5rIj5yZXN1bHRzPC9hPiknKTsKIAogICAgIC8vIFJldmlzaW9u
IGxpbmsocykKLSAgICBpZiAoIXNob3VsZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5KSB7Ci0gICAg
ICBhZGRSb3coJ0Nocm9taXVtIGNoYW5nZTonLCBnZXRDaHJvbWl1bVJldmlzaW9uTGluayhyZXN1
bHRzLCBpbmRleCkpOwotICAgIH0KLSAgICBhZGRSb3coJ1dlYktpdCBjaGFuZ2U6JywgZ2V0V2Vi
S2l0UmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KSk7CisgICAgaWYgKCFnX3Nob3VsZFNob3dX
ZWJLaXRSZXZpc2lvbnNPbmx5KQorICAgICAgICBhZGRSb3coJ0Nocm9taXVtIGNoYW5nZTonLCBj
aHJvbWl1bVJldmlzaW9uTGluayhyZXN1bHRzLCBpbmRleCkpOworICAgIGFkZFJvdygnV2ViS2l0
IGNoYW5nZTonLCB3ZWJLaXRSZXZpc2lvbkxpbmsocmVzdWx0cywgaW5kZXgpKTsKIAogICAgIC8v
IFRlc3Qgc3RhdHVzL2NvdW50cwogICAgIGFkZFJvdygnJywgJycpOwogCi0gICAgZnVuY3Rpb24g
YWRkTnVtYmVyUm93KGxhYmVsLCBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUpIHsKLSAgICAg
IHZhciBkZWx0YSA9IGN1cnJlbnRWYWx1ZSAtIHByZXZpb3VzVmFsdWU7Ci0gICAgICB2YXIgZGVs
dGFUZXh0ID0gJycKLSAgICAgIGlmIChkZWx0YSA8IDApIHsKLSAgICAgICAgZGVsdGFUZXh0ID0g
JyA8c3BhbiBjbGFzcz0iZGVsdGEgbmVnYXRpdmUiPicgKyBkZWx0YSArICc8L3NwYW4+JzsKLSAg
ICAgIH0gZWxzZSBpZiAoZGVsdGEgPiAwKSB7Ci0gICAgICAgIGRlbHRhVGV4dCA9ICcgPHNwYW4g
Y2xhc3M9ImRlbHRhIHBvc2l0aXZlIj4rJyArIGRlbHRhICsgJzwvc3Bhbj4nOwotICAgICAgfQor
ICAgIGZ1bmN0aW9uIGFkZE51bWJlclJvdyhsYWJlbCwgY3VycmVudFZhbHVlLCBwcmV2aW91c1Zh
bHVlKQorICAgIHsKKyAgICAgICAgdmFyIGRlbHRhID0gY3VycmVudFZhbHVlIC0gcHJldmlvdXNW
YWx1ZTsKKyAgICAgICAgdmFyIGRlbHRhVGV4dCA9ICcnCisgICAgICAgIGlmIChkZWx0YSA8IDAp
CisgICAgICAgICAgICBkZWx0YVRleHQgPSAnIDxzcGFuIGNsYXNzPSJkZWx0YSBuZWdhdGl2ZSI+
JyArIGRlbHRhICsgJzwvc3Bhbj4nOworICAgICAgICBlbHNlIGlmIChkZWx0YSA+IDApCisgICAg
ICAgICAgICBkZWx0YVRleHQgPSAnIDxzcGFuIGNsYXNzPSJkZWx0YSBwb3NpdGl2ZSI+KycgKyBk
ZWx0YSArICc8L3NwYW4+JzsKIAotICAgICAgYWRkUm93KGxhYmVsLCBjdXJyZW50VmFsdWUgKyBk
ZWx0YVRleHQpOworICAgICAgICBhZGRSb3cobGFiZWwsIGN1cnJlbnRWYWx1ZSArIGRlbHRhVGV4
dCk7CiAgICAgfQogCi0gICAgdmFyIGV4cGVjdGF0aW9uc01hcCA9IGdldEV4cGVjdGF0aW9uc01h
cCgpOwotICAgIHZhciBmbGFreURlbHRhc0J5QnVpbGQgPSBjdXJyZW50QnVpbGRlclRlc3RSZXN1
bHRzLmZsYWt5RGVsdGFzQnlCdWlsZDsKLSAgICBmb3IgKHZhciBleHBlY3RhdGlvbktleSBpbiBl
eHBlY3RhdGlvbnNNYXApIHsKLSAgICAgIGlmIChleHBlY3RhdGlvbktleSBpbiByZXN1bHRzW0ZJ
WEFCTEVfQ09VTlRTX0tFWV1baW5kZXhdKSB7Ci0gICAgICAgIHZhciBjdXJyZW50Q291bnQgPQot
ICAgICAgICAgICAgcmVzdWx0c1tGSVhBQkxFX0NPVU5UU19LRVldW2luZGV4XVtleHBlY3RhdGlv
bktleV07Ci0gICAgICAgIHZhciBwcmV2aW91c0NvdW50ID0KLSAgICAgICAgICAgIHJlc3VsdHNb
RklYQUJMRV9DT1VOVFNfS0VZXVtpbmRleCArIDFdW2V4cGVjdGF0aW9uS2V5XTsKLSAgICAgICAg
aWYgKGdfY3VycmVudFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMpIHsKLSAgICAgICAgICBjdXJyZW50
Q291bnQgLT0gZmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4XVtleHBlY3RhdGlvbktleV0gfHwgMDsK
LSAgICAgICAgICBwcmV2aW91c0NvdW50IC09IGZsYWt5RGVsdGFzQnlCdWlsZFtpbmRleCArIDFd
W2V4cGVjdGF0aW9uS2V5XSB8fCAwOworICAgIHZhciBleHBlY3RhdGlvbnMgPSBleHBlY3RhdGlv
bnNNYXAoKTsKKyAgICB2YXIgZmxha3lEZWx0YXNCeUJ1aWxkID0gZ19jdXJyZW50QnVpbGRlclRl
c3RSZXN1bHRzLmZsYWt5RGVsdGFzQnlCdWlsZDsKKyAgICBmb3IgKHZhciBleHBlY3RhdGlvbktl
eSBpbiBleHBlY3RhdGlvbnMpIHsKKyAgICAgICAgaWYgKGV4cGVjdGF0aW9uS2V5IGluIHJlc3Vs
dHNbRklYQUJMRV9DT1VOVFNfS0VZXVtpbmRleF0pIHsKKyAgICAgICAgICAgIHZhciBjdXJyZW50
Q291bnQgPSByZXN1bHRzW0ZJWEFCTEVfQ09VTlRTX0tFWV1baW5kZXhdW2V4cGVjdGF0aW9uS2V5
XTsKKyAgICAgICAgICAgIHZhciBwcmV2aW91c0NvdW50ID0gcmVzdWx0c1tGSVhBQkxFX0NPVU5U
U19LRVldW2luZGV4ICsgMV1bZXhwZWN0YXRpb25LZXldOworICAgICAgICAgICAgaWYgKGdfY3Vy
cmVudFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q291
bnQgLT0gZmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4XVtleHBlY3RhdGlvbktleV0gfHwgMDsKKyAg
ICAgICAgICAgICAgICBwcmV2aW91c0NvdW50IC09IGZsYWt5RGVsdGFzQnlCdWlsZFtpbmRleCAr
IDFdW2V4cGVjdGF0aW9uS2V5XSB8fCAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRk
TnVtYmVyUm93KGV4cGVjdGF0aW9uc1tleHBlY3RhdGlvbktleV0sIGN1cnJlbnRDb3VudCwgcHJl
dmlvdXNDb3VudCk7CiAgICAgICAgIH0KLSAgICAgICAgYWRkTnVtYmVyUm93KAotICAgICAgICAg
ICAgZXhwZWN0YXRpb25zTWFwW2V4cGVjdGF0aW9uS2V5XSwgY3VycmVudENvdW50LCBwcmV2aW91
c0NvdW50KTsKLSAgICAgIH0KICAgICB9CiAKICAgICB2YXIgY3VycmVudFRvdGFsID0gcmVzdWx0
c1tGSVhBQkxFX0NPVU5UX0tFWV1baW5kZXhdOwogICAgIHZhciBwcmV2aW91c1RvdGFsID0gcmVz
dWx0c1tGSVhBQkxFX0NPVU5UX0tFWV1baW5kZXggKyAxXTsKICAgICBpZiAoZ19jdXJyZW50U3Rh
dGUuaWdub3JlRmxha3lUZXN0cykgewotICAgICAgY3VycmVudFRvdGFsIC09IGZsYWt5RGVsdGFz
QnlCdWlsZFtpbmRleF0udG90YWwgfHwgMDsKLSAgICAgIHByZXZpb3VzVG90YWwgLT0gZmxha3lE
ZWx0YXNCeUJ1aWxkW2luZGV4ICsgMV0udG90YWwgfHwgMDsKKyAgICAgICAgY3VycmVudFRvdGFs
IC09IGZsYWt5RGVsdGFzQnlCdWlsZFtpbmRleF0udG90YWwgfHwgMDsKKyAgICAgICAgcHJldmlv
dXNUb3RhbCAtPSBmbGFreURlbHRhc0J5QnVpbGRbaW5kZXggKyAxXS50b3RhbCB8fCAwOwogICAg
IH0KLSAgICBhZGROdW1iZXJSb3coCi0gICAgICAgICdUb3RhbCBmYWlsaW5nIHRlc3RzOicsIGN1
cnJlbnRUb3RhbCwgcHJldmlvdXNUb3RhbCk7CisgICAgYWRkTnVtYmVyUm93KCdUb3RhbCBmYWls
aW5nIHRlc3RzOicsIGN1cnJlbnRUb3RhbCwgcHJldmlvdXNUb3RhbCk7CiAKICAgICBodG1sICs9
ICc8L3RhYmxlPic7CiAKQEAgLTM2OCw3MiArMzQ4LDU2IEBAIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgaW5z
cGVjdG9yTm9kZS5pbm5lckhUTUwgPSBodG1sOwogCiAgICAgaW5zcGVjdG9yTm9kZS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnYnV0dG9uJylbMF0ub25jbGljayA9IGZ1bmN0aW9uKCkgewotICAgICAg
c2hvd1Jlc3VsdHNEZWx0YShpbmRleCwgYnVpbGROdW1iZXIsIGJ1aWxkVXJsLCByZXN1bHRzVXJs
KTsKKyAgICAgICAgc2hvd1Jlc3VsdHNEZWx0YShpbmRleCwgYnVpbGROdW1iZXIsIGJ1aWxkVXJs
LCByZXN1bHRzVXJsKTsKICAgICB9OwogICAgIGluc3BlY3Rvck5vZGUuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2J1dHRvbicpWzFdLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKLSAgICAgIHNlbGVjdEJ1
aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4ICsgMSk7CisgICAgICAgIHNlbGVj
dEJ1aWxkKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4ICsgMSk7CiAgICAgfTsKICAg
ICBpbnNwZWN0b3JOb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVsyXS5vbmNsaWNr
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVyLCBkeWdy
YXBoLCBpbmRleCAtIDEpOworICAgICAgICBzZWxlY3RCdWlsZChyZXN1bHRzLCBidWlsZGVyLCBk
eWdyYXBoLCBpbmRleCAtIDEpOwogICAgIH07Ci0gIH0KK30KIAotICBmdW5jdGlvbiBzaG93UmVz
dWx0c0RlbHRhKGluZGV4LCBidWlsZE51bWJlciwgYnVpbGRVcmwsIHJlc3VsdHNVcmwpIHsKLSAg
ICB2YXIgZmxha3lUZXN0cyA9IGN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMuZmxha3lUZXN0czsK
LSAgICB2YXIgY3VycmVudFJlc3VsdHMgPSBjdXJyZW50QnVpbGRlclRlc3RSZXN1bHRzLnJlc3Vs
dHNCeUJ1aWxkW2luZGV4XTsKLSAgICB2YXIgdGVzdE5hbWVzID0gY3VycmVudEJ1aWxkZXJUZXN0
UmVzdWx0cy50ZXN0TmFtZXM7Ci0gICAgdmFyIHByZXZpb3VzUmVzdWx0cyA9IGN1cnJlbnRCdWls
ZGVyVGVzdFJlc3VsdHMucmVzdWx0c0J5QnVpbGRbaW5kZXggKyAxXTsKLSAgICB2YXIgZXhwZWN0
YXRpb25zTWFwID0gZ2V0RXhwZWN0YXRpb25zTWFwKCk7CitmdW5jdGlvbiBzaG93UmVzdWx0c0Rl
bHRhKGluZGV4LCBidWlsZE51bWJlciwgYnVpbGRVcmwsIHJlc3VsdHNVcmwpCit7CisgICAgdmFy
IGZsYWt5VGVzdHMgPSBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMuZmxha3lUZXN0czsKKyAg
ICB2YXIgY3VycmVudFJlc3VsdHMgPSBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMucmVzdWx0
c0J5QnVpbGRbaW5kZXhdOworICAgIHZhciB0ZXN0TmFtZXMgPSBnX2N1cnJlbnRCdWlsZGVyVGVz
dFJlc3VsdHMudGVzdE5hbWVzOworICAgIHZhciBwcmV2aW91c1Jlc3VsdHMgPSBnX2N1cnJlbnRC
dWlsZGVyVGVzdFJlc3VsdHMucmVzdWx0c0J5QnVpbGRbaW5kZXggKyAxXTsKKyAgICB2YXIgZXhw
ZWN0YXRpb25zID0gZXhwZWN0YXRpb25zTWFwKCk7CiAKICAgICB2YXIgZGVsdGFzID0ge307Ci0g
ICAgZnVuY3Rpb24gYWRkRGVsdGEoY2F0ZWdvcnksIHRlc3RJbmRleCkgewotICAgICAgaWYgKGdf
Y3VycmVudFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMgJiYgZmxha3lUZXN0c1t0ZXN0SW5kZXhdKSB7
Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGlmICghKGNhdGVnb3J5IGluIGRlbHRh
cykpIHsKLSAgICAgICAgZGVsdGFzW2NhdGVnb3J5XSA9IFtdOwotICAgICAgfQotICAgICAgdmFy
IHRlc3ROYW1lID0gdGVzdE5hbWVzW3Rlc3RJbmRleF07Ci0gICAgICB2YXIgZmxha2luZXNzRGFz
aGJvYXJkVXJsID0KLSAgICAgICAgICAnZmxha2luZXNzX2Rhc2hib2FyZC5odG1sJyArCi0gICAg
ICAgICAgKGxvY2F0aW9uLmhhc2ggPyBsb2NhdGlvbi5oYXNoICsgJyYnIDogJyMnKSArCi0gICAg
ICAgICAgJ3Rlc3RzPScgKyB0ZXN0TmFtZTsKLSAgICAgIHZhciBodG1sID0gJzxhIGhyZWY9Iicg
KwotICAgICAgICAgIGZsYWtpbmVzc0Rhc2hib2FyZFVybCArICciPicgKyB0ZXN0TmFtZSArICc8
L2E+JzsKLSAgICAgIGlmIChmbGFreVRlc3RzW3Rlc3RJbmRleF0pIHsKLSAgICAgICAgaHRtbCAr
PSAnIDxzcGFuIHN0eWxlPSJjb2xvcjogI2Y2NiI+cG9zc2libHkgZmxha3k8L3NwYW4+JzsKLSAg
ICAgIH0KLQotICAgICAgZGVsdGFzW2NhdGVnb3J5XS5wdXNoKGh0bWwpOworICAgIGZ1bmN0aW9u
IGFkZERlbHRhKGNhdGVnb3J5LCB0ZXN0SW5kZXgpCisgICAgeworICAgICAgICBpZiAoZ19jdXJy
ZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cyAmJiBmbGFreVRlc3RzW3Rlc3RJbmRleF0pCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghKGNhdGVnb3J5IGluIGRlbHRhcykpCisgICAg
ICAgICAgICBkZWx0YXNbY2F0ZWdvcnldID0gW107CisgICAgICAgIHZhciB0ZXN0TmFtZSA9IHRl
c3ROYW1lc1t0ZXN0SW5kZXhdOworICAgICAgICB2YXIgZmxha2luZXNzRGFzaGJvYXJkVXJsID0g
J2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbCcgKyAobG9jYXRpb24uaGFzaCA/IGxvY2F0aW9uLmhh
c2ggKyAnJicgOiAnIycpICsgJ3Rlc3RzPScgKyB0ZXN0TmFtZTsKKyAgICAgICAgdmFyIGh0bWwg
PSAnPGEgaHJlZj0iJyArIGZsYWtpbmVzc0Rhc2hib2FyZFVybCArICciPicgKyB0ZXN0TmFtZSAr
ICc8L2E+JzsKKyAgICAgICAgaWYgKGZsYWt5VGVzdHNbdGVzdEluZGV4XSkKKyAgICAgICAgICAg
IGh0bWwgKz0gJyA8c3BhbiBzdHlsZT0iY29sb3I6ICNmNjYiPnBvc3NpYmx5IGZsYWt5PC9zcGFu
Pic7CisgICAgICAgIGRlbHRhc1tjYXRlZ29yeV0ucHVzaChodG1sKTsKICAgICB9CiAKICAgICBm
b3IgKHZhciB0ZXN0SW5kZXggPSAwOyB0ZXN0SW5kZXggPCBjdXJyZW50UmVzdWx0cy5sZW5ndGg7
IHRlc3RJbmRleCsrKSB7Ci0gICAgICBpZiAoY3VycmVudFJlc3VsdHNbdGVzdEluZGV4XSA9PT0g
dW5kZWZpbmVkKSB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotCi0gICAgICBpZiAocHJl
dmlvdXNSZXN1bHRzW3Rlc3RJbmRleF0gIT09IHVuZGVmaW5lZCkgewotICAgICAgICBpZiAoY3Vy
cmVudFJlc3VsdHNbdGVzdEluZGV4XSA9PSBwcmV2aW91c1Jlc3VsdHNbdGVzdEluZGV4XSkgewot
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGFkZERlbHRhKAotICAgICAg
ICAgICAgJ1dhcyA8Yj4nICsgZXhwZWN0YXRpb25zTWFwW3ByZXZpb3VzUmVzdWx0c1t0ZXN0SW5k
ZXhdXSArICc8L2I+ICcgKwotICAgICAgICAgICAgJ25vdyA8Yj4nICsgZXhwZWN0YXRpb25zTWFw
W2N1cnJlbnRSZXN1bHRzW3Rlc3RJbmRleF1dICsgJzwvYj4nLAotICAgICAgICAgICAgdGVzdElu
ZGV4KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZERlbHRhKAotICAgICAgICAgICAgJ05l
d2x5IDxiPicgKyBleHBlY3RhdGlvbnNNYXBbY3VycmVudFJlc3VsdHNbdGVzdEluZGV4XV0gKyAn
PC9iPicsCi0gICAgICAgICAgICB0ZXN0SW5kZXgpOwotICAgICAgfQorICAgICAgICBpZiAoY3Vy
cmVudFJlc3VsdHNbdGVzdEluZGV4XSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKHByZXZpb3VzUmVzdWx0c1t0ZXN0SW5kZXhdICE9PSB1bmRlZmlu
ZWQpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UmVzdWx0c1t0ZXN0SW5kZXhdID09IHByZXZp
b3VzUmVzdWx0c1t0ZXN0SW5kZXhdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgYWRkRGVsdGEoJ1dhcyA8Yj4nICsgZXhwZWN0YXRpb25zW3ByZXZpb3VzUmVzdWx0c1t0
ZXN0SW5kZXhdXSArICc8L2I+IG5vdyA8Yj4nICsgZXhwZWN0YXRpb25zW2N1cnJlbnRSZXN1bHRz
W3Rlc3RJbmRleF1dICsgJzwvYj4nLCB0ZXN0SW5kZXgpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGFkZERlbHRhKCdOZXdseSA8Yj4nICsgZXhwZWN0YXRpb25zW2N1cnJlbnRSZXN1bHRz
W3Rlc3RJbmRleF1dICsgJzwvYj4nLCB0ZXN0SW5kZXgpOwogICAgIH0KIAogICAgIGZvciAodmFy
IHRlc3RJbmRleCA9IDA7IHRlc3RJbmRleCA8IHByZXZpb3VzUmVzdWx0cy5sZW5ndGg7IHRlc3RJ
bmRleCsrKSB7Ci0gICAgICBpZiAocHJldmlvdXNSZXN1bHRzW3Rlc3RJbmRleF0gPT09IHVuZGVm
aW5lZCkgY29udGludWU7Ci0gICAgICBpZiAoY3VycmVudFJlc3VsdHNbdGVzdEluZGV4XSA9PT0g
dW5kZWZpbmVkKSB7Ci0gICAgICAgIGFkZERlbHRhKAotICAgICAgICAgICAgJ1dhcyA8Yj4nICsg
ZXhwZWN0YXRpb25zTWFwW3ByZXZpb3VzUmVzdWx0c1t0ZXN0SW5kZXhdXSArICc8L2I+JywKLSAg
ICAgICAgICAgIHRlc3RJbmRleCk7Ci0gICAgICB9CisgICAgICAgIGlmIChwcmV2aW91c1Jlc3Vs
dHNbdGVzdEluZGV4XSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmIChjdXJyZW50UmVzdWx0c1t0ZXN0SW5kZXhdID09PSB1bmRlZmluZWQpCisgICAgICAg
ICAgICBhZGREZWx0YSgnV2FzIDxiPicgKyBleHBlY3RhdGlvbnNbcHJldmlvdXNSZXN1bHRzW3Rl
c3RJbmRleF1dICsgJzwvYj4nLCB0ZXN0SW5kZXgpOwogICAgIH0KIAogICAgIHZhciBodG1sID0g
Jyc7CkBAIC00NDYsNDYgKzQxMCw0NyBAQCBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgICAgICAnIiB0YXJnZXQ9
Il9ibGFuayI+cmVzdWx0czwvYT4pPC9wPic7CiAKICAgICBmb3IgKHZhciBkZWx0YUNhdGVnb3J5
IGluIGRlbHRhcykgewotICAgICAgaHRtbCArPSAnPHA+PGRpdj4nICsgZGVsdGFDYXRlZ29yeSAr
ICcgKCcgKyBkZWx0YXNbZGVsdGFDYXRlZ29yeV0ubGVuZ3RoICsgJyk8L2Rpdj48dWw+JzsKLSAg
ICAgIGRlbHRhc1tkZWx0YUNhdGVnb3J5XS5mb3JFYWNoKGZ1bmN0aW9uKGRlbHRhSHRtbCkgewot
ICAgICAgICBodG1sICs9ICc8bGk+JyArIGRlbHRhSHRtbCArICc8L2xpPic7Ci0gICAgICB9KTsK
LSAgICAgIGh0bWwgKz0gJzwvdWw+PC9wPic7CisgICAgICAgIGh0bWwgKz0gJzxwPjxkaXY+JyAr
IGRlbHRhQ2F0ZWdvcnkgKyAnICgnICsgZGVsdGFzW2RlbHRhQ2F0ZWdvcnldLmxlbmd0aCArICcp
PC9kaXY+PHVsPic7CisgICAgICAgIGRlbHRhc1tkZWx0YUNhdGVnb3J5XS5mb3JFYWNoKGZ1bmN0
aW9uKGRlbHRhSHRtbCkgeworICAgICAgICAgICAgaHRtbCArPSAnPGxpPicgKyBkZWx0YUh0bWwg
KyAnPC9saT4nOworICAgICAgICB9KTsKKyAgICAgICAgaHRtbCArPSAnPC91bD48L3A+JzsKICAg
ICB9CiAKICAgICB2YXIgZGVsdGFXaW5kb3cgPSB3aW5kb3cub3BlbigpOwogICAgIGRlbHRhV2lu
ZG93LmRvY3VtZW50LndyaXRlKGh0bWwpOwotICB9Cit9CiAKLSAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKLSAgICBpZiAoY3VycmVudEJ1aWxkSW5k
ZXggPT0gLTEpIHJldHVybjsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBm
dW5jdGlvbihlKSB7CisgICAgaWYgKGdfY3VycmVudEJ1aWxkSW5kZXggPT0gLTEpCisgICAgICAg
IHJldHVybjsKIAogICAgIHN3aXRjaCAoZS5rZXlJZGVudGlmaWVyKSB7Ci0gICAgICBjYXNlICdM
ZWZ0JzoKKyAgICBjYXNlICdMZWZ0JzoKICAgICAgICAgc2VsZWN0QnVpbGQoCiAgICAgICAgICAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0sCiAgICAgICAgICAg
ICBnX2N1cnJlbnRTdGF0ZS5idWlsZGVyLAotICAgICAgICAgICAgZHlncmFwaCwKLSAgICAgICAg
ICAgIGN1cnJlbnRCdWlsZEluZGV4ICsgMSk7CisgICAgICAgICAgICBnX2R5Z3JhcGgsCisgICAg
ICAgICAgICBnX2N1cnJlbnRCdWlsZEluZGV4ICsgMSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSAnUmlnaHQnOgorICAgIGNhc2UgJ1JpZ2h0JzoKICAgICAgICAgc2VsZWN0QnVpbGQoCiAg
ICAgICAgICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0sCiAg
ICAgICAgICAgICBnX2N1cnJlbnRTdGF0ZS5idWlsZGVyLAotICAgICAgICAgICAgZHlncmFwaCwK
LSAgICAgICAgICAgIGN1cnJlbnRCdWlsZEluZGV4IC0gMSk7CisgICAgICAgICAgICBnX2R5Z3Jh
cGgsCisgICAgICAgICAgICBnX2N1cnJlbnRCdWlsZEluZGV4IC0gMSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgfSk7Ci0gIDwvc2NyaXB0PgotICA8L2hlYWQ+Ci0gIDxib2R5PgorfSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgogICAgIDxkaXYgaWQ9InRlc3QtdHlwZS1zd2l0Y2hl
ciI+PC9kaXY+CiAKICAgICA8ZGl2IGlkPSJpbnNwZWN0b3ItY29udGFpbmVyIiBzdHlsZT0idmlz
aWJpbGl0eTogaGlkZGVuIj4KLSAgICAgIDxwPkNsaWNrIG9uIGEgcG9pbnQgb24gdGhlIGdyYXBo
IHRvIHNlZSBkZXRhaWxzIGFib3V0IHRoYXQgYnVpbGQuPC9wPgotICAgICAgPHA+Q2xpY2sgYW5k
IGRyYWcgb24gdGhlIGdyYXBoIHRvIHpvb20gaW4gdG8gdGhhdCBwZXJpb2QuPC9wPgorICAgICAg
ICA8cD5DbGljayBvbiBhIHBvaW50IG9uIHRoZSBncmFwaCB0byBzZWUgZGV0YWlscyBhYm91dCB0
aGF0IGJ1aWxkLjwvcD4KKyAgICAgICAgPHA+Q2xpY2sgYW5kIGRyYWcgb24gdGhlIGdyYXBoIHRv
IHpvb20gaW4gdG8gdGhhdCBwZXJpb2QuPC9wPgogICAgIDwvZGl2PgogICAgIDxkaXYgaWQ9InRp
bWVsaW5lLWNvbnRhaW5lciI+TG9hZGluZy4uLjwvZGl2PgotICA8L2JvZHk+Cis8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL3RyZWVtYXAuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvdHJlZW1hcC5odG1sCmluZGV4IGUyOTgzOWJhMTJkYzMzZDcxMTRjNjBlMDhiNjg2ZThjYWUx
NDk1NGMuLmE1OTIzZjQxNjY1ZTU4ODYyNTJmYjNkOTY3ZDkwODU4MTM4YTNjMzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5o
dG1sCkBAIC0zMSw3MiArMzEsNzIgQEAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxsaW5rIHJlbD0nc3R5bGVzaGVl
dCcgaHJlZj0nd2VidHJlZW1hcC5jc3MnPjwvbGluaz4KIDxzdHlsZT4KIGJvZHkgewotICBkaXNw
bGF5OiAtbW96LWJveDsKLSAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gIGRpc3BsYXk6IGJveDsK
LSAgLW1vei1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKLSAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0
aWNhbDsKLSAgYm94LW9yaWVudDogdmVydGljYWw7Ci0KLSAgcG9zaXRpb246IGFic29sdXRlOwot
ICB0b3A6IDA7Ci0gIHJpZ2h0OiAwOwotICBib3R0b206IDA7Ci0gIGxlZnQ6IDA7CisgICAgZGlz
cGxheTogLW1vei1ib3g7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgZGlzcGxheTog
Ym94OworICAgIC1tb3otYm94LW9yaWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtb3Jp
ZW50OiB2ZXJ0aWNhbDsKKyAgICBib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOwor
ICAgIGxlZnQ6IDA7CiB9CiAKICNtYXAgewotICBkaXNwbGF5OiAtbW96LWJveDsKLSAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7Ci0gIGRpc3BsYXk6IGJveDsKLQotICAtbW96LWJveC1mbGV4OiAxOwot
ICAtd2Via2l0LWJveC1mbGV4OiAxOwotICBib3gtZmxleDogMTsKLQotICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gIGN1cnNvcjogcG9pbnRlcjsKLSAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsK
LSAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBkaXNwbGF5OiAtbW96LWJveDsKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICBkaXNwbGF5OiBib3g7CisKKyAgICAtbW96LWJveC1m
bGV4OiAxOworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgYm94LWZsZXg6IDE7CisKKyAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIC13ZWJraXQt
dXNlci1zZWxlY3Q6IG5vbmU7CisgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKIH0KIAogLmV4
dHJhLWRvbSB7Ci0gIGRpc3BsYXk6IG5vbmU7Ci0gIGJvcmRlcjogbm9uZTsKLSAgYm9yZGVyLXRv
cDogMXB4IGRhc2hlZDsKLSAgcGFkZGluZzogNHB4OwotICBtYXJnaW46IDA7Ci0gIG92ZXJmbG93
OiBhdXRvOwotICBjdXJzb3I6IGF1dG87Ci0gIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7Ci0g
IC1tb3otdXNlci1zZWxlY3Q6IHRleHQ7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBib3JkZXI6
IG5vbmU7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZDsKKyAgICBwYWRkaW5nOiA0cHg7Cisg
ICAgbWFyZ2luOiAwOworICAgIG92ZXJmbG93OiBhdXRvOworICAgIGN1cnNvcjogYXV0bzsKKyAg
ICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OworICAgIC1tb3otdXNlci1zZWxlY3Q6IHRleHQ7
CiB9CiAKICNmb2N1c2VkLWxlYWYgewotICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgZGlzcGxh
eTogLW1vei1ib3g7Ci0gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7Ci0gIC1tb3otYm94
LW9yaWVudDogdmVydGljYWw7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgZGlzcGxh
eTogLW1vei1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtbW96
LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogfQogCiAjZm9jdXNlZC1sZWFmID4gLmV4dHJhLWRvbSB7
Ci0gIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICBkaXNwbGF5OiAtbW96LWJveDsKLSAgLXdlYmtp
dC1ib3gtZmxleDogMTsKLSAgLW1vei1ib3gtZmxleDogMTsKKyAgICBkaXNwbGF5OiAtd2Via2l0
LWJveDsKKyAgICBkaXNwbGF5OiAtbW96LWJveDsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOwor
ICAgIC1tb3otYm94LWZsZXg6IDE7CiB9CiAKICNmb2N1c2VkLWxlYWYud2VidHJlZW1hcC1ub2Rl
OmhvdmVyIHsKLSAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgYmFja2dyb3VuZDogd2hpdGU7CiB9
CiAKICNmb2N1c2VkLWxlYWYgLndlYnRyZWVtYXAtY2FwdGlvbjpob3ZlciB7Ci0gIGJhY2tncm91
bmQ6ICNlZWU7CisgICAgYmFja2dyb3VuZDogI2VlZTsKIH0KIAogLmVycm9yIHsKLSAgY29sb3I6
IHJlZDsKLSAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGNvbG9yOiByZWQ7CisgICAgZm9udC1z
dHlsZTogaXRhbGljOwogfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+PC9z
Y3JpcHQ+CkBAIC0xMDQsMjA0ICsxMDQsMjEwIEBAIGJvZHkgewogPHNjcmlwdCBzcmM9J3dlYnRy
ZWVtYXAuanMnPjwvc2NyaXB0PgogCiA8ZGl2IGlkPSdoZWFkZXItY29udGFpbmVyJz48L2Rpdj4K
LTxwPkNsaWNrIG9uIGEgYm94IHRvIHpvb20gaW4uICBDbGljayBvbiB0aGUgb3V0ZXJtb3N0IGJv
eCB0byB6b29tIG91dC48L3A+Cis8cD5DbGljayBvbiBhIGJveCB0byB6b29tIGluLiAgICBDbGlj
ayBvbiB0aGUgb3V0ZXJtb3N0IGJveCB0byB6b29tIG91dC48L3A+CiA8ZGl2IGlkPSdtYXAnPjwv
ZGl2PgogCiA8c2NyaXB0PgotJCgnaGVhZGVyLWNvbnRhaW5lcicpLmlubmVySFRNTCA9IGdldEhU
TUxGb3JUZXN0VHlwZVN3aXRjaGVyKCk7CiskKCdoZWFkZXItY29udGFpbmVyJykuaW5uZXJIVE1M
ID0gaHRtbEZvclRlc3RUeXBlU3dpdGNoZXIoKTsKIAogdmFyIFRFU1RfVVJMX0JBU0VfUEFUSCA9
ICJodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvIjsKIAogLy8g
VGhpcyBsb29rcyBsaWtlOgogLy8geyAiZGF0YSI6IHsiJGFyZWEiOiAoc3VtIG9mIGFsbCB0aW1p
bmdzKX0sCi0vLyAgICJuYW1lIjogKG5hbWUgb2YgdGhpcyBub2RlKSwKLS8vICAgImNoaWxkcmVu
IjogWyAoY2hpbGQgbm9kZXMsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGlzKSBdIH0KKy8vICAg
ICAibmFtZSI6IChuYW1lIG9mIHRoaXMgbm9kZSksCisvLyAgICAgImNoaWxkcmVuIjogWyAoY2hp
bGQgbm9kZXMsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGlzKSBdIH0KIC8vIGNoaWxkQ291bnQg
aXMgYWRkZWQganVzdCB0byBiZSBpbmNsdWRlcyBpbiB0aGUgbm9kZSdzIG5hbWUKLWZ1bmN0aW9u
IGNvbnZlcnRUb1dlYlRyZWVtYXBGb3JtYXQodHJlZW5hbWUsIHRyZWUpIHsKLSAgdmFyIHRvdGFs
ID0gMDsKLSAgdmFyIGNoaWxkQ291bnQgPSAwOwotICB2YXIgY2hpbGRyZW4gPSBbXTsKLSAgZm9y
ICh2YXIgbmFtZSBpbiB0cmVlKSB7Ci0gICAgdmFyIHRyZWVOb2RlID0gdHJlZVtuYW1lXTsKLSAg
ICBpZiAodHlwZW9mIHRyZWVOb2RlID09ICJudW1iZXIiKSB7Ci0gICAgICB2YXIgdGltZSA9IHRy
ZWVOb2RlOwotICAgICAgdmFyIG5vZGUgPSB7Ci0gICAgICAgICJkYXRhIjogeyIkYXJlYSI6IHRp
bWV9LAotICAgICAgICAibmFtZSI6IG5hbWUgKyAiICgiICsgdGltZSArICJtcykiCi0gICAgICB9
OwotICAgICAgY2hpbGRyZW4ucHVzaChub2RlKTsKLSAgICAgIHRvdGFsICs9IHRpbWU7Ci0gICAg
ICBjaGlsZENvdW50Kys7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciBzdWJ0cmVlID0gY29udmVy
dFRvV2ViVHJlZW1hcEZvcm1hdChuYW1lLCB0cmVlTm9kZSk7Ci0gICAgICBjaGlsZHJlbi5wdXNo
KHN1YnRyZWUpOwotICAgICAgdG90YWwgKz0gc3VidHJlZVsiZGF0YSJdWyIkYXJlYSJdOwotICAg
ICAgY2hpbGRDb3VudCArPSBzdWJ0cmVlWyJjaGlsZENvdW50Il07CitmdW5jdGlvbiBjb252ZXJ0
VG9XZWJUcmVlbWFwRm9ybWF0KHRyZWVuYW1lLCB0cmVlKQoreworICAgIHZhciB0b3RhbCA9IDA7
CisgICAgdmFyIGNoaWxkQ291bnQgPSAwOworICAgIHZhciBjaGlsZHJlbiA9IFtdOworICAgIGZv
ciAodmFyIG5hbWUgaW4gdHJlZSkgeworICAgICAgICB2YXIgdHJlZU5vZGUgPSB0cmVlW25hbWVd
OworICAgICAgICBpZiAodHlwZW9mIHRyZWVOb2RlID09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB2YXIgdGltZSA9IHRyZWVOb2RlOworICAgICAgICAgICAgdmFyIG5vZGUgPSB7CisgICAgICAg
ICAgICAgICAgImRhdGEiOiB7IiRhcmVhIjogdGltZX0sCisgICAgICAgICAgICAgICAgIm5hbWUi
OiBuYW1lICsgIiAoIiArIHRpbWUgKyAibXMpIgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IGNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgICAgICB0b3RhbCArPSB0aW1lOworICAgICAg
ICAgICAgY2hpbGRDb3VudCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHN1
YnRyZWUgPSBjb252ZXJ0VG9XZWJUcmVlbWFwRm9ybWF0KG5hbWUsIHRyZWVOb2RlKTsKKyAgICAg
ICAgICAgIGNoaWxkcmVuLnB1c2goc3VidHJlZSk7CisgICAgICAgICAgICB0b3RhbCArPSBzdWJ0
cmVlWyJkYXRhIl1bIiRhcmVhIl07CisgICAgICAgICAgICBjaGlsZENvdW50ICs9IHN1YnRyZWVb
ImNoaWxkQ291bnQiXTsKKyAgICAgICAgfQogICAgIH0KLSAgfQotCi0gIGNoaWxkcmVuLnNvcnQo
ZnVuY3Rpb24oYSwgYikgewotICAgIGFUaW1lID0gYS5kYXRhWyIkYXJlYSJdCi0gICAgYlRpbWUg
PSBiLmRhdGFbIiRhcmVhIl0KLSAgICByZXR1cm4gYlRpbWUgLSBhVGltZTsKLSAgfSk7Ci0KLSAg
cmV0dXJuIHsKLSAgICAiZGF0YSI6IHsiJGFyZWEiOiB0b3RhbH0sCi0gICAgIm5hbWUiOiB0cmVl
bmFtZSArICIgKCIgKyB0b3RhbCArICJtcyAtICIgKyBjaGlsZENvdW50ICsgIiB0ZXN0cykiLAot
ICAgICJjaGlsZHJlbiI6IGNoaWxkcmVuLAotICAgICJjaGlsZENvdW50IjogY2hpbGRDb3VudAot
ICB9OworCisgICAgY2hpbGRyZW4uc29ydChmdW5jdGlvbihhLCBiKSB7CisgICAgICAgIGFUaW1l
ID0gYS5kYXRhWyIkYXJlYSJdCisgICAgICAgIGJUaW1lID0gYi5kYXRhWyIkYXJlYSJdCisgICAg
ICAgIHJldHVybiBiVGltZSAtIGFUaW1lOworICAgIH0pOworCisgICAgcmV0dXJuIHsKKyAgICAg
ICAgImRhdGEiOiB7IiRhcmVhIjogdG90YWx9LAorICAgICAgICAibmFtZSI6IHRyZWVuYW1lICsg
IiAoIiArIHRvdGFsICsgIm1zIC0gIiArIGNoaWxkQ291bnQgKyAiIHRlc3RzKSIsCisgICAgICAg
ICJjaGlsZHJlbiI6IGNoaWxkcmVuLAorICAgICAgICAiY2hpbGRDb3VudCI6IGNoaWxkQ291bnQK
KyAgICB9OwogfQogCiB2YXIgZ19yZXN1bHRzQnlCdWlsZGVyID0ge307CiAKLWZ1bmN0aW9uIEFE
RF9SRVNVTFRTKGRhdGEpIHsKLSAgLy8gVE9ETyhvamFuKTogV2Ugc2hvdWxkIHByb2JhYmx5IGlu
Y2x1ZGUgdGhlIGJ1aWxkZXJOYW1lIGluIHRoZSBKU09OCi0gIC8vIHJhdGhlciB0aGFuIHJlbHlp
bmcgb24gb25seSBsb2FkaW5nIG9uZSBKU09OIGZpbGUgcGVyIHBhZ2UuCi0gIGlmICghZ19yZXN1
bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQotICAgIGdfcmVzdWx0c0J5QnVp
bGRlcltnX2N1cnJlbnRTdGF0ZS5idWlsZGVyXSA9IGRhdGE7CitmdW5jdGlvbiBBRERfUkVTVUxU
UyhkYXRhKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSB0aGUg
YnVpbGRlck5hbWUgaW4gdGhlIEpTT04KKyAgICAvLyByYXRoZXIgdGhhbiByZWx5aW5nIG9uIG9u
bHkgbG9hZGluZyBvbmUgSlNPTiBmaWxlIHBlciBwYWdlLgorICAgIGlmICghZ19yZXN1bHRzQnlC
dWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQorICAgICAgICBnX3Jlc3VsdHNCeUJ1aWxk
ZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0gPSBkYXRhOwogCi0gIGhhbmRsZUxvY2F0aW9uQ2hh
bmdlKCk7CisgICAgaGFuZGxlTG9jYXRpb25DaGFuZ2UoKTsKIH0KIAotdmFyIGlzR2VuZXJhdGlu
Z1BhZ2UgPSBmYWxzZTsKK3ZhciBnX2lzR2VuZXJhdGluZ1BhZ2UgPSBmYWxzZTsKIAotZnVuY3Rp
b24gZ2VuZXJhdGVQYWdlKCkgewotICBpZiAoIWdfcmVzdWx0c0J5QnVpbGRlcltnX2N1cnJlbnRT
dGF0ZS5idWlsZGVyXSkgewotICAgIGhhbmRsZVJlc291cmNlTG9hZEVycm9yKGdfY3VycmVudFN0
YXRlLmJ1aWxkZXIpOwotICAgIHJldHVybjsKLSAgfQorZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkK
K3sKKyAgICBpZiAoIWdfcmVzdWx0c0J5QnVpbGRlcltnX2N1cnJlbnRTdGF0ZS5idWlsZGVyXSkg
eworICAgICAgICBoYW5kbGVSZXNvdXJjZUxvYWRFcnJvcihnX2N1cnJlbnRTdGF0ZS5idWlsZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICBpc0dlbmVyYXRpbmdQYWdlID0gdHJ1ZTsK
KyAgICBnX2lzR2VuZXJhdGluZ1BhZ2UgPSB0cnVlOwogCi0gIHZhciByYXdUcmVlID0gZ19yZXN1
bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdOwotICB2YXIgd2VidHJlZSA9IGNv
bnZlcnRUb1dlYlRyZWVtYXBGb3JtYXQoJ0xheW91dFRlc3RzJywgcmF3VHJlZSk7Ci0gIGFwcGVu
ZFRyZWVtYXAoJCgnbWFwJyksIHdlYnRyZWUpOworICAgIHZhciByYXdUcmVlID0gZ19yZXN1bHRz
QnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdOworICAgIHZhciB3ZWJ0cmVlID0gY29u
dmVydFRvV2ViVHJlZW1hcEZvcm1hdCgnTGF5b3V0VGVzdHMnLCByYXdUcmVlKTsKKyAgICBhcHBl
bmRUcmVlbWFwKCQoJ21hcCcpLCB3ZWJ0cmVlKTsKIAotICBpZiAoZ19jdXJyZW50U3RhdGUudHJl
ZW1hcGZvY3VzKQotICAgIGZvY3VzUGF0aCh3ZWJ0cmVlLCBnX2N1cnJlbnRTdGF0ZS50cmVlbWFw
Zm9jdXMpCisgICAgaWYgKGdfY3VycmVudFN0YXRlLnRyZWVtYXBmb2N1cykKKyAgICAgICAgZm9j
dXNQYXRoKHdlYnRyZWUsIGdfY3VycmVudFN0YXRlLnRyZWVtYXBmb2N1cykKIAotICBpc0dlbmVy
YXRpbmdQYWdlID0gZmFsc2U7CisgICAgZ19pc0dlbmVyYXRpbmdQYWdlID0gZmFsc2U7CiB9CiAK
LWZ1bmN0aW9uIGZvY3VzUGF0aCh0cmVlLCBwYXRoKSB7Ci0gIHZhciBwYXJ0cyA9IGRlY29kZVVS
SUNvbXBvbmVudChwYXRoKS5zcGxpdCgnLycpOwotICBpZiAoZXh0cmFjdE5hbWUodHJlZSkgIT0g
cGFydHNbMF0pIHsKLSAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZm9jdXMgdHJlZSByb290
ZWQgYXQgJyArIHBhcnRzWzBdKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBmb3IgKHZhciBpID0g
MTsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGls
ZHJlbjsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNoaWxkcmVuLmxlbmd0aDsgaisrKSB7Ci0g
ICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltqXTsKLSAgICAgIGlmIChleHRyYWN0TmFtZShjaGls
ZCkgPT0gcGFydHNbaV0pIHsKLSAgICAgICAgdHJlZSA9IGNoaWxkOwotICAgICAgICBmb2N1cyh0
cmVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9CitmdW5jdGlvbiBmb2N1c1BhdGgodHJlZSwg
cGF0aCkKK3sKKyAgICB2YXIgcGFydHMgPSBkZWNvZGVVUklDb21wb25lbnQocGF0aCkuc3BsaXQo
Jy8nKTsKKyAgICBpZiAoZXh0cmFjdE5hbWUodHJlZSkgIT0gcGFydHNbMF0pIHsKKyAgICAgICAg
Y29uc29sZS5lcnJvcignQ291bGQgbm90IGZvY3VzIHRyZWUgcm9vdGVkIGF0ICcgKyBwYXJ0c1sw
XSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGogPT0gY2hpbGRyZW4ubGVuZ3Ro
KSB7Ci0gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZmluZCB0cmVlIGF0ICcgKyBwYXJ0
c1tpXSk7Ci0gICAgICBicmVhazsKKworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGFydHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZHJlbi5sZW5ndGg7IGorKykgeworICAgICAgICAg
ICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bal07CisgICAgICAgICAgICBpZiAoZXh0cmFjdE5hbWUo
Y2hpbGQpID09IHBhcnRzW2ldKSB7CisgICAgICAgICAgICAgICAgdHJlZSA9IGNoaWxkOworICAg
ICAgICAgICAgICAgIGZvY3VzKHRyZWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChqID09IGNoaWxkcmVuLmxlbmd0aCkgewor
ICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGZpbmQgdHJlZSBhdCAnICsgcGFy
dHNbaV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9Ci0gIH0KIAogfQog
Ci1mdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkgewotICBzd2l0
Y2goa2V5KSB7CitmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkK
K3sKKyAgICBzd2l0Y2goa2V5KSB7CiAgICAgY2FzZSAnYnVpbGRlcic6Ci0gICAgICB2YWxpZGF0
ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBnX2J1aWxkZXJzOwotICAgICAgICAg
IH0pOwotCi0gICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19j
dXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCisgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJu
IHZhbHVlIGluIGdfYnVpbGRlcnM7IH0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNh
c2UgJ3RyZWVtYXBmb2N1cyc6Ci0gICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0
ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIFRP
RE8ob2phbik6IFRoZXJlJ3MgcHJvYmFibHkgYSBzaW1wbGVyIHJlZ2V4cCBoZXJlLiBKdXN0IHRy
eWluZyB0byBtYXRjaCBhc2NpaSArIGZvcndhcmQtc2xhc2guCi0gICAgICAgICAgICAvLyBlLmcu
IExheW91dFRlc3RzL2Zvby9iYXIuaHRtbAotICAgICAgICAgICAgcmV0dXJuICh2YWx1ZS5tYXRj
aCgvXihcdytcL1x3KikqLyQpKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVlLAor
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZXJl
J3MgcHJvYmFibHkgYSBzaW1wbGVyIHJlZ2V4cCBoZXJlLiBKdXN0IHRyeWluZyB0byBtYXRjaCBh
c2NpaSArIGZvcndhcmQtc2xhc2guCisgICAgICAgICAgICAgICAgLy8gZS5nLiBMYXlvdXRUZXN0
cy9mb28vYmFyLmh0bWwKKyAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlLm1hdGNoKC9eKFx3
K1wvXHcqKSovJCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogfQogCiBnX2RlZmF1bHRTdGF0ZVZhbHVlcyA9IHsKLSAgYnVpbGRlcjogZ19k
ZWZhdWx0QnVpbGRlck5hbWUKKyAgICBidWlsZGVyOiBnX2RlZmF1bHRCdWlsZGVyTmFtZQogfTsK
IAotZnVuY3Rpb24gaGFuZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UocGFyYW1zKSB7Ci0gIGlmICgh
Z19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQotICAgIGFwcGVuZEpT
T05TY3JpcHRFbGVtZW50Rm9yKGdfY3VycmVudFN0YXRlLmJ1aWxkZXIpOworZnVuY3Rpb24gaGFu
ZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UocGFyYW1zKQoreworICAgIGlmICghZ19yZXN1bHRzQnlC
dWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJdKQorICAgICAgICBhcHBlbmRKU09OU2NyaXB0
RWxlbWVudEZvcihnX2N1cnJlbnRTdGF0ZS5idWlsZGVyKTsKIAotICBmb3IgKHZhciBwYXJhbSBp
biBwYXJhbXMpIHsKLSAgICBpZiAocGFyYW0gIT0gJ3RyZWVtYXBmb2N1cycpIHsKLSAgICAgICQo
J21hcCcpLmlubmVySFRNTCA9ICdMb2FkaW5nLi4uJzsKLSAgICAgIHJldHVybiB0cnVlOworICAg
IGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykgeworICAgICAgICBpZiAocGFyYW0gIT0gJ3RyZWVt
YXBmb2N1cycpIHsKKyAgICAgICAgICAgICQoJ21hcCcpLmlubmVySFRNTCA9ICdMb2FkaW5nLi4u
JzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQotICB9Ci0gIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vIE92ZXJyaWRlcyBoYW5kbGVS
ZXNvdXJjZUxvYWRFcnJvciBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KLWZ1bmN0aW9uIGhhbmRsZVJl
c291cmNlTG9hZEVycm9yKGJ1aWxkZXJOYW1lLCBlKSB7Ci0gICQoJ21hcCcpLmlubmVySFRNTCA9
ICc8c3BhbiBjbGFzcz1lcnJvcj5Db3VsZCBub3QgbG9hZCBkYXRhIGZvciAnICsgYnVpbGRlck5h
bWUgKyAnLiAnICsKLSAgICAgICdFaXRoZXIgdGhlcmUgd2FzIGEgc2VydmVyLXNpZGUgZXJyb3Ig
b3IgJyArIGJ1aWxkZXJOYW1lICsgJyBkb2VzIG5vdCBydW4gJyArCi0gICAgICBnX2N1cnJlbnRT
dGF0ZS50ZXN0VHlwZSArICcuPC9zcGFuPic7CitmdW5jdGlvbiBoYW5kbGVSZXNvdXJjZUxvYWRF
cnJvcihidWlsZGVyTmFtZSwgZSkKK3sKKyAgICAkKCdtYXAnKS5pbm5lckhUTUwgPSAnPHNwYW4g
Y2xhc3M9ZXJyb3I+Q291bGQgbm90IGxvYWQgZGF0YSBmb3IgJyArIGJ1aWxkZXJOYW1lICsgJy4g
JyArCisgICAgICAgICdFaXRoZXIgdGhlcmUgd2FzIGEgc2VydmVyLXNpZGUgZXJyb3Igb3IgJyAr
IGJ1aWxkZXJOYW1lICsgJyBkb2VzIG5vdCBydW4gJyArCisgICAgICAgIGdfY3VycmVudFN0YXRl
LnRlc3RUeXBlICsgJy48L3NwYW4+JzsKIH0KIAotZnVuY3Rpb24gZXh0cmFjdE5hbWUobm9kZSkg
ewotICByZXR1cm4gbm9kZS5uYW1lLnNwbGl0KCcgJylbMF07CitmdW5jdGlvbiBleHRyYWN0TmFt
ZShub2RlKQoreworICAgIHJldHVybiBub2RlLm5hbWUuc3BsaXQoJyAnKVswXTsKIH0KIAotZnVu
Y3Rpb24gZnVsbE5hbWUobm9kZSkgewotICB2YXIgYnVmZmVyID0gW2V4dHJhY3ROYW1lKG5vZGUp
XTsKLSAgd2hpbGUgKG5vZGUucGFyZW50KSB7Ci0gICAgbm9kZSA9IG5vZGUucGFyZW50OwotICAg
IGJ1ZmZlci51bnNoaWZ0KGV4dHJhY3ROYW1lKG5vZGUpKTsKLSAgfQotICByZXR1cm4gYnVmZmVy
LmpvaW4oJy8nKTsKK2Z1bmN0aW9uIGZ1bGxOYW1lKG5vZGUpCit7CisgICAgdmFyIGJ1ZmZlciA9
IFtleHRyYWN0TmFtZShub2RlKV07CisgICAgd2hpbGUgKG5vZGUucGFyZW50KSB7CisgICAgICAg
IG5vZGUgPSBub2RlLnBhcmVudDsKKyAgICAgICAgYnVmZmVyLnVuc2hpZnQoZXh0cmFjdE5hbWUo
bm9kZSkpOworICAgIH0KKyAgICByZXR1cm4gYnVmZmVyLmpvaW4oJy8nKTsKIH0KIAotZnVuY3Rp
b24gaGFuZGxlRm9jdXModHJlZSkgewotICB2YXIgY3VycmVudGx5Rm9jdXNlZE5vZGUgPSAkKCdm
b2N1c2VkLWxlYWYnKTsKLSAgaWYgKGN1cnJlbnRseUZvY3VzZWROb2RlKQotICAgIGN1cnJlbnRs
eUZvY3VzZWROb2RlLmlkID0gJyc7Ci0KLSAgaWYgKCF0cmVlLmNoaWxkcmVuKQotICAgIHRyZWUu
ZG9tLmlkID0gJ2ZvY3VzZWQtbGVhZic7Ci0KLSAgdmFyIG5hbWUgPSBmdWxsTmFtZSh0cmVlKTsK
LQotICBpZiAoIXRyZWUuY2hpbGRyZW4gJiYgIXRyZWUuZXh0cmFEb20gJiYgaXNMYXlvdXRUZXN0
UmVzdWx0cygpKSB7Ci0gICAgdHJlZS5leHRyYURvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3ByZScpOwotICAgIHRyZWUuZXh0cmFEb20uY2xhc3NOYW1lID0gJ2V4dHJhLWRvbSc7Ci0gICAg
dHJlZS5kb20uYXBwZW5kQ2hpbGQodHJlZS5leHRyYURvbSk7Ci0KLSAgICByZXF1ZXN0KFRFU1Rf
VVJMX0JBU0VfUEFUSCArIG5hbWUsCi0gICAgICBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgdHJl
ZS5leHRyYURvbS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICBlLnN0b3BQ
cm9wYWdhdGlvbigpOwotICAgICAgICB9OwotICAgICAgICB0cmVlLmV4dHJhRG9tLnRleHRDb250
ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKLSAgICAgIH0sCi0gICAgICBmdW5jdGlvbiAoeGhyKSB7
Ci0gICAgICAgIHRyZWUuZXh0cmFEb20udGV4dENvbnRlbnQgPSAiQ291bGQgbm90IGxvYWQgdGVz
dC4iCi0gICAgfSk7Ci0gIH0KK2Z1bmN0aW9uIGhhbmRsZUZvY3VzKHRyZWUpCit7CisgICAgdmFy
IGN1cnJlbnRseUZvY3VzZWROb2RlID0gJCgnZm9jdXNlZC1sZWFmJyk7CisgICAgaWYgKGN1cnJl
bnRseUZvY3VzZWROb2RlKQorICAgICAgICBjdXJyZW50bHlGb2N1c2VkTm9kZS5pZCA9ICcnOwor
CisgICAgaWYgKCF0cmVlLmNoaWxkcmVuKQorICAgICAgICB0cmVlLmRvbS5pZCA9ICdmb2N1c2Vk
LWxlYWYnOworCisgICAgdmFyIG5hbWUgPSBmdWxsTmFtZSh0cmVlKTsKKworICAgIGlmICghdHJl
ZS5jaGlsZHJlbiAmJiAhdHJlZS5leHRyYURvbSAmJiBpc0xheW91dFRlc3RSZXN1bHRzKCkpIHsK
KyAgICAgICAgdHJlZS5leHRyYURvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOwor
ICAgICAgICB0cmVlLmV4dHJhRG9tLmNsYXNzTmFtZSA9ICdleHRyYS1kb20nOworICAgICAgICB0
cmVlLmRvbS5hcHBlbmRDaGlsZCh0cmVlLmV4dHJhRG9tKTsKKworICAgICAgICByZXF1ZXN0KFRF
U1RfVVJMX0JBU0VfUEFUSCArIG5hbWUsCisgICAgICAgICAgICBmdW5jdGlvbih4aHIpIHsKKyAg
ICAgICAgICAgICAgICB0cmVlLmV4dHJhRG9tLm9ubW91c2Vkb3duID0gZnVuY3Rpb24oZSkgewor
ICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgdHJlZS5leHRyYURvbS50ZXh0Q29udGVudCA9IHhoci5yZXNw
b25zZVRleHQ7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKHhocikgewor
ICAgICAgICAgICAgICAgIHRyZWUuZXh0cmFEb20udGV4dENvbnRlbnQgPSAiQ291bGQgbm90IGxv
YWQgdGVzdC4iCisgICAgICAgIH0pOworICAgIH0KIAotICAvLyBXZSBkb24ndCB3YW50IHRoZSBm
b2N1cyBjYWxscyBkdXJpbmcgZ2VuZXJhdGVQYWdlIHRvIHRyeSB0byBtb2RpZnkgdGhlIHF1ZXJ5
IHN0YXRlLgotICBpZiAoIWlzR2VuZXJhdGluZ1BhZ2UpCi0gICAgc2V0UXVlcnlQYXJhbWV0ZXIo
J3RyZWVtYXBmb2N1cycsIG5hbWUpOworICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGZvY3VzIGNh
bGxzIGR1cmluZyBnZW5lcmF0ZVBhZ2UgdG8gdHJ5IHRvIG1vZGlmeSB0aGUgcXVlcnkgc3RhdGUu
CisgICAgaWYgKCFnX2lzR2VuZXJhdGluZ1BhZ2UpCisgICAgICAgIHNldFF1ZXJ5UGFyYW1ldGVy
KCd0cmVlbWFwZm9jdXMnLCBuYW1lKTsKIH0KIAogcGFyc2VQYXJhbWV0ZXJzKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>