<?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>44638</bug_id>
          
          <creation_ts>2010-08-25 15:04:46 -0700</creation_ts>
          <short_desc>Add updated versions of v8 tests to webkit source tree</short_desc>
          <delta_ts>2010-08-27 17:07:27 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269531</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-08-25 15:04:46 -0700</bug_when>
    <thetext>The current WebKit source tree has V8 version 4 benchmark tests that work with the sunspider framework.  There are now version 5 and 6 of the V8 tests.  These newer versions should be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269612</commentid>
    <comment_count>1</comment_count>
      <attachid>65501</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-08-25 16:59:06 -0700</bug_when>
    <thetext>Created attachment 65501
Patch adding V8 vers 5 and V8 vers 6 javascript benchmarks

Note that these javascript files do not conform to the WebKit standard.

The copyrights for each of these files is the same as the corresponding vers 4 files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269616</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-25 17:06:35 -0700</bug_when>
    <thetext>Attachment 65501 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Last 3072 characters of output:
y-boyer.js:3303:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3310:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3317:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3324:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3331:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3338:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3345:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3352:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3412:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3413:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3415:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3417:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3422:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3423:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3425:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-earley-boyer.js:3427:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:456:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:475:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:480:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:492:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:536:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:537:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:538:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:539:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:542:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:577:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:755:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-crypto.js:1131:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-raytrace.js:652:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-raytrace.js:654:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-raytrace.js:656:  Line contains tab character.  [whitespace/tab] [5]
SunSpider/tests/v8-v6/v8-raytrace.js:658:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1574 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269944</commentid>
    <comment_count>3</comment_count>
      <attachid>65501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-26 10:28:41 -0700</bug_when>
    <thetext>Comment on attachment 65501
Patch adding V8 vers 5 and V8 vers 6 javascript benchmarks

Rejecting patch 65501 from commit-queue.

msaboff@apple.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in WebKitTools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  Due to bug 30084 the commit-queue will require a restart after your change.  Please contact eseidel@chromium.org to request a commit-queue restart.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270455</commentid>
    <comment_count>4</comment_count>
      <attachid>65501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-27 06:18:45 -0700</bug_when>
    <thetext>Comment on attachment 65501
Patch adding V8 vers 5 and V8 vers 6 javascript benchmarks

Rejecting patch 65501 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--wait-for-httpd&apos;, &apos;--ignore-tests&apos;, &apos;compositing,media&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20842 test cases.
http/tests/security/xssAuditor/object-embed-tag.html -&gt; failed

Exiting early after 1 failures. 20546 tests run.
532.07s total testing time

20545 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
28 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/3867024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270817</commentid>
    <comment_count>5</comment_count>
      <attachid>65501</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-08-27 16:56:34 -0700</bug_when>
    <thetext>Comment on attachment 65501
Patch adding V8 vers 5 and V8 vers 6 javascript benchmarks

This commit fails because the file contain tabs, we&apos;ll have to replace these with spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270834</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-08-27 17:07:27 -0700</bug_when>
    <thetext>Ooops, no, just needed a property setting.  Landed in r66281.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65501</attachid>
            <date>2010-08-25 16:59:06 -0700</date>
            <delta_ts>2010-08-27 16:56:34 -0700</delta_ts>
            <desc>Patch adding V8 vers 5 and V8 vers 6 javascript benchmarks</desc>
            <filename>44638.patch</filename>
            <type>text/plain</type>
            <size>884401</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFN1blNwaWRlci9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU3VuU3BpZGVyL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjYwNTIpCisrKyBTdW5TcGlkZXIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDgtMjUgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdmVyc2lvbiA1IGFuZCB2ZXJzaW9uIDYgb2YgVjggdGVzdHMgd2l0aCBtb2Rp
ZmljYXRpb25zIHNpbWlsYXIKKyAgICAgICAgdG8gdGhlIHZlcnNpb24gNCB0ZXN0cyBzbyB0aGV5
J2xsIHdvcmsgd2l0aCB0aGUgU3VuU3BpZGVyIHRlc3QgaGFybmVzcy4KKyAgICAgICAgTm90ZSB0
aGF0IHRoZXNlIGZpbGVzIGFyZSBleHRlcm5hbCBzb3VyY2UgYW5kIHRoZXJlZm9yZSBkb24ndCBj
b25mb3JtIAorICAgICAgICB0byBXZWJLaXQgY29kaW5nIHN0YW5kYXJkcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjM4CisKKyAgICAgICAgKiB0
ZXN0cy92OC12NTogQWRkZWQuCisgICAgICAgICogdGVzdHMvdjgtdjUvTElTVDogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvdjgtdjUvdjgtY3J5cHRvLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
cy92OC12NS92OC1kZWx0YWJsdWUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3Y4LXY1L3Y4
LWVhcmxleS1ib3llci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvdjgtdjUvdjgtcmF5dHJh
Y2UuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3Y4LXY1L3Y4LXJlZ2V4cC5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvdjgtdjUvdjgtcmljaGFyZHMuanM6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL3Y4LXY1L3Y4LXNwbGF5LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy92OC12Njog
QWRkZWQuCisgICAgICAgICogdGVzdHMvdjgtdjYvTElTVDogQWRkZWQuCisgICAgICAgICogdGVz
dHMvdjgtdjYvdjgtY3J5cHRvLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy92OC12Ni92OC1k
ZWx0YWJsdWUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3Y4LXY2L3Y4LWVhcmxleS1ib3ll
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvdjgtdjYvdjgtcmF5dHJhY2UuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3Y4LXY2L3Y4LXJlZ2V4cC5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvdjgtdjYvdjgtcmljaGFyZHMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3Y4LXY2
L3Y4LXNwbGF5LmpzOiBBZGRlZC4KKwogMjAxMC0wNy0xNSAgU3RlcGhhbmllIExld2lzICA8c2xl
d2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KSW5kZXg6
IFN1blNwaWRlci90ZXN0cy92OC12NS9MSVNUCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1blNwaWRlci90ZXN0
cy92OC12NS9MSVNUCShyZXZpc2lvbiAwKQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY1L0xJU1QJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAordjgtY3J5cHRvCit2OC1kZWx0YWJsdWUKK3Y4
LWVhcmxleS1ib3llcgordjgtcmF5dHJhY2UKK3Y4LXJlZ2V4cAordjgtcmljaGFyZHMKK3Y4LXNw
bGF5CkluZGV4OiBTdW5TcGlkZXIvdGVzdHMvdjgtdjUvdjgtY3J5cHRvLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFN1blNwaWRlci90ZXN0cy92OC12NS92OC1jcnlwdG8uanMJKHJldmlzaW9uIDApCisrKyBT
dW5TcGlkZXIvdGVzdHMvdjgtdjUvdjgtY3J5cHRvLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE2OTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSAgVG9tIFd1CisgKiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworICogYSBjb3B5IG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29m
dHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Ig
c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICog
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisgKiBpbmNsdWRlZCBpbiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisg
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTLUlTIiBBTkQgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwKKyAqIEVYUFJFU1MsIElNUExJRUQgT1IgT1RIRVJXSVNFLCBJTkNMVURJTkcg
V0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkKKyAqIFdBUlJBTlRZIE9GIE1FUkNIQU5UQUJJTElUWSBP
UiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAqCisgKiBJTiBOTyBFVkVOVCBT
SEFMTCBUT00gV1UgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5DSURFTlRBTCwKKyAqIElO
RElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkgS0lORCwgT1IgQU5ZIERBTUFH
RVMgV0hBVFNPRVZFUgorICogUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJP
RklUUywgV0hFVEhFUiBPUiBOT1QgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIERB
TUFHRSwgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBBUklTSU5HIE9VVAorICogT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZU
V0FSRS4KKyAqCisgKiBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBjb25kaXRpb24gYXBwbGll
czoKKyAqCisgKiBBbGwgcmVkaXN0cmlidXRpb25zIG11c3QgcmV0YWluIGFuIGludGFjdCBjb3B5
IG9mIHRoaXMgY29weXJpZ2h0IG5vdGljZQorICogYW5kIGRpc2NsYWltZXIuCisgKi8KKworLy8g
QmFzaWMgSmF2YVNjcmlwdCBCTiBsaWJyYXJ5IC0gc3Vic2V0IHVzZWZ1bCBmb3IgUlNBIGVuY3J5
cHRpb24uCisKKy8vIEJpdHMgcGVyIGRpZ2l0Cit2YXIgZGJpdHM7Cit2YXIgQklfREI7Cit2YXIg
QklfRE07Cit2YXIgQklfRFY7CisKK3ZhciBCSV9GUDsKK3ZhciBCSV9GVjsKK3ZhciBCSV9GMTsK
K3ZhciBCSV9GMjsKKworLy8gSmF2YVNjcmlwdCBlbmdpbmUgYW5hbHlzaXMKK3ZhciBjYW5hcnkg
PSAweGRlYWRiZWVmY2FmZTsKK3ZhciBqX2xtID0gKChjYW5hcnkmMHhmZmZmZmYpPT0weGVmY2Fm
ZSk7CisKKy8vIChwdWJsaWMpIENvbnN0cnVjdG9yCitmdW5jdGlvbiBCaWdJbnRlZ2VyKGEsYixj
KSB7CisgIHRoaXMuYXJyYXkgPSBuZXcgQXJyYXkoKTsKKyAgaWYoYSAhPSBudWxsKQorICAgIGlm
KCJudW1iZXIiID09IHR5cGVvZiBhKSB0aGlzLmZyb21OdW1iZXIoYSxiLGMpOworICAgIGVsc2Ug
aWYoYiA9PSBudWxsICYmICJzdHJpbmciICE9IHR5cGVvZiBhKSB0aGlzLmZyb21TdHJpbmcoYSwy
NTYpOworICAgIGVsc2UgdGhpcy5mcm9tU3RyaW5nKGEsYik7Cit9CisKKy8vIHJldHVybiBuZXcs
IHVuc2V0IEJpZ0ludGVnZXIKK2Z1bmN0aW9uIG5iaSgpIHsgcmV0dXJuIG5ldyBCaWdJbnRlZ2Vy
KG51bGwpOyB9CisKKy8vIGFtOiBDb21wdXRlIHdfaiArPSAoeCp0aGlzX2kpLCBwcm9wYWdhdGUg
Y2FycmllcywKKy8vIGMgaXMgaW5pdGlhbCBjYXJyeSwgcmV0dXJucyBmaW5hbCBjYXJyeS4KKy8v
IGMgPCAzKmR2YWx1ZSwgeCA8IDIqZHZhbHVlLCB0aGlzX2kgPCBkdmFsdWUKKy8vIFdlIG5lZWQg
dG8gc2VsZWN0IHRoZSBmYXN0ZXN0IG9uZSB0aGF0IHdvcmtzIGluIHRoaXMgZW52aXJvbm1lbnQu
CisKKy8vIGFtMTogdXNlIGEgc2luZ2xlIG11bHQgYW5kIGRpdmlkZSB0byBnZXQgdGhlIGhpZ2gg
Yml0cywKKy8vIG1heCBkaWdpdCBiaXRzIHNob3VsZCBiZSAyNiBiZWNhdXNlCisvLyBtYXggaW50
ZXJuYWwgdmFsdWUgPSAyKmR2YWx1ZV4yLTIqZHZhbHVlICg8IDJeNTMpCitmdW5jdGlvbiBhbTEo
aSx4LHcsaixjLG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgd19h
cnJheSAgICA9IHcuYXJyYXk7CisgIHdoaWxlKC0tbiA+PSAwKSB7CisgICAgdmFyIHYgPSB4KnRo
aXNfYXJyYXlbaSsrXSt3X2FycmF5W2pdK2M7CisgICAgYyA9IE1hdGguZmxvb3Iodi8weDQwMDAw
MDApOworICAgIHdfYXJyYXlbaisrXSA9IHYmMHgzZmZmZmZmOworICB9CisgIHJldHVybiBjOwor
fQorCisvLyBhbTIgYXZvaWRzIGEgYmlnIG11bHQtYW5kLWV4dHJhY3QgY29tcGxldGVseS4KKy8v
IE1heCBkaWdpdCBiaXRzIHNob3VsZCBiZSA8PSAzMCBiZWNhdXNlIHdlIGRvIGJpdHdpc2Ugb3Bz
CisvLyBvbiB2YWx1ZXMgdXAgdG8gMipoZHZhbHVlXjItaGR2YWx1ZS0xICg8IDJeMzEpCitmdW5j
dGlvbiBhbTIoaSx4LHcsaixjLG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5Owor
ICB2YXIgd19hcnJheSAgICA9IHcuYXJyYXk7CisgIHZhciB4bCA9IHgmMHg3ZmZmLCB4aCA9IHg+
PjE1OworICB3aGlsZSgtLW4gPj0gMCkgeworICAgIHZhciBsID0gdGhpc19hcnJheVtpXSYweDdm
ZmY7CisgICAgdmFyIGggPSB0aGlzX2FycmF5W2krK10+PjE1OworICAgIHZhciBtID0geGgqbCto
KnhsOworICAgIGwgPSB4bCpsKygobSYweDdmZmYpPDwxNSkrd19hcnJheVtqXSsoYyYweDNmZmZm
ZmZmKTsKKyAgICBjID0gKGw+Pj4zMCkrKG0+Pj4xNSkreGgqaCsoYz4+PjMwKTsKKyAgICB3X2Fy
cmF5W2orK10gPSBsJjB4M2ZmZmZmZmY7CisgIH0KKyAgcmV0dXJuIGM7Cit9CisKKy8vIEFsdGVy
bmF0ZWx5LCBzZXQgbWF4IGRpZ2l0IGJpdHMgdG8gMjggc2luY2Ugc29tZQorLy8gYnJvd3NlcnMg
c2xvdyBkb3duIHdoZW4gZGVhbGluZyB3aXRoIDMyLWJpdCBudW1iZXJzLgorZnVuY3Rpb24gYW0z
KGkseCx3LGosYyxuKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHdf
YXJyYXkgICAgPSB3LmFycmF5OworCisgIHZhciB4bCA9IHgmMHgzZmZmLCB4aCA9IHg+PjE0Owor
ICB3aGlsZSgtLW4gPj0gMCkgeworICAgIHZhciBsID0gdGhpc19hcnJheVtpXSYweDNmZmY7Cisg
ICAgdmFyIGggPSB0aGlzX2FycmF5W2krK10+PjE0OworICAgIHZhciBtID0geGgqbCtoKnhsOwor
ICAgIGwgPSB4bCpsKygobSYweDNmZmYpPDwxNCkrd19hcnJheVtqXStjOworICAgIGMgPSAobD4+
MjgpKyhtPj4xNCkreGgqaDsKKyAgICB3X2FycmF5W2orK10gPSBsJjB4ZmZmZmZmZjsKKyAgfQor
ICByZXR1cm4gYzsKK30KKworLy8gVGhpcyBpcyB0YWlsb3JlZCB0byBWTXMgd2l0aCAyLWJpdCB0
YWdnaW5nLiBJdCBtYWtlcyBzdXJlCisvLyB0aGF0IGFsbCB0aGUgY29tcHV0YXRpb25zIHN0YXkg
d2l0aGluIHRoZSAyOSBiaXRzIGF2YWlsYWJsZS4KK2Z1bmN0aW9uIGFtNChpLHgsdyxqLGMsbikg
eworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciB3X2FycmF5ICAgID0gdy5h
cnJheTsKKworICB2YXIgeGwgPSB4JjB4MWZmZiwgeGggPSB4Pj4xMzsKKyAgd2hpbGUoLS1uID49
IDApIHsKKyAgICB2YXIgbCA9IHRoaXNfYXJyYXlbaV0mMHgxZmZmOworICAgIHZhciBoID0gdGhp
c19hcnJheVtpKytdPj4xMzsKKyAgICB2YXIgbSA9IHhoKmwraCp4bDsKKyAgICBsID0geGwqbCso
KG0mMHgxZmZmKTw8MTMpK3dfYXJyYXlbal0rYzsKKyAgICBjID0gKGw+PjI2KSsobT4+MTMpK3ho
Kmg7CisgICAgd19hcnJheVtqKytdID0gbCYweDNmZmZmZmY7CisgIH0KKyAgcmV0dXJuIGM7Cit9
CisKKy8vIGFtMy8yOCBpcyBiZXN0IGZvciBTTSwgUmhpbm8sIGJ1dCBhbTQvMjYgaXMgYmVzdCBm
b3IgdjguCisvLyBLZXN0cmVsIChPcGVyYSA5LjUpIGdldHMgaXRzIGJlc3QgcmVzdWx0IHdpdGgg
YW00LzI2LgorLy8gSUU3IGRvZXMgOSUgYmV0dGVyIHdpdGggYW0zLzI4IHRoYW4gd2l0aCBhbTQv
MjYuCisvLyBGaXJlZm94IChTTSkgZ2V0cyAxMCUgZmFzdGVyIHdpdGggYW0zLzI4IHRoYW4gd2l0
aCBhbTQvMjYuCisKK3NldHVwRW5naW5lID0gZnVuY3Rpb24oZm4sIGJpdHMpIHsKKyAgQmlnSW50
ZWdlci5wcm90b3R5cGUuYW0gPSBmbjsKKyAgZGJpdHMgPSBiaXRzOworCisgIEJJX0RCID0gZGJp
dHM7CisgIEJJX0RNID0gKCgxPDxkYml0cyktMSk7CisgIEJJX0RWID0gKDE8PGRiaXRzKTsKKwor
ICBCSV9GUCA9IDUyOworICBCSV9GViA9IE1hdGgucG93KDIsQklfRlApOworICBCSV9GMSA9IEJJ
X0ZQLWRiaXRzOworICBCSV9GMiA9IDIqZGJpdHMtQklfRlA7Cit9CisKKworLy8gRGlnaXQgY29u
dmVyc2lvbnMKK3ZhciBCSV9STSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXoiOwordmFyIEJJX1JDID0gbmV3IEFycmF5KCk7Cit2YXIgcnIsdnY7CityciA9ICIwIi5jaGFy
Q29kZUF0KDApOworZm9yKHZ2ID0gMDsgdnYgPD0gOTsgKyt2dikgQklfUkNbcnIrK10gPSB2djsK
K3JyID0gImEiLmNoYXJDb2RlQXQoMCk7Citmb3IodnYgPSAxMDsgdnYgPCAzNjsgKyt2dikgQklf
UkNbcnIrK10gPSB2djsKK3JyID0gIkEiLmNoYXJDb2RlQXQoMCk7Citmb3IodnYgPSAxMDsgdnYg
PCAzNjsgKyt2dikgQklfUkNbcnIrK10gPSB2djsKKworZnVuY3Rpb24gaW50MmNoYXIobikgeyBy
ZXR1cm4gQklfUk0uY2hhckF0KG4pOyB9CitmdW5jdGlvbiBpbnRBdChzLGkpIHsKKyAgdmFyIGMg
PSBCSV9SQ1tzLmNoYXJDb2RlQXQoaSldOworICByZXR1cm4gKGM9PW51bGwpPy0xOmM7Cit9CisK
Ky8vIChwcm90ZWN0ZWQpIGNvcHkgdGhpcyB0byByCitmdW5jdGlvbiBibnBDb3B5VG8ocikgewor
ICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciByX2FycmF5ICAgID0gci5hcnJh
eTsKKworICBmb3IodmFyIGkgPSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHJfYXJyYXlbaV0gPSB0
aGlzX2FycmF5W2ldOworICByLnQgPSB0aGlzLnQ7CisgIHIucyA9IHRoaXMuczsKK30KKworLy8g
KHByb3RlY3RlZCkgc2V0IGZyb20gaW50ZWdlciB2YWx1ZSB4LCAtRFYgPD0geCA8IERWCitmdW5j
dGlvbiBibnBGcm9tSW50KHgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB0
aGlzLnQgPSAxOworICB0aGlzLnMgPSAoeDwwKT8tMTowOworICBpZih4ID4gMCkgdGhpc19hcnJh
eVswXSA9IHg7CisgIGVsc2UgaWYoeCA8IC0xKSB0aGlzX2FycmF5WzBdID0geCtEVjsKKyAgZWxz
ZSB0aGlzLnQgPSAwOworfQorCisvLyByZXR1cm4gYmlnaW50IGluaXRpYWxpemVkIHRvIHZhbHVl
CitmdW5jdGlvbiBuYnYoaSkgeyB2YXIgciA9IG5iaSgpOyByLmZyb21JbnQoaSk7IHJldHVybiBy
OyB9CisKKy8vIChwcm90ZWN0ZWQpIHNldCBmcm9tIHN0cmluZyBhbmQgcmFkaXgKK2Z1bmN0aW9u
IGJucEZyb21TdHJpbmcocyxiKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAg
dmFyIGs7CisgIGlmKGIgPT0gMTYpIGsgPSA0OworICBlbHNlIGlmKGIgPT0gOCkgayA9IDM7Cisg
IGVsc2UgaWYoYiA9PSAyNTYpIGsgPSA4OyAvLyBieXRlIGFycmF5CisgIGVsc2UgaWYoYiA9PSAy
KSBrID0gMTsKKyAgZWxzZSBpZihiID09IDMyKSBrID0gNTsKKyAgZWxzZSBpZihiID09IDQpIGsg
PSAyOworICBlbHNlIHsgdGhpcy5mcm9tUmFkaXgocyxiKTsgcmV0dXJuOyB9CisgIHRoaXMudCA9
IDA7CisgIHRoaXMucyA9IDA7CisgIHZhciBpID0gcy5sZW5ndGgsIG1pID0gZmFsc2UsIHNoID0g
MDsKKyAgd2hpbGUoLS1pID49IDApIHsKKyAgICB2YXIgeCA9IChrPT04KT9zW2ldJjB4ZmY6aW50
QXQocyxpKTsKKyAgICBpZih4IDwgMCkgeworICAgICAgaWYocy5jaGFyQXQoaSkgPT0gIi0iKSBt
aSA9IHRydWU7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgbWkgPSBmYWxzZTsKKyAgICBp
ZihzaCA9PSAwKQorICAgICAgdGhpc19hcnJheVt0aGlzLnQrK10gPSB4OworICAgIGVsc2UgaWYo
c2grayA+IEJJX0RCKSB7CisgICAgICB0aGlzX2FycmF5W3RoaXMudC0xXSB8PSAoeCYoKDE8PChC
SV9EQi1zaCkpLTEpKTw8c2g7CisgICAgICB0aGlzX2FycmF5W3RoaXMudCsrXSA9ICh4Pj4oQklf
REItc2gpKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgdGhpc19hcnJheVt0aGlzLnQtMV0gfD0g
eDw8c2g7CisgICAgc2ggKz0gazsKKyAgICBpZihzaCA+PSBCSV9EQikgc2ggLT0gQklfREI7Cisg
IH0KKyAgaWYoayA9PSA4ICYmIChzWzBdJjB4ODApICE9IDApIHsKKyAgICB0aGlzLnMgPSAtMTsK
KyAgICBpZihzaCA+IDApIHRoaXNfYXJyYXlbdGhpcy50LTFdIHw9ICgoMTw8KEJJX0RCLXNoKSkt
MSk8PHNoOworICB9CisgIHRoaXMuY2xhbXAoKTsKKyAgaWYobWkpIEJpZ0ludGVnZXIuWkVSTy5z
dWJUbyh0aGlzLHRoaXMpOworfQorCisvLyAocHJvdGVjdGVkKSBjbGFtcCBvZmYgZXhjZXNzIGhp
Z2ggd29yZHMKK2Z1bmN0aW9uIGJucENsYW1wKCkgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMu
YXJyYXk7CisgIHZhciBjID0gdGhpcy5zJkJJX0RNOworICB3aGlsZSh0aGlzLnQgPiAwICYmIHRo
aXNfYXJyYXlbdGhpcy50LTFdID09IGMpIC0tdGhpcy50OworfQorCisvLyAocHVibGljKSByZXR1
cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIGdpdmVuIHJhZGl4CitmdW5jdGlvbiBiblRvU3Ry
aW5nKGIpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICBpZih0aGlzLnMgPCAw
KSByZXR1cm4gIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcoYik7CisgIHZhciBrOworICBpZihi
ID09IDE2KSBrID0gNDsKKyAgZWxzZSBpZihiID09IDgpIGsgPSAzOworICBlbHNlIGlmKGIgPT0g
MikgayA9IDE7CisgIGVsc2UgaWYoYiA9PSAzMikgayA9IDU7CisgIGVsc2UgaWYoYiA9PSA0KSBr
ID0gMjsKKyAgZWxzZSByZXR1cm4gdGhpcy50b1JhZGl4KGIpOworICB2YXIga20gPSAoMTw8aykt
MSwgZCwgbSA9IGZhbHNlLCByID0gIiIsIGkgPSB0aGlzLnQ7CisgIHZhciBwID0gQklfREItKGkq
QklfREIpJWs7CisgIGlmKGktLSA+IDApIHsKKyAgICBpZihwIDwgQklfREIgJiYgKGQgPSB0aGlz
X2FycmF5W2ldPj5wKSA+IDApIHsgbSA9IHRydWU7IHIgPSBpbnQyY2hhcihkKTsgfQorICAgIHdo
aWxlKGkgPj0gMCkgeworICAgICAgaWYocCA8IGspIHsKKyAgICAgICAgZCA9ICh0aGlzX2FycmF5
W2ldJigoMTw8cCktMSkpPDwoay1wKTsKKyAgICAgICAgZCB8PSB0aGlzX2FycmF5Wy0taV0+Pihw
Kz1CSV9EQi1rKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBkID0gKHRoaXNfYXJy
YXlbaV0+PihwLT1rKSkma207CisgICAgICAgIGlmKHAgPD0gMCkgeyBwICs9IEJJX0RCOyAtLWk7
IH0KKyAgICAgIH0KKyAgICAgIGlmKGQgPiAwKSBtID0gdHJ1ZTsKKyAgICAgIGlmKG0pIHIgKz0g
aW50MmNoYXIoZCk7CisgICAgfQorICB9CisgIHJldHVybiBtP3I6IjAiOworfQorCisvLyAocHVi
bGljKSAtdGhpcworZnVuY3Rpb24gYm5OZWdhdGUoKSB7IHZhciByID0gbmJpKCk7IEJpZ0ludGVn
ZXIuWkVSTy5zdWJUbyh0aGlzLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB8dGhpc3wK
K2Z1bmN0aW9uIGJuQWJzKCkgeyByZXR1cm4gKHRoaXMuczwwKT90aGlzLm5lZ2F0ZSgpOnRoaXM7
IH0KKworLy8gKHB1YmxpYykgcmV0dXJuICsgaWYgdGhpcyA+IGEsIC0gaWYgdGhpcyA8IGEsIDAg
aWYgZXF1YWwKK2Z1bmN0aW9uIGJuQ29tcGFyZVRvKGEpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0
aGlzLmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisKKyAgdmFyIHIgPSB0aGlzLnMt
YS5zOworICBpZihyICE9IDApIHJldHVybiByOworICB2YXIgaSA9IHRoaXMudDsKKyAgciA9IGkt
YS50OworICBpZihyICE9IDApIHJldHVybiByOworICB3aGlsZSgtLWkgPj0gMCkgaWYoKHI9dGhp
c19hcnJheVtpXS1hX2FycmF5W2ldKSAhPSAwKSByZXR1cm4gcjsKKyAgcmV0dXJuIDA7Cit9CisK
Ky8vIHJldHVybnMgYml0IGxlbmd0aCBvZiB0aGUgaW50ZWdlciB4CitmdW5jdGlvbiBuYml0cyh4
KSB7CisgIHZhciByID0gMSwgdDsKKyAgaWYoKHQ9eD4+PjE2KSAhPSAwKSB7IHggPSB0OyByICs9
IDE2OyB9CisgIGlmKCh0PXg+PjgpICE9IDApIHsgeCA9IHQ7IHIgKz0gODsgfQorICBpZigodD14
Pj40KSAhPSAwKSB7IHggPSB0OyByICs9IDQ7IH0KKyAgaWYoKHQ9eD4+MikgIT0gMCkgeyB4ID0g
dDsgciArPSAyOyB9CisgIGlmKCh0PXg+PjEpICE9IDApIHsgeCA9IHQ7IHIgKz0gMTsgfQorICBy
ZXR1cm4gcjsKK30KKworLy8gKHB1YmxpYykgcmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBpbiAi
dGhpcyIKK2Z1bmN0aW9uIGJuQml0TGVuZ3RoKCkgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMu
YXJyYXk7CisgIGlmKHRoaXMudCA8PSAwKSByZXR1cm4gMDsKKyAgcmV0dXJuIEJJX0RCKih0aGlz
LnQtMSkrbmJpdHModGhpc19hcnJheVt0aGlzLnQtMV1eKHRoaXMucyZCSV9ETSkpOworfQorCisv
LyAocHJvdGVjdGVkKSByID0gdGhpcyA8PCBuKkRCCitmdW5jdGlvbiBibnBETFNoaWZ0VG8obixy
KSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHJfYXJyYXkgPSByLmFy
cmF5OworICB2YXIgaTsKKyAgZm9yKGkgPSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHJfYXJyYXlb
aStuXSA9IHRoaXNfYXJyYXlbaV07CisgIGZvcihpID0gbi0xOyBpID49IDA7IC0taSkgcl9hcnJh
eVtpXSA9IDA7CisgIHIudCA9IHRoaXMudCtuOworICByLnMgPSB0aGlzLnM7Cit9CisKKy8vIChw
cm90ZWN0ZWQpIHIgPSB0aGlzID4+IG4qREIKK2Z1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIpIHsK
KyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgcl9hcnJheSA9IHIuYXJyYXk7
CisgIGZvcih2YXIgaSA9IG47IGkgPCB0aGlzLnQ7ICsraSkgcl9hcnJheVtpLW5dID0gdGhpc19h
cnJheVtpXTsKKyAgci50ID0gTWF0aC5tYXgodGhpcy50LW4sMCk7CisgIHIucyA9IHRoaXMuczsK
K30KKworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgPDwgbgorZnVuY3Rpb24gYm5wTFNoaWZ0VG8o
bixyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHJfYXJyYXkgPSBy
LmFycmF5OworICB2YXIgYnMgPSBuJUJJX0RCOworICB2YXIgY2JzID0gQklfREItYnM7CisgIHZh
ciBibSA9ICgxPDxjYnMpLTE7CisgIHZhciBkcyA9IE1hdGguZmxvb3Iobi9CSV9EQiksIGMgPSAo
dGhpcy5zPDxicykmQklfRE0sIGk7CisgIGZvcihpID0gdGhpcy50LTE7IGkgPj0gMDsgLS1pKSB7
CisgICAgcl9hcnJheVtpK2RzKzFdID0gKHRoaXNfYXJyYXlbaV0+PmNicyl8YzsKKyAgICBjID0g
KHRoaXNfYXJyYXlbaV0mYm0pPDxiczsKKyAgfQorICBmb3IoaSA9IGRzLTE7IGkgPj0gMDsgLS1p
KSByX2FycmF5W2ldID0gMDsKKyAgcl9hcnJheVtkc10gPSBjOworICByLnQgPSB0aGlzLnQrZHMr
MTsKKyAgci5zID0gdGhpcy5zOworICByLmNsYW1wKCk7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIg
PSB0aGlzID4+IG4KK2Z1bmN0aW9uIGJucFJTaGlmdFRvKG4scikgeworICB2YXIgdGhpc19hcnJh
eSA9IHRoaXMuYXJyYXk7CisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgci5zID0gdGhpcy5z
OworICB2YXIgZHMgPSBNYXRoLmZsb29yKG4vQklfREIpOworICBpZihkcyA+PSB0aGlzLnQpIHsg
ci50ID0gMDsgcmV0dXJuOyB9CisgIHZhciBicyA9IG4lQklfREI7CisgIHZhciBjYnMgPSBCSV9E
Qi1iczsKKyAgdmFyIGJtID0gKDE8PGJzKS0xOworICByX2FycmF5WzBdID0gdGhpc19hcnJheVtk
c10+PmJzOworICBmb3IodmFyIGkgPSBkcysxOyBpIDwgdGhpcy50OyArK2kpIHsKKyAgICByX2Fy
cmF5W2ktZHMtMV0gfD0gKHRoaXNfYXJyYXlbaV0mYm0pPDxjYnM7CisgICAgcl9hcnJheVtpLWRz
XSA9IHRoaXNfYXJyYXlbaV0+PmJzOworICB9CisgIGlmKGJzID4gMCkgcl9hcnJheVt0aGlzLnQt
ZHMtMV0gfD0gKHRoaXMucyZibSk8PGNiczsKKyAgci50ID0gdGhpcy50LWRzOworICByLmNsYW1w
KCk7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIC0gYQorZnVuY3Rpb24gYm5wU3ViVG8o
YSxyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHJfYXJyYXkgPSBy
LmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIHZhciBpID0gMCwgYyA9IDAsIG0g
PSBNYXRoLm1pbihhLnQsdGhpcy50KTsKKyAgd2hpbGUoaSA8IG0pIHsKKyAgICBjICs9IHRoaXNf
YXJyYXlbaV0tYV9hcnJheVtpXTsKKyAgICByX2FycmF5W2krK10gPSBjJkJJX0RNOworICAgIGMg
Pj49IEJJX0RCOworICB9CisgIGlmKGEudCA8IHRoaXMudCkgeworICAgIGMgLT0gYS5zOworICAg
IHdoaWxlKGkgPCB0aGlzLnQpIHsKKyAgICAgIGMgKz0gdGhpc19hcnJheVtpXTsKKyAgICAgIHJf
YXJyYXlbaSsrXSA9IGMmQklfRE07CisgICAgICBjID4+PSBCSV9EQjsKKyAgICB9CisgICAgYyAr
PSB0aGlzLnM7CisgIH0KKyAgZWxzZSB7CisgICAgYyArPSB0aGlzLnM7CisgICAgd2hpbGUoaSA8
IGEudCkgeworICAgICAgYyAtPSBhX2FycmF5W2ldOworICAgICAgcl9hcnJheVtpKytdID0gYyZC
SV9ETTsKKyAgICAgIGMgPj49IEJJX0RCOworICAgIH0KKyAgICBjIC09IGEuczsKKyAgfQorICBy
LnMgPSAoYzwwKT8tMTowOworICBpZihjIDwgLTEpIHJfYXJyYXlbaSsrXSA9IEJJX0RWK2M7Cisg
IGVsc2UgaWYoYyA+IDApIHJfYXJyYXlbaSsrXSA9IGM7CisgIHIudCA9IGk7CisgIHIuY2xhbXAo
KTsKK30KKworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgKiBhLCByICE9IHRoaXMsYSAoSEFDIDE0
LjEyKQorLy8gInRoaXMiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS4K
K2Z1bmN0aW9uIGJucE11bHRpcGx5VG8oYSxyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5h
cnJheTsKKyAgdmFyIHJfYXJyYXkgPSByLmFycmF5OworICB2YXIgeCA9IHRoaXMuYWJzKCksIHkg
PSBhLmFicygpOworICB2YXIgeV9hcnJheSA9IHkuYXJyYXk7CisKKyAgdmFyIGkgPSB4LnQ7Cisg
IHIudCA9IGkreS50OworICB3aGlsZSgtLWkgPj0gMCkgcl9hcnJheVtpXSA9IDA7CisgIGZvcihp
ID0gMDsgaSA8IHkudDsgKytpKSByX2FycmF5W2kreC50XSA9IHguYW0oMCx5X2FycmF5W2ldLHIs
aSwwLHgudCk7CisgIHIucyA9IDA7CisgIHIuY2xhbXAoKTsKKyAgaWYodGhpcy5zICE9IGEucykg
QmlnSW50ZWdlci5aRVJPLnN1YlRvKHIscik7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlz
XjIsIHIgIT0gdGhpcyAoSEFDIDE0LjE2KQorZnVuY3Rpb24gYm5wU3F1YXJlVG8ocikgeworICB2
YXIgeCA9IHRoaXMuYWJzKCk7CisgIHZhciB4X2FycmF5ID0geC5hcnJheTsKKyAgdmFyIHJfYXJy
YXkgPSByLmFycmF5OworCisgIHZhciBpID0gci50ID0gMip4LnQ7CisgIHdoaWxlKC0taSA+PSAw
KSByX2FycmF5W2ldID0gMDsKKyAgZm9yKGkgPSAwOyBpIDwgeC50LTE7ICsraSkgeworICAgIHZh
ciBjID0geC5hbShpLHhfYXJyYXlbaV0sciwyKmksMCwxKTsKKyAgICBpZigocl9hcnJheVtpK3gu
dF0rPXguYW0oaSsxLDIqeF9hcnJheVtpXSxyLDIqaSsxLGMseC50LWktMSkpID49IEJJX0RWKSB7
CisgICAgICByX2FycmF5W2kreC50XSAtPSBCSV9EVjsKKyAgICAgIHJfYXJyYXlbaSt4LnQrMV0g
PSAxOworICAgIH0KKyAgfQorICBpZihyLnQgPiAwKSByX2FycmF5W3IudC0xXSArPSB4LmFtKGks
eF9hcnJheVtpXSxyLDIqaSwwLDEpOworICByLnMgPSAwOworICByLmNsYW1wKCk7Cit9CisKKy8v
IChwcm90ZWN0ZWQpIGRpdmlkZSB0aGlzIGJ5IG0sIHF1b3RpZW50IGFuZCByZW1haW5kZXIgdG8g
cSwgciAoSEFDIDE0LjIwKQorLy8gciAhPSBxLCB0aGlzICE9IG0uICBxIG9yIHIgbWF5IGJlIG51
bGwuCitmdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscikgeworICB2YXIgcG0gPSBtLmFicygpOwor
ICBpZihwbS50IDw9IDApIHJldHVybjsKKyAgdmFyIHB0ID0gdGhpcy5hYnMoKTsKKyAgaWYocHQu
dCA8IHBtLnQpIHsKKyAgICBpZihxICE9IG51bGwpIHEuZnJvbUludCgwKTsKKyAgICBpZihyICE9
IG51bGwpIHRoaXMuY29weVRvKHIpOworICAgIHJldHVybjsKKyAgfQorICBpZihyID09IG51bGwp
IHIgPSBuYmkoKTsKKyAgdmFyIHkgPSBuYmkoKSwgdHMgPSB0aGlzLnMsIG1zID0gbS5zOworICB2
YXIgcG1fYXJyYXkgPSBwbS5hcnJheTsKKyAgdmFyIG5zaCA9IEJJX0RCLW5iaXRzKHBtX2FycmF5
W3BtLnQtMV0pOwkvLyBub3JtYWxpemUgbW9kdWx1cworICBpZihuc2ggPiAwKSB7IHBtLmxTaGlm
dFRvKG5zaCx5KTsgcHQubFNoaWZ0VG8obnNoLHIpOyB9CisgIGVsc2UgeyBwbS5jb3B5VG8oeSk7
IHB0LmNvcHlUbyhyKTsgfQorICB2YXIgeXMgPSB5LnQ7CisKKyAgdmFyIHlfYXJyYXkgPSB5LmFy
cmF5OworICB2YXIgeTAgPSB5X2FycmF5W3lzLTFdOworICBpZih5MCA9PSAwKSByZXR1cm47Cisg
IHZhciB5dCA9IHkwKigxPDxCSV9GMSkrKCh5cz4xKT95X2FycmF5W3lzLTJdPj5CSV9GMjowKTsK
KyAgdmFyIGQxID0gQklfRlYveXQsIGQyID0gKDE8PEJJX0YxKS95dCwgZSA9IDE8PEJJX0YyOwor
ICB2YXIgaSA9IHIudCwgaiA9IGkteXMsIHQgPSAocT09bnVsbCk/bmJpKCk6cTsKKyAgeS5kbFNo
aWZ0VG8oaix0KTsKKworICB2YXIgcl9hcnJheSA9IHIuYXJyYXk7CisgIGlmKHIuY29tcGFyZVRv
KHQpID49IDApIHsKKyAgICByX2FycmF5W3IudCsrXSA9IDE7CisgICAgci5zdWJUbyh0LHIpOwor
ICB9CisgIEJpZ0ludGVnZXIuT05FLmRsU2hpZnRUbyh5cyx0KTsKKyAgdC5zdWJUbyh5LHkpOwkv
LyAibmVnYXRpdmUiIHkgc28gd2UgY2FuIHJlcGxhY2Ugc3ViIHdpdGggYW0gbGF0ZXIKKyAgd2hp
bGUoeS50IDwgeXMpIHlfYXJyYXlbeS50KytdID0gMDsKKyAgd2hpbGUoLS1qID49IDApIHsKKyAg
ICAvLyBFc3RpbWF0ZSBxdW90aWVudCBkaWdpdAorICAgIHZhciBxZCA9IChyX2FycmF5Wy0taV09
PXkwKT9CSV9ETTpNYXRoLmZsb29yKHJfYXJyYXlbaV0qZDErKHJfYXJyYXlbaS0xXStlKSpkMik7
CisgICAgaWYoKHJfYXJyYXlbaV0rPXkuYW0oMCxxZCxyLGosMCx5cykpIDwgcWQpIHsJLy8gVHJ5
IGl0IG91dAorICAgICAgeS5kbFNoaWZ0VG8oaix0KTsKKyAgICAgIHIuc3ViVG8odCxyKTsKKyAg
ICAgIHdoaWxlKHJfYXJyYXlbaV0gPCAtLXFkKSByLnN1YlRvKHQscik7CisgICAgfQorICB9Cisg
IGlmKHEgIT0gbnVsbCkgeworICAgIHIuZHJTaGlmdFRvKHlzLHEpOworICAgIGlmKHRzICE9IG1z
KSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocSxxKTsKKyAgfQorICByLnQgPSB5czsKKyAgci5jbGFt
cCgpOworICBpZihuc2ggPiAwKSByLnJTaGlmdFRvKG5zaCxyKTsJLy8gRGVub3JtYWxpemUgcmVt
YWluZGVyCisgIGlmKHRzIDwgMCkgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHIscik7Cit9CisKKy8v
IChwdWJsaWMpIHRoaXMgbW9kIGEKK2Z1bmN0aW9uIGJuTW9kKGEpIHsKKyAgdmFyIHIgPSBuYmko
KTsKKyAgdGhpcy5hYnMoKS5kaXZSZW1UbyhhLG51bGwscik7CisgIGlmKHRoaXMucyA8IDAgJiYg
ci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKSA+IDApIGEuc3ViVG8ocixyKTsKKyAgcmV0dXJu
IHI7Cit9CisKKy8vIE1vZHVsYXIgcmVkdWN0aW9uIHVzaW5nICJjbGFzc2ljIiBhbGdvcml0aG0K
K2Z1bmN0aW9uIENsYXNzaWMobSkgeyB0aGlzLm0gPSBtOyB9CitmdW5jdGlvbiBjQ29udmVydCh4
KSB7CisgIGlmKHgucyA8IDAgfHwgeC5jb21wYXJlVG8odGhpcy5tKSA+PSAwKSByZXR1cm4geC5t
b2QodGhpcy5tKTsKKyAgZWxzZSByZXR1cm4geDsKK30KK2Z1bmN0aW9uIGNSZXZlcnQoeCkgeyBy
ZXR1cm4geDsgfQorZnVuY3Rpb24gY1JlZHVjZSh4KSB7IHguZGl2UmVtVG8odGhpcy5tLG51bGws
eCk7IH0KK2Z1bmN0aW9uIGNNdWxUbyh4LHkscikgeyB4Lm11bHRpcGx5VG8oeSxyKTsgdGhpcy5y
ZWR1Y2Uocik7IH0KK2Z1bmN0aW9uIGNTcXJUbyh4LHIpIHsgeC5zcXVhcmVUbyhyKTsgdGhpcy5y
ZWR1Y2Uocik7IH0KKworQ2xhc3NpYy5wcm90b3R5cGUuY29udmVydCA9IGNDb252ZXJ0OworQ2xh
c3NpYy5wcm90b3R5cGUucmV2ZXJ0ID0gY1JldmVydDsKK0NsYXNzaWMucHJvdG90eXBlLnJlZHVj
ZSA9IGNSZWR1Y2U7CitDbGFzc2ljLnByb3RvdHlwZS5tdWxUbyA9IGNNdWxUbzsKK0NsYXNzaWMu
cHJvdG90eXBlLnNxclRvID0gY1NxclRvOworCisvLyAocHJvdGVjdGVkKSByZXR1cm4gIi0xL3Ro
aXMgJSAyXkRCIjsgdXNlZnVsIGZvciBNb250LiByZWR1Y3Rpb24KKy8vIGp1c3RpZmljYXRpb246
CisvLyAgICAgICAgIHh5ID09IDEgKG1vZCBtKQorLy8gICAgICAgICB4eSA9ICAxK2ttCisvLyAg
IHh5KDIteHkpID0gKDEra20pKDEta20pCisvLyB4W3koMi14eSldID0gMS1rXjJtXjIKKy8vIHhb
eSgyLXh5KV0gPT0gMSAobW9kIG1eMikKKy8vIGlmIHkgaXMgMS94IG1vZCBtLCB0aGVuIHkoMi14
eSkgaXMgMS94IG1vZCBtXjIKKy8vIHNob3VsZCByZWR1Y2UgeCBhbmQgeSgyLXh5KSBieSBtXjIg
YXQgZWFjaCBzdGVwIHRvIGtlZXAgc2l6ZSBib3VuZGVkLgorLy8gSlMgbXVsdGlwbHkgIm92ZXJm
bG93cyIgZGlmZmVyZW50bHkgZnJvbSBDL0MrKywgc28gY2FyZSBpcyBuZWVkZWQgaGVyZS4KK2Z1
bmN0aW9uIGJucEludkRpZ2l0KCkgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7Cisg
IGlmKHRoaXMudCA8IDEpIHJldHVybiAwOworICB2YXIgeCA9IHRoaXNfYXJyYXlbMF07CisgIGlm
KCh4JjEpID09IDApIHJldHVybiAwOworICB2YXIgeSA9IHgmMzsJCS8vIHkgPT0gMS94IG1vZCAy
XjIKKyAgeSA9ICh5KigyLSh4JjB4ZikqeSkpJjB4ZjsJLy8geSA9PSAxL3ggbW9kIDJeNAorICB5
ID0gKHkqKDItKHgmMHhmZikqeSkpJjB4ZmY7CS8vIHkgPT0gMS94IG1vZCAyXjgKKyAgeSA9ICh5
KigyLSgoKHgmMHhmZmZmKSp5KSYweGZmZmYpKSkmMHhmZmZmOwkvLyB5ID09IDEveCBtb2QgMl4x
NgorICAvLyBsYXN0IHN0ZXAgLSBjYWxjdWxhdGUgaW52ZXJzZSBtb2QgRFYgZGlyZWN0bHk7Cisg
IC8vIGFzc3VtZXMgMTYgPCBEQiA8PSAzMiBhbmQgYXNzdW1lcyBhYmlsaXR5IHRvIGhhbmRsZSA0
OC1iaXQgaW50cworICB5ID0gKHkqKDIteCp5JUJJX0RWKSklQklfRFY7CQkvLyB5ID09IDEveCBt
b2QgMl5kYml0cworICAvLyB3ZSByZWFsbHkgd2FudCB0aGUgbmVnYXRpdmUgaW52ZXJzZSwgYW5k
IC1EViA8IHkgPCBEVgorICByZXR1cm4gKHk+MCk/QklfRFYteToteTsKK30KKworLy8gTW9udGdv
bWVyeSByZWR1Y3Rpb24KK2Z1bmN0aW9uIE1vbnRnb21lcnkobSkgeworICB0aGlzLm0gPSBtOwor
ICB0aGlzLm1wID0gbS5pbnZEaWdpdCgpOworICB0aGlzLm1wbCA9IHRoaXMubXAmMHg3ZmZmOwor
ICB0aGlzLm1waCA9IHRoaXMubXA+PjE1OworICB0aGlzLnVtID0gKDE8PChCSV9EQi0xNSkpLTE7
CisgIHRoaXMubXQyID0gMiptLnQ7Cit9CisKKy8vIHhSIG1vZCBtCitmdW5jdGlvbiBtb250Q29u
dmVydCh4KSB7CisgIHZhciByID0gbmJpKCk7CisgIHguYWJzKCkuZGxTaGlmdFRvKHRoaXMubS50
LHIpOworICByLmRpdlJlbVRvKHRoaXMubSxudWxsLHIpOworICBpZih4LnMgPCAwICYmIHIuY29t
cGFyZVRvKEJpZ0ludGVnZXIuWkVSTykgPiAwKSB0aGlzLm0uc3ViVG8ocixyKTsKKyAgcmV0dXJu
IHI7Cit9CisKKy8vIHgvUiBtb2QgbQorZnVuY3Rpb24gbW9udFJldmVydCh4KSB7CisgIHZhciBy
ID0gbmJpKCk7CisgIHguY29weVRvKHIpOworICB0aGlzLnJlZHVjZShyKTsKKyAgcmV0dXJuIHI7
Cit9CisKKy8vIHggPSB4L1IgbW9kIG0gKEhBQyAxNC4zMikKK2Z1bmN0aW9uIG1vbnRSZWR1Y2Uo
eCkgeworICB2YXIgeF9hcnJheSA9IHguYXJyYXk7CisgIHdoaWxlKHgudCA8PSB0aGlzLm10MikJ
Ly8gcGFkIHggc28gYW0gaGFzIGVub3VnaCByb29tIGxhdGVyCisgICAgeF9hcnJheVt4LnQrK10g
PSAwOworICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5tLnQ7ICsraSkgeworICAgIC8vIGZhc3Rl
ciB3YXkgb2YgY2FsY3VsYXRpbmcgdTAgPSB4W2ldKm1wIG1vZCBEVgorICAgIHZhciBqID0geF9h
cnJheVtpXSYweDdmZmY7CisgICAgdmFyIHUwID0gKGoqdGhpcy5tcGwrKCgoaip0aGlzLm1waCso
eF9hcnJheVtpXT4+MTUpKnRoaXMubXBsKSZ0aGlzLnVtKTw8MTUpKSZCSV9ETTsKKyAgICAvLyB1
c2UgYW0gdG8gY29tYmluZSB0aGUgbXVsdGlwbHktc2hpZnQtYWRkIGludG8gb25lIGNhbGwKKyAg
ICBqID0gaSt0aGlzLm0udDsKKyAgICB4X2FycmF5W2pdICs9IHRoaXMubS5hbSgwLHUwLHgsaSww
LHRoaXMubS50KTsKKyAgICAvLyBwcm9wYWdhdGUgY2FycnkKKyAgICB3aGlsZSh4X2FycmF5W2pd
ID49IEJJX0RWKSB7IHhfYXJyYXlbal0gLT0gQklfRFY7IHhfYXJyYXlbKytqXSsrOyB9CisgIH0K
KyAgeC5jbGFtcCgpOworICB4LmRyU2hpZnRUbyh0aGlzLm0udCx4KTsKKyAgaWYoeC5jb21wYXJl
VG8odGhpcy5tKSA+PSAwKSB4LnN1YlRvKHRoaXMubSx4KTsKK30KKworLy8gciA9ICJ4XjIvUiBt
b2QgbSI7IHggIT0gcgorZnVuY3Rpb24gbW9udFNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0
aGlzLnJlZHVjZShyKTsgfQorCisvLyByID0gInh5L1IgbW9kIG0iOyB4LHkgIT0gcgorZnVuY3Rp
b24gbW9udE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsg
fQorCitNb250Z29tZXJ5LnByb3RvdHlwZS5jb252ZXJ0ID0gbW9udENvbnZlcnQ7CitNb250Z29t
ZXJ5LnByb3RvdHlwZS5yZXZlcnQgPSBtb250UmV2ZXJ0OworTW9udGdvbWVyeS5wcm90b3R5cGUu
cmVkdWNlID0gbW9udFJlZHVjZTsKK01vbnRnb21lcnkucHJvdG90eXBlLm11bFRvID0gbW9udE11
bFRvOworTW9udGdvbWVyeS5wcm90b3R5cGUuc3FyVG8gPSBtb250U3FyVG87CisKKy8vIChwcm90
ZWN0ZWQpIHRydWUgaWZmIHRoaXMgaXMgZXZlbgorZnVuY3Rpb24gYm5wSXNFdmVuKCkgeworICB2
YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHJldHVybiAoKHRoaXMudD4wKT8odGhpc19h
cnJheVswXSYxKTp0aGlzLnMpID09IDA7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHRoaXNeZSwgZSA8
IDJeMzIsIGRvaW5nIHNxciBhbmQgbXVsIHdpdGggInIiIChIQUMgMTQuNzkpCitmdW5jdGlvbiBi
bnBFeHAoZSx6KSB7CisgIGlmKGUgPiAweGZmZmZmZmZmIHx8IGUgPCAxKSByZXR1cm4gQmlnSW50
ZWdlci5PTkU7CisgIHZhciByID0gbmJpKCksIHIyID0gbmJpKCksIGcgPSB6LmNvbnZlcnQodGhp
cyksIGkgPSBuYml0cyhlKS0xOworICBnLmNvcHlUbyhyKTsKKyAgd2hpbGUoLS1pID49IDApIHsK
KyAgICB6LnNxclRvKHIscjIpOworICAgIGlmKChlJigxPDxpKSkgPiAwKSB6Lm11bFRvKHIyLGcs
cik7CisgICAgZWxzZSB7IHZhciB0ID0gcjsgciA9IHIyOyByMiA9IHQ7IH0KKyAgfQorICByZXR1
cm4gei5yZXZlcnQocik7Cit9CisKKy8vIChwdWJsaWMpIHRoaXNeZSAlIG0sIDAgPD0gZSA8IDJe
MzIKK2Z1bmN0aW9uIGJuTW9kUG93SW50KGUsbSkgeworICB2YXIgejsKKyAgaWYoZSA8IDI1NiB8
fCBtLmlzRXZlbigpKSB6ID0gbmV3IENsYXNzaWMobSk7IGVsc2UgeiA9IG5ldyBNb250Z29tZXJ5
KG0pOworICByZXR1cm4gdGhpcy5leHAoZSx6KTsKK30KKworLy8gcHJvdGVjdGVkCitCaWdJbnRl
Z2VyLnByb3RvdHlwZS5jb3B5VG8gPSBibnBDb3B5VG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5m
cm9tSW50ID0gYm5wRnJvbUludDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmZyb21TdHJpbmcgPSBi
bnBGcm9tU3RyaW5nOworQmlnSW50ZWdlci5wcm90b3R5cGUuY2xhbXAgPSBibnBDbGFtcDsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbyA9IGJucERMU2hpZnRUbzsKK0JpZ0ludGVnZXIu
cHJvdG90eXBlLmRyU2hpZnRUbyA9IGJucERSU2hpZnRUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBl
LmxTaGlmdFRvID0gYm5wTFNoaWZ0VG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbyA9
IGJucFJTaGlmdFRvOworQmlnSW50ZWdlci5wcm90b3R5cGUuc3ViVG8gPSBibnBTdWJUbzsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5VG8gPSBibnBNdWx0aXBseVRvOworQmlnSW50ZWdl
ci5wcm90b3R5cGUuc3F1YXJlVG8gPSBibnBTcXVhcmVUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBl
LmRpdlJlbVRvID0gYm5wRGl2UmVtVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5pbnZEaWdpdCA9
IGJucEludkRpZ2l0OworQmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gYm5wSXNFdmVuOwor
QmlnSW50ZWdlci5wcm90b3R5cGUuZXhwID0gYm5wRXhwOworCisvLyBwdWJsaWMKK0JpZ0ludGVn
ZXIucHJvdG90eXBlLnRvU3RyaW5nID0gYm5Ub1N0cmluZzsKK0JpZ0ludGVnZXIucHJvdG90eXBl
Lm5lZ2F0ZSA9IGJuTmVnYXRlOworQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gYm5BYnM7CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBibkNvbXBhcmVUbzsKK0JpZ0ludGVnZXIu
cHJvdG90eXBlLmJpdExlbmd0aCA9IGJuQml0TGVuZ3RoOworQmlnSW50ZWdlci5wcm90b3R5cGUu
bW9kID0gYm5Nb2Q7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQgPSBibk1vZFBvd0lu
dDsKKworLy8gImNvbnN0YW50cyIKK0JpZ0ludGVnZXIuWkVSTyA9IG5idigwKTsKK0JpZ0ludGVn
ZXIuT05FID0gbmJ2KDEpOworLy8gQ29weXJpZ2h0IChjKSAyMDA1ICBUb20gV3UKKy8vIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisvLyBTZWUgIkxJQ0VOU0UiIGZvciBkZXRhaWxzLgorCisvLyBFeHRl
bmRlZCBKYXZhU2NyaXB0IEJOIGZ1bmN0aW9ucywgcmVxdWlyZWQgZm9yIFJTQSBwcml2YXRlIG9w
cy4KKworLy8gKHB1YmxpYykKK2Z1bmN0aW9uIGJuQ2xvbmUoKSB7IHZhciByID0gbmJpKCk7IHRo
aXMuY29weVRvKHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSByZXR1cm4gdmFsdWUgYXMg
aW50ZWdlcgorZnVuY3Rpb24gYm5JbnRWYWx1ZSgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlz
LmFycmF5OworICBpZih0aGlzLnMgPCAwKSB7CisgICAgaWYodGhpcy50ID09IDEpIHJldHVybiB0
aGlzX2FycmF5WzBdLUJJX0RWOworICAgIGVsc2UgaWYodGhpcy50ID09IDApIHJldHVybiAtMTsK
KyAgfQorICBlbHNlIGlmKHRoaXMudCA9PSAxKSByZXR1cm4gdGhpc19hcnJheVswXTsKKyAgZWxz
ZSBpZih0aGlzLnQgPT0gMCkgcmV0dXJuIDA7CisgIC8vIGFzc3VtZXMgMTYgPCBEQiA8IDMyCisg
IHJldHVybiAoKHRoaXNfYXJyYXlbMV0mKCgxPDwoMzItQklfREIpKS0xKSk8PEJJX0RCKXx0aGlz
X2FycmF5WzBdOworfQorCisvLyAocHVibGljKSByZXR1cm4gdmFsdWUgYXMgYnl0ZQorZnVuY3Rp
b24gYm5CeXRlVmFsdWUoKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgcmV0
dXJuICh0aGlzLnQ9PTApP3RoaXMuczoodGhpc19hcnJheVswXTw8MjQpPj4yNDsKK30KKworLy8g
KHB1YmxpYykgcmV0dXJuIHZhbHVlIGFzIHNob3J0IChhc3N1bWVzIERCPj0xNikKK2Z1bmN0aW9u
IGJuU2hvcnRWYWx1ZSgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICByZXR1
cm4gKHRoaXMudD09MCk/dGhpcy5zOih0aGlzX2FycmF5WzBdPDwxNik+PjE2OworfQorCisvLyAo
cHJvdGVjdGVkKSByZXR1cm4geCBzLnQuIHJeeCA8IERWCitmdW5jdGlvbiBibnBDaHVua1NpemUo
cikgeyByZXR1cm4gTWF0aC5mbG9vcihNYXRoLkxOMipCSV9EQi9NYXRoLmxvZyhyKSk7IH0KKwor
Ly8gKHB1YmxpYykgMCBpZiB0aGlzID09IDAsIDEgaWYgdGhpcyA+IDAKK2Z1bmN0aW9uIGJuU2ln
TnVtKCkgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIGlmKHRoaXMucyA8IDAp
IHJldHVybiAtMTsKKyAgZWxzZSBpZih0aGlzLnQgPD0gMCB8fCAodGhpcy50ID09IDEgJiYgdGhp
c19hcnJheVswXSA8PSAwKSkgcmV0dXJuIDA7CisgIGVsc2UgcmV0dXJuIDE7Cit9CisKKy8vIChw
cm90ZWN0ZWQpIGNvbnZlcnQgdG8gcmFkaXggc3RyaW5nCitmdW5jdGlvbiBibnBUb1JhZGl4KGIp
IHsKKyAgaWYoYiA9PSBudWxsKSBiID0gMTA7CisgIGlmKHRoaXMuc2lnbnVtKCkgPT0gMCB8fCBi
IDwgMiB8fCBiID4gMzYpIHJldHVybiAiMCI7CisgIHZhciBjcyA9IHRoaXMuY2h1bmtTaXplKGIp
OworICB2YXIgYSA9IE1hdGgucG93KGIsY3MpOworICB2YXIgZCA9IG5idihhKSwgeSA9IG5iaSgp
LCB6ID0gbmJpKCksIHIgPSAiIjsKKyAgdGhpcy5kaXZSZW1UbyhkLHkseik7CisgIHdoaWxlKHku
c2lnbnVtKCkgPiAwKSB7CisgICAgciA9IChhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vi
c3RyKDEpICsgcjsKKyAgICB5LmRpdlJlbVRvKGQseSx6KTsKKyAgfQorICByZXR1cm4gei5pbnRW
YWx1ZSgpLnRvU3RyaW5nKGIpICsgcjsKK30KKworLy8gKHByb3RlY3RlZCkgY29udmVydCBmcm9t
IHJhZGl4IHN0cmluZworZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYikgeworICB0aGlzLmZyb21J
bnQoMCk7CisgIGlmKGIgPT0gbnVsbCkgYiA9IDEwOworICB2YXIgY3MgPSB0aGlzLmNodW5rU2l6
ZShiKTsKKyAgdmFyIGQgPSBNYXRoLnBvdyhiLGNzKSwgbWkgPSBmYWxzZSwgaiA9IDAsIHcgPSAw
OworICBmb3IodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkgeworICAgIHZhciB4ID0gaW50
QXQocyxpKTsKKyAgICBpZih4IDwgMCkgeworICAgICAgaWYocy5jaGFyQXQoaSkgPT0gIi0iICYm
IHRoaXMuc2lnbnVtKCkgPT0gMCkgbWkgPSB0cnVlOworICAgICAgY29udGludWU7CisgICAgfQor
ICAgIHcgPSBiKncreDsKKyAgICBpZigrK2ogPj0gY3MpIHsKKyAgICAgIHRoaXMuZE11bHRpcGx5
KGQpOworICAgICAgdGhpcy5kQWRkT2Zmc2V0KHcsMCk7CisgICAgICBqID0gMDsKKyAgICAgIHcg
PSAwOworICAgIH0KKyAgfQorICBpZihqID4gMCkgeworICAgIHRoaXMuZE11bHRpcGx5KE1hdGgu
cG93KGIsaikpOworICAgIHRoaXMuZEFkZE9mZnNldCh3LDApOworICB9CisgIGlmKG1pKSBCaWdJ
bnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKTsKK30KKworLy8gKHByb3RlY3RlZCkgYWx0ZXJu
YXRlIGNvbnN0cnVjdG9yCitmdW5jdGlvbiBibnBGcm9tTnVtYmVyKGEsYixjKSB7CisgIGlmKCJu
dW1iZXIiID09IHR5cGVvZiBiKSB7CisgICAgLy8gbmV3IEJpZ0ludGVnZXIoaW50LGludCxSTkcp
CisgICAgaWYoYSA8IDIpIHRoaXMuZnJvbUludCgxKTsKKyAgICBlbHNlIHsKKyAgICAgIHRoaXMu
ZnJvbU51bWJlcihhLGMpOworICAgICAgaWYoIXRoaXMudGVzdEJpdChhLTEpKQkvLyBmb3JjZSBN
U0Igc2V0CisgICAgICAgIHRoaXMuYml0d2lzZVRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChh
LTEpLG9wX29yLHRoaXMpOworICAgICAgaWYodGhpcy5pc0V2ZW4oKSkgdGhpcy5kQWRkT2Zmc2V0
KDEsMCk7IC8vIGZvcmNlIG9kZAorICAgICAgd2hpbGUoIXRoaXMuaXNQcm9iYWJsZVByaW1lKGIp
KSB7CisgICAgICAgIHRoaXMuZEFkZE9mZnNldCgyLDApOworICAgICAgICBpZih0aGlzLmJpdExl
bmd0aCgpID4gYSkgdGhpcy5zdWJUbyhCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQoYS0xKSx0aGlz
KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgLy8gbmV3IEJpZ0ludGVnZXIo
aW50LFJORykKKyAgICB2YXIgeCA9IG5ldyBBcnJheSgpLCB0ID0gYSY3OworICAgIHgubGVuZ3Ro
ID0gKGE+PjMpKzE7CisgICAgYi5uZXh0Qnl0ZXMoeCk7CisgICAgaWYodCA+IDApIHhbMF0gJj0g
KCgxPDx0KS0xKTsgZWxzZSB4WzBdID0gMDsKKyAgICB0aGlzLmZyb21TdHJpbmcoeCwyNTYpOwor
ICB9Cit9CisKKy8vIChwdWJsaWMpIGNvbnZlcnQgdG8gYmlnZW5kaWFuIGJ5dGUgYXJyYXkKK2Z1
bmN0aW9uIGJuVG9CeXRlQXJyYXkoKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsK
KyAgdmFyIGkgPSB0aGlzLnQsIHIgPSBuZXcgQXJyYXkoKTsKKyAgclswXSA9IHRoaXMuczsKKyAg
dmFyIHAgPSBCSV9EQi0oaSpCSV9EQiklOCwgZCwgayA9IDA7CisgIGlmKGktLSA+IDApIHsKKyAg
ICBpZihwIDwgQklfREIgJiYgKGQgPSB0aGlzX2FycmF5W2ldPj5wKSAhPSAodGhpcy5zJkJJX0RN
KT4+cCkKKyAgICAgIHJbaysrXSA9IGR8KHRoaXMuczw8KEJJX0RCLXApKTsKKyAgICB3aGlsZShp
ID49IDApIHsKKyAgICAgIGlmKHAgPCA4KSB7CisgICAgICAgIGQgPSAodGhpc19hcnJheVtpXSYo
KDE8PHApLTEpKTw8KDgtcCk7CisgICAgICAgIGQgfD0gdGhpc19hcnJheVstLWldPj4ocCs9Qklf
REItOCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZCA9ICh0aGlzX2FycmF5W2ld
Pj4ocC09OCkpJjB4ZmY7CisgICAgICAgIGlmKHAgPD0gMCkgeyBwICs9IEJJX0RCOyAtLWk7IH0K
KyAgICAgIH0KKyAgICAgIGlmKChkJjB4ODApICE9IDApIGQgfD0gLTI1NjsKKyAgICAgIGlmKGsg
PT0gMCAmJiAodGhpcy5zJjB4ODApICE9IChkJjB4ODApKSArK2s7CisgICAgICBpZihrID4gMCB8
fCBkICE9IHRoaXMucykgcltrKytdID0gZDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHI7Cit9CisK
K2Z1bmN0aW9uIGJuRXF1YWxzKGEpIHsgcmV0dXJuKHRoaXMuY29tcGFyZVRvKGEpPT0wKTsgfQor
ZnVuY3Rpb24gYm5NaW4oYSkgeyByZXR1cm4odGhpcy5jb21wYXJlVG8oYSk8MCk/dGhpczphOyB9
CitmdW5jdGlvbiBibk1heChhKSB7IHJldHVybih0aGlzLmNvbXBhcmVUbyhhKT4wKT90aGlzOmE7
IH0KKworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgb3AgYSAoYml0d2lzZSkKK2Z1bmN0aW9uIGJu
cEJpdHdpc2VUbyhhLG9wLHIpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2
YXIgYV9hcnJheSAgICA9IGEuYXJyYXk7CisgIHZhciByX2FycmF5ICAgID0gci5hcnJheTsKKyAg
dmFyIGksIGYsIG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKKyAgZm9yKGkgPSAwOyBpIDwgbTsg
KytpKSByX2FycmF5W2ldID0gb3AodGhpc19hcnJheVtpXSxhX2FycmF5W2ldKTsKKyAgaWYoYS50
IDwgdGhpcy50KSB7CisgICAgZiA9IGEucyZCSV9ETTsKKyAgICBmb3IoaSA9IG07IGkgPCB0aGlz
LnQ7ICsraSkgcl9hcnJheVtpXSA9IG9wKHRoaXNfYXJyYXlbaV0sZik7CisgICAgci50ID0gdGhp
cy50OworICB9CisgIGVsc2UgeworICAgIGYgPSB0aGlzLnMmQklfRE07CisgICAgZm9yKGkgPSBt
OyBpIDwgYS50OyArK2kpIHJfYXJyYXlbaV0gPSBvcChmLGFfYXJyYXlbaV0pOworICAgIHIudCA9
IGEudDsKKyAgfQorICByLnMgPSBvcCh0aGlzLnMsYS5zKTsKKyAgci5jbGFtcCgpOworfQorCisv
LyAocHVibGljKSB0aGlzICYgYQorZnVuY3Rpb24gb3BfYW5kKHgseSkgeyByZXR1cm4geCZ5OyB9
CitmdW5jdGlvbiBibkFuZChhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3Bf
YW5kLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB0aGlzIHwgYQorZnVuY3Rpb24gb3Bf
b3IoeCx5KSB7IHJldHVybiB4fHk7IH0KK2Z1bmN0aW9uIGJuT3IoYSkgeyB2YXIgciA9IG5iaSgp
OyB0aGlzLmJpdHdpc2VUbyhhLG9wX29yLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB0
aGlzIF4gYQorZnVuY3Rpb24gb3BfeG9yKHgseSkgeyByZXR1cm4geF55OyB9CitmdW5jdGlvbiBi
blhvcihhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3BfeG9yLHIpOyByZXR1
cm4gcjsgfQorCisvLyAocHVibGljKSB0aGlzICYgfmEKK2Z1bmN0aW9uIG9wX2FuZG5vdCh4LHkp
IHsgcmV0dXJuIHgmfnk7IH0KK2Z1bmN0aW9uIGJuQW5kTm90KGEpIHsgdmFyIHIgPSBuYmkoKTsg
dGhpcy5iaXR3aXNlVG8oYSxvcF9hbmRub3Qscik7IHJldHVybiByOyB9CisKKy8vIChwdWJsaWMp
IH50aGlzCitmdW5jdGlvbiBibk5vdCgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5
OworICB2YXIgciA9IG5iaSgpOworICB2YXIgcl9hcnJheSA9IHIuYXJyYXk7CisKKyAgZm9yKHZh
ciBpID0gMDsgaSA8IHRoaXMudDsgKytpKSByX2FycmF5W2ldID0gQklfRE0mfnRoaXNfYXJyYXlb
aV07CisgIHIudCA9IHRoaXMudDsKKyAgci5zID0gfnRoaXMuczsKKyAgcmV0dXJuIHI7Cit9CisK
Ky8vIChwdWJsaWMpIHRoaXMgPDwgbgorZnVuY3Rpb24gYm5TaGlmdExlZnQobikgeworICB2YXIg
ciA9IG5iaSgpOworICBpZihuIDwgMCkgdGhpcy5yU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLmxT
aGlmdFRvKG4scik7CisgIHJldHVybiByOworfQorCisvLyAocHVibGljKSB0aGlzID4+IG4KK2Z1
bmN0aW9uIGJuU2hpZnRSaWdodChuKSB7CisgIHZhciByID0gbmJpKCk7CisgIGlmKG4gPCAwKSB0
aGlzLmxTaGlmdFRvKC1uLHIpOyBlbHNlIHRoaXMuclNoaWZ0VG8obixyKTsKKyAgcmV0dXJuIHI7
Cit9CisKKy8vIHJldHVybiBpbmRleCBvZiBsb3dlc3QgMS1iaXQgaW4geCwgeCA8IDJeMzEKK2Z1
bmN0aW9uIGxiaXQoeCkgeworICBpZih4ID09IDApIHJldHVybiAtMTsKKyAgdmFyIHIgPSAwOwor
ICBpZigoeCYweGZmZmYpID09IDApIHsgeCA+Pj0gMTY7IHIgKz0gMTY7IH0KKyAgaWYoKHgmMHhm
ZikgPT0gMCkgeyB4ID4+PSA4OyByICs9IDg7IH0KKyAgaWYoKHgmMHhmKSA9PSAwKSB7IHggPj49
IDQ7IHIgKz0gNDsgfQorICBpZigoeCYzKSA9PSAwKSB7IHggPj49IDI7IHIgKz0gMjsgfQorICBp
ZigoeCYxKSA9PSAwKSArK3I7CisgIHJldHVybiByOworfQorCisvLyAocHVibGljKSByZXR1cm5z
IGluZGV4IG9mIGxvd2VzdCAxLWJpdCAob3IgLTEgaWYgbm9uZSkKK2Z1bmN0aW9uIGJuR2V0TG93
ZXN0U2V0Qml0KCkgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIGZvcih2YXIg
aSA9IDA7IGkgPCB0aGlzLnQ7ICsraSkKKyAgICBpZih0aGlzX2FycmF5W2ldICE9IDApIHJldHVy
biBpKkJJX0RCK2xiaXQodGhpc19hcnJheVtpXSk7CisgIGlmKHRoaXMucyA8IDApIHJldHVybiB0
aGlzLnQqQklfREI7CisgIHJldHVybiAtMTsKK30KKworLy8gcmV0dXJuIG51bWJlciBvZiAxIGJp
dHMgaW4geAorZnVuY3Rpb24gY2JpdCh4KSB7CisgIHZhciByID0gMDsKKyAgd2hpbGUoeCAhPSAw
KSB7IHggJj0geC0xOyArK3I7IH0KKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMpIHJldHVy
biBudW1iZXIgb2Ygc2V0IGJpdHMKK2Z1bmN0aW9uIGJuQml0Q291bnQoKSB7CisgIHZhciByID0g
MCwgeCA9IHRoaXMucyZCSV9ETTsKKyAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMudDsgKytpKSBy
ICs9IGNiaXQodGhpc19hcnJheVtpXV54KTsKKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMp
IHRydWUgaWZmIG50aCBiaXQgaXMgc2V0CitmdW5jdGlvbiBiblRlc3RCaXQobikgeworICB2YXIg
dGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciBqID0gTWF0aC5mbG9vcihuL0JJX0RCKTsK
KyAgaWYoaiA+PSB0aGlzLnQpIHJldHVybih0aGlzLnMhPTApOworICByZXR1cm4oKHRoaXNfYXJy
YXlbal0mKDE8PChuJUJJX0RCKSkpIT0wKTsKK30KKworLy8gKHByb3RlY3RlZCkgdGhpcyBvcCAo
MTw8bikKK2Z1bmN0aW9uIGJucENoYW5nZUJpdChuLG9wKSB7CisgIHZhciByID0gQmlnSW50ZWdl
ci5PTkUuc2hpZnRMZWZ0KG4pOworICB0aGlzLmJpdHdpc2VUbyhyLG9wLHIpOworICByZXR1cm4g
cjsKK30KKworLy8gKHB1YmxpYykgdGhpcyB8ICgxPDxuKQorZnVuY3Rpb24gYm5TZXRCaXQobikg
eyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixvcF9vcik7IH0KKworLy8gKHB1YmxpYykgdGhpcyAm
IH4oMTw8bikKK2Z1bmN0aW9uIGJuQ2xlYXJCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQo
bixvcF9hbmRub3QpOyB9CisKKy8vIChwdWJsaWMpIHRoaXMgXiAoMTw8bikKK2Z1bmN0aW9uIGJu
RmxpcEJpdChuKSB7IHJldHVybiB0aGlzLmNoYW5nZUJpdChuLG9wX3hvcik7IH0KKworLy8gKHBy
b3RlY3RlZCkgciA9IHRoaXMgKyBhCitmdW5jdGlvbiBibnBBZGRUbyhhLHIpIHsKKyAgdmFyIHRo
aXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIHZhciBy
X2FycmF5ID0gci5hcnJheTsKKyAgdmFyIGkgPSAwLCBjID0gMCwgbSA9IE1hdGgubWluKGEudCx0
aGlzLnQpOworICB3aGlsZShpIDwgbSkgeworICAgIGMgKz0gdGhpc19hcnJheVtpXSthX2FycmF5
W2ldOworICAgIHJfYXJyYXlbaSsrXSA9IGMmQklfRE07CisgICAgYyA+Pj0gQklfREI7CisgIH0K
KyAgaWYoYS50IDwgdGhpcy50KSB7CisgICAgYyArPSBhLnM7CisgICAgd2hpbGUoaSA8IHRoaXMu
dCkgeworICAgICAgYyArPSB0aGlzX2FycmF5W2ldOworICAgICAgcl9hcnJheVtpKytdID0gYyZC
SV9ETTsKKyAgICAgIGMgPj49IEJJX0RCOworICAgIH0KKyAgICBjICs9IHRoaXMuczsKKyAgfQor
ICBlbHNlIHsKKyAgICBjICs9IHRoaXMuczsKKyAgICB3aGlsZShpIDwgYS50KSB7CisgICAgICBj
ICs9IGFfYXJyYXlbaV07CisgICAgICByX2FycmF5W2krK10gPSBjJkJJX0RNOworICAgICAgYyA+
Pj0gQklfREI7CisgICAgfQorICAgIGMgKz0gYS5zOworICB9CisgIHIucyA9IChjPDApPy0xOjA7
CisgIGlmKGMgPiAwKSByX2FycmF5W2krK10gPSBjOworICBlbHNlIGlmKGMgPCAtMSkgcl9hcnJh
eVtpKytdID0gQklfRFYrYzsKKyAgci50ID0gaTsKKyAgci5jbGFtcCgpOworfQorCisvLyAocHVi
bGljKSB0aGlzICsgYQorZnVuY3Rpb24gYm5BZGQoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLmFk
ZFRvKGEscik7IHJldHVybiByOyB9CisKKy8vIChwdWJsaWMpIHRoaXMgLSBhCitmdW5jdGlvbiBi
blN1YnRyYWN0KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5zdWJUbyhhLHIpOyByZXR1cm4gcjsg
fQorCisvLyAocHVibGljKSB0aGlzICogYQorZnVuY3Rpb24gYm5NdWx0aXBseShhKSB7IHZhciBy
ID0gbmJpKCk7IHRoaXMubXVsdGlwbHlUbyhhLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGlj
KSB0aGlzIC8gYQorZnVuY3Rpb24gYm5EaXZpZGUoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLmRp
dlJlbVRvKGEscixudWxsKTsgcmV0dXJuIHI7IH0KKworLy8gKHB1YmxpYykgdGhpcyAlIGEKK2Z1
bmN0aW9uIGJuUmVtYWluZGVyKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLG51
bGwscik7IHJldHVybiByOyB9CisKKy8vIChwdWJsaWMpIFt0aGlzL2EsdGhpcyVhXQorZnVuY3Rp
b24gYm5EaXZpZGVBbmRSZW1haW5kZXIoYSkgeworICB2YXIgcSA9IG5iaSgpLCByID0gbmJpKCk7
CisgIHRoaXMuZGl2UmVtVG8oYSxxLHIpOworICByZXR1cm4gbmV3IEFycmF5KHEscik7Cit9CisK
Ky8vIChwcm90ZWN0ZWQpIHRoaXMgKj0gbiwgdGhpcyA+PSAwLCAxIDwgbiA8IERWCitmdW5jdGlv
biBibnBETXVsdGlwbHkobikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHRo
aXNfYXJyYXlbdGhpcy50XSA9IHRoaXMuYW0oMCxuLTEsdGhpcywwLDAsdGhpcy50KTsKKyAgKyt0
aGlzLnQ7CisgIHRoaXMuY2xhbXAoKTsKK30KKworLy8gKHByb3RlY3RlZCkgdGhpcyArPSBuIDw8
IHcgd29yZHMsIHRoaXMgPj0gMAorZnVuY3Rpb24gYm5wREFkZE9mZnNldChuLHcpIHsKKyAgdmFy
IHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB3aGlsZSh0aGlzLnQgPD0gdykgdGhpc19hcnJh
eVt0aGlzLnQrK10gPSAwOworICB0aGlzX2FycmF5W3ddICs9IG47CisgIHdoaWxlKHRoaXNfYXJy
YXlbd10gPj0gQklfRFYpIHsKKyAgICB0aGlzX2FycmF5W3ddIC09IEJJX0RWOworICAgIGlmKCsr
dyA+PSB0aGlzLnQpIHRoaXNfYXJyYXlbdGhpcy50KytdID0gMDsKKyAgICArK3RoaXNfYXJyYXlb
d107CisgIH0KK30KKworLy8gQSAibnVsbCIgcmVkdWNlcgorZnVuY3Rpb24gTnVsbEV4cCgpIHt9
CitmdW5jdGlvbiBuTm9wKHgpIHsgcmV0dXJuIHg7IH0KK2Z1bmN0aW9uIG5NdWxUbyh4LHkscikg
eyB4Lm11bHRpcGx5VG8oeSxyKTsgfQorZnVuY3Rpb24gblNxclRvKHgscikgeyB4LnNxdWFyZVRv
KHIpOyB9CisKK051bGxFeHAucHJvdG90eXBlLmNvbnZlcnQgPSBuTm9wOworTnVsbEV4cC5wcm90
b3R5cGUucmV2ZXJ0ID0gbk5vcDsKK051bGxFeHAucHJvdG90eXBlLm11bFRvID0gbk11bFRvOwor
TnVsbEV4cC5wcm90b3R5cGUuc3FyVG8gPSBuU3FyVG87CisKKy8vIChwdWJsaWMpIHRoaXNeZQor
ZnVuY3Rpb24gYm5Qb3coZSkgeyByZXR1cm4gdGhpcy5leHAoZSxuZXcgTnVsbEV4cCgpKTsgfQor
CisvLyAocHJvdGVjdGVkKSByID0gbG93ZXIgbiB3b3JkcyBvZiAidGhpcyAqIGEiLCBhLnQgPD0g
bgorLy8gInRoaXMiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS4KK2Z1
bmN0aW9uIGJucE11bHRpcGx5TG93ZXJUbyhhLG4scikgeworICB2YXIgcl9hcnJheSA9IHIuYXJy
YXk7CisgIHZhciBhX2FycmF5ID0gYS5hcnJheTsKKyAgdmFyIGkgPSBNYXRoLm1pbih0aGlzLnQr
YS50LG4pOworICByLnMgPSAwOyAvLyBhc3N1bWVzIGEsdGhpcyA+PSAwCisgIHIudCA9IGk7Cisg
IHdoaWxlKGkgPiAwKSByX2FycmF5Wy0taV0gPSAwOworICB2YXIgajsKKyAgZm9yKGogPSByLnQt
dGhpcy50OyBpIDwgajsgKytpKSByX2FycmF5W2krdGhpcy50XSA9IHRoaXMuYW0oMCxhX2FycmF5
W2ldLHIsaSwwLHRoaXMudCk7CisgIGZvcihqID0gTWF0aC5taW4oYS50LG4pOyBpIDwgajsgKytp
KSB0aGlzLmFtKDAsYV9hcnJheVtpXSxyLGksMCxuLWkpOworICByLmNsYW1wKCk7Cit9CisKKy8v
IChwcm90ZWN0ZWQpIHIgPSAidGhpcyAqIGEiIHdpdGhvdXQgbG93ZXIgbiB3b3JkcywgbiA+IDAK
Ky8vICJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUgaWYgYXBwcm9wcmlhdGUuCitmdW5j
dGlvbiBibnBNdWx0aXBseVVwcGVyVG8oYSxuLHIpIHsKKyAgdmFyIHJfYXJyYXkgPSByLmFycmF5
OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIC0tbjsKKyAgdmFyIGkgPSByLnQgPSB0aGlz
LnQrYS50LW47CisgIHIucyA9IDA7IC8vIGFzc3VtZXMgYSx0aGlzID49IDAKKyAgd2hpbGUoLS1p
ID49IDApIHJfYXJyYXlbaV0gPSAwOworICBmb3IoaSA9IE1hdGgubWF4KG4tdGhpcy50LDApOyBp
IDwgYS50OyArK2kpCisgICAgcl9hcnJheVt0aGlzLnQraS1uXSA9IHRoaXMuYW0obi1pLGFfYXJy
YXlbaV0sciwwLDAsdGhpcy50K2ktbik7CisgIHIuY2xhbXAoKTsKKyAgci5kclNoaWZ0VG8oMSxy
KTsKK30KKworLy8gQmFycmV0dCBtb2R1bGFyIHJlZHVjdGlvbgorZnVuY3Rpb24gQmFycmV0dCht
KSB7CisgIC8vIHNldHVwIEJhcnJldHQKKyAgdGhpcy5yMiA9IG5iaSgpOworICB0aGlzLnEzID0g
bmJpKCk7CisgIEJpZ0ludGVnZXIuT05FLmRsU2hpZnRUbygyKm0udCx0aGlzLnIyKTsKKyAgdGhp
cy5tdSA9IHRoaXMucjIuZGl2aWRlKG0pOworICB0aGlzLm0gPSBtOworfQorCitmdW5jdGlvbiBi
YXJyZXR0Q29udmVydCh4KSB7CisgIGlmKHgucyA8IDAgfHwgeC50ID4gMip0aGlzLm0udCkgcmV0
dXJuIHgubW9kKHRoaXMubSk7CisgIGVsc2UgaWYoeC5jb21wYXJlVG8odGhpcy5tKSA8IDApIHJl
dHVybiB4OworICBlbHNlIHsgdmFyIHIgPSBuYmkoKTsgeC5jb3B5VG8ocik7IHRoaXMucmVkdWNl
KHIpOyByZXR1cm4gcjsgfQorfQorCitmdW5jdGlvbiBiYXJyZXR0UmV2ZXJ0KHgpIHsgcmV0dXJu
IHg7IH0KKworLy8geCA9IHggbW9kIG0gKEhBQyAxNC40MikKK2Z1bmN0aW9uIGJhcnJldHRSZWR1
Y2UoeCkgeworICB4LmRyU2hpZnRUbyh0aGlzLm0udC0xLHRoaXMucjIpOworICBpZih4LnQgPiB0
aGlzLm0udCsxKSB7IHgudCA9IHRoaXMubS50KzE7IHguY2xhbXAoKTsgfQorICB0aGlzLm11Lm11
bHRpcGx5VXBwZXJUbyh0aGlzLnIyLHRoaXMubS50KzEsdGhpcy5xMyk7CisgIHRoaXMubS5tdWx0
aXBseUxvd2VyVG8odGhpcy5xMyx0aGlzLm0udCsxLHRoaXMucjIpOworICB3aGlsZSh4LmNvbXBh
cmVUbyh0aGlzLnIyKSA8IDApIHguZEFkZE9mZnNldCgxLHRoaXMubS50KzEpOworICB4LnN1YlRv
KHRoaXMucjIseCk7CisgIHdoaWxlKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0
aGlzLm0seCk7Cit9CisKKy8vIHIgPSB4XjIgbW9kIG07IHggIT0gcgorZnVuY3Rpb24gYmFycmV0
dFNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgfQorCisvLyByID0g
eCp5IG1vZCBtOyB4LHkgIT0gcgorZnVuY3Rpb24gYmFycmV0dE11bFRvKHgseSxyKSB7IHgubXVs
dGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQorCitCYXJyZXR0LnByb3RvdHlwZS5jb252
ZXJ0ID0gYmFycmV0dENvbnZlcnQ7CitCYXJyZXR0LnByb3RvdHlwZS5yZXZlcnQgPSBiYXJyZXR0
UmV2ZXJ0OworQmFycmV0dC5wcm90b3R5cGUucmVkdWNlID0gYmFycmV0dFJlZHVjZTsKK0JhcnJl
dHQucHJvdG90eXBlLm11bFRvID0gYmFycmV0dE11bFRvOworQmFycmV0dC5wcm90b3R5cGUuc3Fy
VG8gPSBiYXJyZXR0U3FyVG87CisKKy8vIChwdWJsaWMpIHRoaXNeZSAlIG0gKEhBQyAxNC44NSkK
K2Z1bmN0aW9uIGJuTW9kUG93KGUsbSkgeworICB2YXIgZV9hcnJheSA9IGUuYXJyYXk7CisgIHZh
ciBpID0gZS5iaXRMZW5ndGgoKSwgaywgciA9IG5idigxKSwgejsKKyAgaWYoaSA8PSAwKSByZXR1
cm4gcjsKKyAgZWxzZSBpZihpIDwgMTgpIGsgPSAxOworICBlbHNlIGlmKGkgPCA0OCkgayA9IDM7
CisgIGVsc2UgaWYoaSA8IDE0NCkgayA9IDQ7CisgIGVsc2UgaWYoaSA8IDc2OCkgayA9IDU7Cisg
IGVsc2UgayA9IDY7CisgIGlmKGkgPCA4KQorICAgIHogPSBuZXcgQ2xhc3NpYyhtKTsKKyAgZWxz
ZSBpZihtLmlzRXZlbigpKQorICAgIHogPSBuZXcgQmFycmV0dChtKTsKKyAgZWxzZQorICAgIHog
PSBuZXcgTW9udGdvbWVyeShtKTsKKworICAvLyBwcmVjb21wdXRhdGlvbgorICB2YXIgZyA9IG5l
dyBBcnJheSgpLCBuID0gMywgazEgPSBrLTEsIGttID0gKDE8PGspLTE7CisgIGdbMV0gPSB6LmNv
bnZlcnQodGhpcyk7CisgIGlmKGsgPiAxKSB7CisgICAgdmFyIGcyID0gbmJpKCk7CisgICAgei5z
cXJUbyhnWzFdLGcyKTsKKyAgICB3aGlsZShuIDw9IGttKSB7CisgICAgICBnW25dID0gbmJpKCk7
CisgICAgICB6Lm11bFRvKGcyLGdbbi0yXSxnW25dKTsKKyAgICAgIG4gKz0gMjsKKyAgICB9Cisg
IH0KKworICB2YXIgaiA9IGUudC0xLCB3LCBpczEgPSB0cnVlLCByMiA9IG5iaSgpLCB0OworICBp
ID0gbmJpdHMoZV9hcnJheVtqXSktMTsKKyAgd2hpbGUoaiA+PSAwKSB7CisgICAgaWYoaSA+PSBr
MSkgdyA9IChlX2FycmF5W2pdPj4oaS1rMSkpJmttOworICAgIGVsc2UgeworICAgICAgdyA9IChl
X2FycmF5W2pdJigoMTw8KGkrMSkpLTEpKTw8KGsxLWkpOworICAgICAgaWYoaiA+IDApIHcgfD0g
ZV9hcnJheVtqLTFdPj4oQklfREIraS1rMSk7CisgICAgfQorCisgICAgbiA9IGs7CisgICAgd2hp
bGUoKHcmMSkgPT0gMCkgeyB3ID4+PSAxOyAtLW47IH0KKyAgICBpZigoaSAtPSBuKSA8IDApIHsg
aSArPSBCSV9EQjsgLS1qOyB9CisgICAgaWYoaXMxKSB7CS8vIHJldCA9PSAxLCBkb24ndCBib3Ro
ZXIgc3F1YXJpbmcgb3IgbXVsdGlwbHlpbmcgaXQKKyAgICAgIGdbd10uY29weVRvKHIpOworICAg
ICAgaXMxID0gZmFsc2U7CisgICAgfQorICAgIGVsc2UgeworICAgICAgd2hpbGUobiA+IDEpIHsg
ei5zcXJUbyhyLHIyKTsgei5zcXJUbyhyMixyKTsgbiAtPSAyOyB9CisgICAgICBpZihuID4gMCkg
ei5zcXJUbyhyLHIyKTsgZWxzZSB7IHQgPSByOyByID0gcjI7IHIyID0gdDsgfQorICAgICAgei5t
dWxUbyhyMixnW3ddLHIpOworICAgIH0KKworICAgIHdoaWxlKGogPj0gMCAmJiAoZV9hcnJheVtq
XSYoMTw8aSkpID09IDApIHsKKyAgICAgIHouc3FyVG8ocixyMik7IHQgPSByOyByID0gcjI7IHIy
ID0gdDsKKyAgICAgIGlmKC0taSA8IDApIHsgaSA9IEJJX0RCLTE7IC0tajsgfQorICAgIH0KKyAg
fQorICByZXR1cm4gei5yZXZlcnQocik7Cit9CisKKy8vIChwdWJsaWMpIGdjZCh0aGlzLGEpIChI
QUMgMTQuNTQpCitmdW5jdGlvbiBibkdDRChhKSB7CisgIHZhciB4ID0gKHRoaXMuczwwKT90aGlz
Lm5lZ2F0ZSgpOnRoaXMuY2xvbmUoKTsKKyAgdmFyIHkgPSAoYS5zPDApP2EubmVnYXRlKCk6YS5j
bG9uZSgpOworICBpZih4LmNvbXBhcmVUbyh5KSA8IDApIHsgdmFyIHQgPSB4OyB4ID0geTsgeSA9
IHQ7IH0KKyAgdmFyIGkgPSB4LmdldExvd2VzdFNldEJpdCgpLCBnID0geS5nZXRMb3dlc3RTZXRC
aXQoKTsKKyAgaWYoZyA8IDApIHJldHVybiB4OworICBpZihpIDwgZykgZyA9IGk7CisgIGlmKGcg
PiAwKSB7CisgICAgeC5yU2hpZnRUbyhnLHgpOworICAgIHkuclNoaWZ0VG8oZyx5KTsKKyAgfQor
ICB3aGlsZSh4LnNpZ251bSgpID4gMCkgeworICAgIGlmKChpID0geC5nZXRMb3dlc3RTZXRCaXQo
KSkgPiAwKSB4LnJTaGlmdFRvKGkseCk7CisgICAgaWYoKGkgPSB5LmdldExvd2VzdFNldEJpdCgp
KSA+IDApIHkuclNoaWZ0VG8oaSx5KTsKKyAgICBpZih4LmNvbXBhcmVUbyh5KSA+PSAwKSB7Cisg
ICAgICB4LnN1YlRvKHkseCk7CisgICAgICB4LnJTaGlmdFRvKDEseCk7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgeS5zdWJUbyh4LHkpOworICAgICAgeS5yU2hpZnRUbygxLHkpOworICAgIH0K
KyAgfQorICBpZihnID4gMCkgeS5sU2hpZnRUbyhnLHkpOworICByZXR1cm4geTsKK30KKworLy8g
KHByb3RlY3RlZCkgdGhpcyAlIG4sIG4gPCAyXjI2CitmdW5jdGlvbiBibnBNb2RJbnQobikgewor
ICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIGlmKG4gPD0gMCkgcmV0dXJuIDA7Cisg
IHZhciBkID0gQklfRFYlbiwgciA9ICh0aGlzLnM8MCk/bi0xOjA7CisgIGlmKHRoaXMudCA+IDAp
CisgICAgaWYoZCA9PSAwKSByID0gdGhpc19hcnJheVswXSVuOworICAgIGVsc2UgZm9yKHZhciBp
ID0gdGhpcy50LTE7IGkgPj0gMDsgLS1pKSByID0gKGQqcit0aGlzX2FycmF5W2ldKSVuOworICBy
ZXR1cm4gcjsKK30KKworLy8gKHB1YmxpYykgMS90aGlzICUgbSAoSEFDIDE0LjYxKQorZnVuY3Rp
b24gYm5Nb2RJbnZlcnNlKG0pIHsKKyAgdmFyIGFjID0gbS5pc0V2ZW4oKTsKKyAgaWYoKHRoaXMu
aXNFdmVuKCkgJiYgYWMpIHx8IG0uc2lnbnVtKCkgPT0gMCkgcmV0dXJuIEJpZ0ludGVnZXIuWkVS
TzsKKyAgdmFyIHUgPSBtLmNsb25lKCksIHYgPSB0aGlzLmNsb25lKCk7CisgIHZhciBhID0gbmJ2
KDEpLCBiID0gbmJ2KDApLCBjID0gbmJ2KDApLCBkID0gbmJ2KDEpOworICB3aGlsZSh1LnNpZ251
bSgpICE9IDApIHsKKyAgICB3aGlsZSh1LmlzRXZlbigpKSB7CisgICAgICB1LnJTaGlmdFRvKDEs
dSk7CisgICAgICBpZihhYykgeworICAgICAgICBpZighYS5pc0V2ZW4oKSB8fCAhYi5pc0V2ZW4o
KSkgeyBhLmFkZFRvKHRoaXMsYSk7IGIuc3ViVG8obSxiKTsgfQorICAgICAgICBhLnJTaGlmdFRv
KDEsYSk7CisgICAgICB9CisgICAgICBlbHNlIGlmKCFiLmlzRXZlbigpKSBiLnN1YlRvKG0sYik7
CisgICAgICBiLnJTaGlmdFRvKDEsYik7CisgICAgfQorICAgIHdoaWxlKHYuaXNFdmVuKCkpIHsK
KyAgICAgIHYuclNoaWZ0VG8oMSx2KTsKKyAgICAgIGlmKGFjKSB7CisgICAgICAgIGlmKCFjLmlz
RXZlbigpIHx8ICFkLmlzRXZlbigpKSB7IGMuYWRkVG8odGhpcyxjKTsgZC5zdWJUbyhtLGQpOyB9
CisgICAgICAgIGMuclNoaWZ0VG8oMSxjKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoIWQuaXNF
dmVuKCkpIGQuc3ViVG8obSxkKTsKKyAgICAgIGQuclNoaWZ0VG8oMSxkKTsKKyAgICB9CisgICAg
aWYodS5jb21wYXJlVG8odikgPj0gMCkgeworICAgICAgdS5zdWJUbyh2LHUpOworICAgICAgaWYo
YWMpIGEuc3ViVG8oYyxhKTsKKyAgICAgIGIuc3ViVG8oZCxiKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB2LnN1YlRvKHUsdik7CisgICAgICBpZihhYykgYy5zdWJUbyhhLGMpOworICAgICAg
ZC5zdWJUbyhiLGQpOworICAgIH0KKyAgfQorICBpZih2LmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9O
RSkgIT0gMCkgcmV0dXJuIEJpZ0ludGVnZXIuWkVSTzsKKyAgaWYoZC5jb21wYXJlVG8obSkgPj0g
MCkgcmV0dXJuIGQuc3VidHJhY3QobSk7CisgIGlmKGQuc2lnbnVtKCkgPCAwKSBkLmFkZFRvKG0s
ZCk7IGVsc2UgcmV0dXJuIGQ7CisgIGlmKGQuc2lnbnVtKCkgPCAwKSByZXR1cm4gZC5hZGQobSk7
IGVsc2UgcmV0dXJuIGQ7Cit9CisKK3ZhciBsb3dwcmltZXMgPSBbMiwzLDUsNywxMSwxMywxNywx
OSwyMywyOSwzMSwzNyw0MSw0Myw0Nyw1Myw1OSw2MSw2Nyw3MSw3Myw3OSw4Myw4OSw5NywxMDEs
MTAzLDEwNywxMDksMTEzLDEyNywxMzEsMTM3LDEzOSwxNDksMTUxLDE1NywxNjMsMTY3LDE3Mywx
NzksMTgxLDE5MSwxOTMsMTk3LDE5OSwyMTEsMjIzLDIyNywyMjksMjMzLDIzOSwyNDEsMjUxLDI1
NywyNjMsMjY5LDI3MSwyNzcsMjgxLDI4MywyOTMsMzA3LDMxMSwzMTMsMzE3LDMzMSwzMzcsMzQ3
LDM0OSwzNTMsMzU5LDM2NywzNzMsMzc5LDM4MywzODksMzk3LDQwMSw0MDksNDE5LDQyMSw0MzEs
NDMzLDQzOSw0NDMsNDQ5LDQ1Nyw0NjEsNDYzLDQ2Nyw0NzksNDg3LDQ5MSw0OTksNTAzLDUwOV07
Cit2YXIgbHBsaW0gPSAoMTw8MjYpL2xvd3ByaW1lc1tsb3dwcmltZXMubGVuZ3RoLTFdOworCisv
LyAocHVibGljKSB0ZXN0IHByaW1hbGl0eSB3aXRoIGNlcnRhaW50eSA+PSAxLS41XnQKK2Z1bmN0
aW9uIGJuSXNQcm9iYWJsZVByaW1lKHQpIHsKKyAgdmFyIGksIHggPSB0aGlzLmFicygpOworICB2
YXIgeF9hcnJheSA9IHguYXJyYXk7CisgIGlmKHgudCA9PSAxICYmIHhfYXJyYXlbMF0gPD0gbG93
cHJpbWVzW2xvd3ByaW1lcy5sZW5ndGgtMV0pIHsKKyAgICBmb3IoaSA9IDA7IGkgPCBsb3dwcmlt
ZXMubGVuZ3RoOyArK2kpCisgICAgICBpZih4X2FycmF5WzBdID09IGxvd3ByaW1lc1tpXSkgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmKHguaXNFdmVuKCkpIHJldHVy
biBmYWxzZTsKKyAgaSA9IDE7CisgIHdoaWxlKGkgPCBsb3dwcmltZXMubGVuZ3RoKSB7CisgICAg
dmFyIG0gPSBsb3dwcmltZXNbaV0sIGogPSBpKzE7CisgICAgd2hpbGUoaiA8IGxvd3ByaW1lcy5s
ZW5ndGggJiYgbSA8IGxwbGltKSBtICo9IGxvd3ByaW1lc1tqKytdOworICAgIG0gPSB4Lm1vZElu
dChtKTsKKyAgICB3aGlsZShpIDwgaikgaWYobSVsb3dwcmltZXNbaSsrXSA9PSAwKSByZXR1cm4g
ZmFsc2U7CisgIH0KKyAgcmV0dXJuIHgubWlsbGVyUmFiaW4odCk7Cit9CisKKy8vIChwcm90ZWN0
ZWQpIHRydWUgaWYgcHJvYmFibHkgcHJpbWUgKEhBQyA0LjI0LCBNaWxsZXItUmFiaW4pCitmdW5j
dGlvbiBibnBNaWxsZXJSYWJpbih0KSB7CisgIHZhciBuMSA9IHRoaXMuc3VidHJhY3QoQmlnSW50
ZWdlci5PTkUpOworICB2YXIgayA9IG4xLmdldExvd2VzdFNldEJpdCgpOworICBpZihrIDw9IDAp
IHJldHVybiBmYWxzZTsKKyAgdmFyIHIgPSBuMS5zaGlmdFJpZ2h0KGspOworICB0ID0gKHQrMSk+
PjE7CisgIGlmKHQgPiBsb3dwcmltZXMubGVuZ3RoKSB0ID0gbG93cHJpbWVzLmxlbmd0aDsKKyAg
dmFyIGEgPSBuYmkoKTsKKyAgZm9yKHZhciBpID0gMDsgaSA8IHQ7ICsraSkgeworICAgIGEuZnJv
bUludChsb3dwcmltZXNbaV0pOworICAgIHZhciB5ID0gYS5tb2RQb3cocix0aGlzKTsKKyAgICBp
Zih5LmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgIT0gMCAmJiB5LmNvbXBhcmVUbyhuMSkgIT0g
MCkgeworICAgICAgdmFyIGogPSAxOworICAgICAgd2hpbGUoaisrIDwgayAmJiB5LmNvbXBhcmVU
byhuMSkgIT0gMCkgeworICAgICAgICB5ID0geS5tb2RQb3dJbnQoMix0aGlzKTsKKyAgICAgICAg
aWYoeS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpID09IDApIHJldHVybiBmYWxzZTsKKyAgICAg
IH0KKyAgICAgIGlmKHkuY29tcGFyZVRvKG4xKSAhPSAwKSByZXR1cm4gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBwcm90ZWN0ZWQKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmNodW5rU2l6ZSA9IGJucENodW5rU2l6ZTsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnRvUmFk
aXggPSBibnBUb1JhZGl4OworQmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVJhZGl4ID0gYm5wRnJv
bVJhZGl4OworQmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbU51bWJlciA9IGJucEZyb21OdW1iZXI7
CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXR3aXNlVG8gPSBibnBCaXR3aXNlVG87CitCaWdJbnRl
Z2VyLnByb3RvdHlwZS5jaGFuZ2VCaXQgPSBibnBDaGFuZ2VCaXQ7CitCaWdJbnRlZ2VyLnByb3Rv
dHlwZS5hZGRUbyA9IGJucEFkZFRvOworQmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5ID0g
Ym5wRE11bHRpcGx5OworQmlnSW50ZWdlci5wcm90b3R5cGUuZEFkZE9mZnNldCA9IGJucERBZGRP
ZmZzZXQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseUxvd2VyVG8gPSBibnBNdWx0aXBs
eUxvd2VyVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVVwcGVyVG8gPSBibnBNdWx0
aXBseVVwcGVyVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnQgPSBibnBNb2RJbnQ7CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5taWxsZXJSYWJpbiA9IGJucE1pbGxlclJhYmluOworCisvLyBw
dWJsaWMKK0JpZ0ludGVnZXIucHJvdG90eXBlLmNsb25lID0gYm5DbG9uZTsKK0JpZ0ludGVnZXIu
cHJvdG90eXBlLmludFZhbHVlID0gYm5JbnRWYWx1ZTsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmJ5
dGVWYWx1ZSA9IGJuQnl0ZVZhbHVlOworQmlnSW50ZWdlci5wcm90b3R5cGUuc2hvcnRWYWx1ZSA9
IGJuU2hvcnRWYWx1ZTsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnNpZ251bSA9IGJuU2lnTnVtOwor
QmlnSW50ZWdlci5wcm90b3R5cGUudG9CeXRlQXJyYXkgPSBiblRvQnl0ZUFycmF5OworQmlnSW50
ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gYm5FcXVhbHM7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5t
aW4gPSBibk1pbjsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm1heCA9IGJuTWF4OworQmlnSW50ZWdl
ci5wcm90b3R5cGUuYW5kID0gYm5BbmQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5vciA9IGJuT3I7
CitCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBiblhvcjsKK0JpZ0ludGVnZXIucHJvdG90eXBl
LmFuZE5vdCA9IGJuQW5kTm90OworQmlnSW50ZWdlci5wcm90b3R5cGUubm90ID0gYm5Ob3Q7CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQgPSBiblNoaWZ0TGVmdDsKK0JpZ0ludGVnZXIu
cHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBiblNoaWZ0UmlnaHQ7CitCaWdJbnRlZ2VyLnByb3RvdHlw
ZS5nZXRMb3dlc3RTZXRCaXQgPSBibkdldExvd2VzdFNldEJpdDsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmJpdENvdW50ID0gYm5CaXRDb3VudDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnRlc3RCaXQg
PSBiblRlc3RCaXQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5zZXRCaXQgPSBiblNldEJpdDsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLmNsZWFyQml0ID0gYm5DbGVhckJpdDsKK0JpZ0ludGVnZXIucHJv
dG90eXBlLmZsaXBCaXQgPSBibkZsaXBCaXQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBi
bkFkZDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gYm5TdWJ0cmFjdDsKK0JpZ0lu
dGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gYm5NdWx0aXBseTsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmRpdmlkZSA9IGJuRGl2aWRlOworQmlnSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0g
Ym5SZW1haW5kZXI7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGVBbmRSZW1haW5kZXIgPSBi
bkRpdmlkZUFuZFJlbWFpbmRlcjsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IGJuTW9k
UG93OworQmlnSW50ZWdlci5wcm90b3R5cGUubW9kSW52ZXJzZSA9IGJuTW9kSW52ZXJzZTsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLnBvdyA9IGJuUG93OworQmlnSW50ZWdlci5wcm90b3R5cGUuZ2Nk
ID0gYm5HQ0Q7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBibklzUHJv
YmFibGVQcmltZTsKKworLy8gQmlnSW50ZWdlciBpbnRlcmZhY2VzIG5vdCBpbXBsZW1lbnRlZCBp
biBqc2JuOgorCisvLyBCaWdJbnRlZ2VyKGludCBzaWdudW0sIGJ5dGVbXSBtYWduaXR1ZGUpCisv
LyBkb3VibGUgZG91YmxlVmFsdWUoKQorLy8gZmxvYXQgZmxvYXRWYWx1ZSgpCisvLyBpbnQgaGFz
aENvZGUoKQorLy8gbG9uZyBsb25nVmFsdWUoKQorLy8gc3RhdGljIEJpZ0ludGVnZXIgdmFsdWVP
Zihsb25nIHZhbCkKKy8vIHBybmc0LmpzIC0gdXNlcyBBcmNmb3VyIGFzIGEgUFJORworCitmdW5j
dGlvbiBBcmNmb3VyKCkgeworICB0aGlzLmkgPSAwOworICB0aGlzLmogPSAwOworICB0aGlzLlMg
PSBuZXcgQXJyYXkoKTsKK30KKworLy8gSW5pdGlhbGl6ZSBhcmNmb3VyIGNvbnRleHQgZnJvbSBr
ZXksIGFuIGFycmF5IG9mIGludHMsIGVhY2ggZnJvbSBbMC4uMjU1XQorZnVuY3Rpb24gQVJDNGlu
aXQoa2V5KSB7CisgIHZhciBpLCBqLCB0OworICBmb3IoaSA9IDA7IGkgPCAyNTY7ICsraSkKKyAg
ICB0aGlzLlNbaV0gPSBpOworICBqID0gMDsKKyAgZm9yKGkgPSAwOyBpIDwgMjU2OyArK2kpIHsK
KyAgICBqID0gKGogKyB0aGlzLlNbaV0gKyBrZXlbaSAlIGtleS5sZW5ndGhdKSAmIDI1NTsKKyAg
ICB0ID0gdGhpcy5TW2ldOworICAgIHRoaXMuU1tpXSA9IHRoaXMuU1tqXTsKKyAgICB0aGlzLlNb
al0gPSB0OworICB9CisgIHRoaXMuaSA9IDA7CisgIHRoaXMuaiA9IDA7Cit9CisKK2Z1bmN0aW9u
IEFSQzRuZXh0KCkgeworICB2YXIgdDsKKyAgdGhpcy5pID0gKHRoaXMuaSArIDEpICYgMjU1Owor
ICB0aGlzLmogPSAodGhpcy5qICsgdGhpcy5TW3RoaXMuaV0pICYgMjU1OworICB0ID0gdGhpcy5T
W3RoaXMuaV07CisgIHRoaXMuU1t0aGlzLmldID0gdGhpcy5TW3RoaXMual07CisgIHRoaXMuU1t0
aGlzLmpdID0gdDsKKyAgcmV0dXJuIHRoaXMuU1sodCArIHRoaXMuU1t0aGlzLmldKSAmIDI1NV07
Cit9CisKK0FyY2ZvdXIucHJvdG90eXBlLmluaXQgPSBBUkM0aW5pdDsKK0FyY2ZvdXIucHJvdG90
eXBlLm5leHQgPSBBUkM0bmV4dDsKKworLy8gUGx1ZyBpbiB5b3VyIFJORyBjb25zdHJ1Y3RvciBo
ZXJlCitmdW5jdGlvbiBwcm5nX25ld3N0YXRlKCkgeworICByZXR1cm4gbmV3IEFyY2ZvdXIoKTsK
K30KKworLy8gUG9vbCBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0IGFuZCBncmVhdGVyIHRo
YW4gMzIuCisvLyBBbiBhcnJheSBvZiBieXRlcyB0aGUgc2l6ZSBvZiB0aGUgcG9vbCB3aWxsIGJl
IHBhc3NlZCB0byBpbml0KCkKK3ZhciBybmdfcHNpemUgPSAyNTY7CisvLyBSYW5kb20gbnVtYmVy
IGdlbmVyYXRvciAtIHJlcXVpcmVzIGEgUFJORyBiYWNrZW5kLCBlLmcuIHBybmc0LmpzCisKKy8v
IEZvciBiZXN0IHJlc3VsdHMsIHB1dCBjb2RlIGxpa2UKKy8vIDxib2R5IG9uQ2xpY2s9J3JuZ19z
ZWVkX3RpbWUoKTsnIG9uS2V5UHJlc3M9J3JuZ19zZWVkX3RpbWUoKTsnPgorLy8gaW4geW91ciBt
YWluIEhUTUwgZG9jdW1lbnQuCisKK3ZhciBybmdfc3RhdGU7Cit2YXIgcm5nX3Bvb2w7Cit2YXIg
cm5nX3BwdHI7CisKKy8vIE1peCBpbiBhIDMyLWJpdCBpbnRlZ2VyIGludG8gdGhlIHBvb2wKK2Z1
bmN0aW9uIHJuZ19zZWVkX2ludCh4KSB7CisgIHJuZ19wb29sW3JuZ19wcHRyKytdIF49IHggJiAy
NTU7CisgIHJuZ19wb29sW3JuZ19wcHRyKytdIF49ICh4ID4+IDgpICYgMjU1OworICBybmdfcG9v
bFtybmdfcHB0cisrXSBePSAoeCA+PiAxNikgJiAyNTU7CisgIHJuZ19wb29sW3JuZ19wcHRyKytd
IF49ICh4ID4+IDI0KSAmIDI1NTsKKyAgaWYocm5nX3BwdHIgPj0gcm5nX3BzaXplKSBybmdfcHB0
ciAtPSBybmdfcHNpemU7Cit9CisKKy8vIE1peCBpbiB0aGUgY3VycmVudCB0aW1lICh3L21pbGxp
c2Vjb25kcykgaW50byB0aGUgcG9vbAorZnVuY3Rpb24gcm5nX3NlZWRfdGltZSgpIHsKKyAgLy8g
VXNlIHByZS1jb21wdXRlZCBkYXRlIHRvIGF2b2lkIG1ha2luZyB0aGUgYmVuY2htYXJrIAorICAv
LyByZXN1bHRzIGRlcGVuZGVudCBvbiB0aGUgY3VycmVudCBkYXRlLgorICBybmdfc2VlZF9pbnQo
MTEyMjkyNjk4OTQ4Nyk7Cit9CisKKy8vIEluaXRpYWxpemUgdGhlIHBvb2wgd2l0aCBqdW5rIGlm
IG5lZWRlZC4KK2lmKHJuZ19wb29sID09IG51bGwpIHsKKyAgcm5nX3Bvb2wgPSBuZXcgQXJyYXko
KTsKKyAgcm5nX3BwdHIgPSAwOworICB2YXIgdDsKKyAgd2hpbGUocm5nX3BwdHIgPCBybmdfcHNp
emUpIHsgIC8vIGV4dHJhY3Qgc29tZSByYW5kb21uZXNzIGZyb20gTWF0aC5yYW5kb20oKQorICAg
IHQgPSBNYXRoLmZsb29yKDY1NTM2ICogTWF0aC5yYW5kb20oKSk7CisgICAgcm5nX3Bvb2xbcm5n
X3BwdHIrK10gPSB0ID4+PiA4OworICAgIHJuZ19wb29sW3JuZ19wcHRyKytdID0gdCAmIDI1NTsK
KyAgfQorICBybmdfcHB0ciA9IDA7CisgIHJuZ19zZWVkX3RpbWUoKTsKKyAgLy9ybmdfc2VlZF9p
bnQod2luZG93LnNjcmVlblgpOworICAvL3JuZ19zZWVkX2ludCh3aW5kb3cuc2NyZWVuWSk7Cit9
CisKK2Z1bmN0aW9uIHJuZ19nZXRfYnl0ZSgpIHsKKyAgaWYocm5nX3N0YXRlID09IG51bGwpIHsK
KyAgICBybmdfc2VlZF90aW1lKCk7CisgICAgcm5nX3N0YXRlID0gcHJuZ19uZXdzdGF0ZSgpOwor
ICAgIHJuZ19zdGF0ZS5pbml0KHJuZ19wb29sKTsKKyAgICBmb3Iocm5nX3BwdHIgPSAwOyBybmdf
cHB0ciA8IHJuZ19wb29sLmxlbmd0aDsgKytybmdfcHB0cikKKyAgICAgIHJuZ19wb29sW3JuZ19w
cHRyXSA9IDA7CisgICAgcm5nX3BwdHIgPSAwOworICAgIC8vcm5nX3Bvb2wgPSBudWxsOworICB9
CisgIC8vIFRPRE86IGFsbG93IHJlc2VlZGluZyBhZnRlciBmaXJzdCByZXF1ZXN0CisgIHJldHVy
biBybmdfc3RhdGUubmV4dCgpOworfQorCitmdW5jdGlvbiBybmdfZ2V0X2J5dGVzKGJhKSB7Cisg
IHZhciBpOworICBmb3IoaSA9IDA7IGkgPCBiYS5sZW5ndGg7ICsraSkgYmFbaV0gPSBybmdfZ2V0
X2J5dGUoKTsKK30KKworZnVuY3Rpb24gU2VjdXJlUmFuZG9tKCkge30KKworU2VjdXJlUmFuZG9t
LnByb3RvdHlwZS5uZXh0Qnl0ZXMgPSBybmdfZ2V0X2J5dGVzOworLy8gRGVwZW5kcyBvbiBqc2Ju
LmpzIGFuZCBybmcuanMKKworLy8gY29udmVydCBhIChoZXgpIHN0cmluZyB0byBhIGJpZ251bSBv
YmplY3QKK2Z1bmN0aW9uIHBhcnNlQmlnSW50KHN0cixyKSB7CisgIHJldHVybiBuZXcgQmlnSW50
ZWdlcihzdHIscik7Cit9CisKK2Z1bmN0aW9uIGxpbmVicmsocyxuKSB7CisgIHZhciByZXQgPSAi
IjsKKyAgdmFyIGkgPSAwOworICB3aGlsZShpICsgbiA8IHMubGVuZ3RoKSB7CisgICAgcmV0ICs9
IHMuc3Vic3RyaW5nKGksaStuKSArICJcbiI7CisgICAgaSArPSBuOworICB9CisgIHJldHVybiBy
ZXQgKyBzLnN1YnN0cmluZyhpLHMubGVuZ3RoKTsKK30KKworZnVuY3Rpb24gYnl0ZTJIZXgoYikg
eworICBpZihiIDwgMHgxMCkKKyAgICByZXR1cm4gIjAiICsgYi50b1N0cmluZygxNik7CisgIGVs
c2UKKyAgICByZXR1cm4gYi50b1N0cmluZygxNik7Cit9CisKKy8vIFBLQ1MjMSAodHlwZSAyLCBy
YW5kb20pIHBhZCBpbnB1dCBzdHJpbmcgcyB0byBuIGJ5dGVzLCBhbmQgcmV0dXJuIGEgYmlnaW50
CitmdW5jdGlvbiBwa2NzMXBhZDIocyxuKSB7CisgIGlmKG4gPCBzLmxlbmd0aCArIDExKSB7Cisg
ICAgYWxlcnQoIk1lc3NhZ2UgdG9vIGxvbmcgZm9yIFJTQSIpOworICAgIHJldHVybiBudWxsOwor
ICB9CisgIHZhciBiYSA9IG5ldyBBcnJheSgpOworICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsKKyAg
d2hpbGUoaSA+PSAwICYmIG4gPiAwKSBiYVstLW5dID0gcy5jaGFyQ29kZUF0KGktLSk7CisgIGJh
Wy0tbl0gPSAwOworICB2YXIgcm5nID0gbmV3IFNlY3VyZVJhbmRvbSgpOworICB2YXIgeCA9IG5l
dyBBcnJheSgpOworICB3aGlsZShuID4gMikgeyAvLyByYW5kb20gbm9uLXplcm8gcGFkCisgICAg
eFswXSA9IDA7CisgICAgd2hpbGUoeFswXSA9PSAwKSBybmcubmV4dEJ5dGVzKHgpOworICAgIGJh
Wy0tbl0gPSB4WzBdOworICB9CisgIGJhWy0tbl0gPSAyOworICBiYVstLW5dID0gMDsKKyAgcmV0
dXJuIG5ldyBCaWdJbnRlZ2VyKGJhKTsKK30KKworLy8gImVtcHR5IiBSU0Ega2V5IGNvbnN0cnVj
dG9yCitmdW5jdGlvbiBSU0FLZXkoKSB7CisgIHRoaXMubiA9IG51bGw7CisgIHRoaXMuZSA9IDA7
CisgIHRoaXMuZCA9IG51bGw7CisgIHRoaXMucCA9IG51bGw7CisgIHRoaXMucSA9IG51bGw7Cisg
IHRoaXMuZG1wMSA9IG51bGw7CisgIHRoaXMuZG1xMSA9IG51bGw7CisgIHRoaXMuY29lZmYgPSBu
dWxsOworfQorCisvLyBTZXQgdGhlIHB1YmxpYyBrZXkgZmllbGRzIE4gYW5kIGUgZnJvbSBoZXgg
c3RyaW5ncworZnVuY3Rpb24gUlNBU2V0UHVibGljKE4sRSkgeworICBpZihOICE9IG51bGwgJiYg
RSAhPSBudWxsICYmIE4ubGVuZ3RoID4gMCAmJiBFLmxlbmd0aCA+IDApIHsKKyAgICB0aGlzLm4g
PSBwYXJzZUJpZ0ludChOLDE2KTsKKyAgICB0aGlzLmUgPSBwYXJzZUludChFLDE2KTsKKyAgfQor
ICBlbHNlCisgICAgYWxlcnQoIkludmFsaWQgUlNBIHB1YmxpYyBrZXkiKTsKK30KKworLy8gUGVy
Zm9ybSByYXcgcHVibGljIG9wZXJhdGlvbiBvbiAieCI6IHJldHVybiB4XmUgKG1vZCBuKQorZnVu
Y3Rpb24gUlNBRG9QdWJsaWMoeCkgeworICByZXR1cm4geC5tb2RQb3dJbnQodGhpcy5lLCB0aGlz
Lm4pOworfQorCisvLyBSZXR1cm4gdGhlIFBLQ1MjMSBSU0EgZW5jcnlwdGlvbiBvZiAidGV4dCIg
YXMgYW4gZXZlbi1sZW5ndGggaGV4IHN0cmluZworZnVuY3Rpb24gUlNBRW5jcnlwdCh0ZXh0KSB7
CisgIHZhciBtID0gcGtjczFwYWQyKHRleHQsKHRoaXMubi5iaXRMZW5ndGgoKSs3KT4+Myk7Cisg
IGlmKG0gPT0gbnVsbCkgcmV0dXJuIG51bGw7CisgIHZhciBjID0gdGhpcy5kb1B1YmxpYyhtKTsK
KyAgaWYoYyA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgdmFyIGggPSBjLnRvU3RyaW5nKDE2KTsK
KyAgaWYoKGgubGVuZ3RoICYgMSkgPT0gMCkgcmV0dXJuIGg7IGVsc2UgcmV0dXJuICIwIiArIGg7
Cit9CisKKy8vIFJldHVybiB0aGUgUEtDUyMxIFJTQSBlbmNyeXB0aW9uIG9mICJ0ZXh0IiBhcyBh
IEJhc2U2NC1lbmNvZGVkIHN0cmluZworLy9mdW5jdGlvbiBSU0FFbmNyeXB0QjY0KHRleHQpIHsK
Ky8vICB2YXIgaCA9IHRoaXMuZW5jcnlwdCh0ZXh0KTsKKy8vICBpZihoKSByZXR1cm4gaGV4MmI2
NChoKTsgZWxzZSByZXR1cm4gbnVsbDsKKy8vfQorCisvLyBwcm90ZWN0ZWQKK1JTQUtleS5wcm90
b3R5cGUuZG9QdWJsaWMgPSBSU0FEb1B1YmxpYzsKKworLy8gcHVibGljCitSU0FLZXkucHJvdG90
eXBlLnNldFB1YmxpYyA9IFJTQVNldFB1YmxpYzsKK1JTQUtleS5wcm90b3R5cGUuZW5jcnlwdCA9
IFJTQUVuY3J5cHQ7CisvL1JTQUtleS5wcm90b3R5cGUuZW5jcnlwdF9iNjQgPSBSU0FFbmNyeXB0
QjY0OworLy8gRGVwZW5kcyBvbiByc2EuanMgYW5kIGpzYm4yLmpzCisKKy8vIFVuZG8gUEtDUyMx
ICh0eXBlIDIsIHJhbmRvbSkgcGFkZGluZyBhbmQsIGlmIHZhbGlkLCByZXR1cm4gdGhlIHBsYWlu
dGV4dAorZnVuY3Rpb24gcGtjczF1bnBhZDIoZCxuKSB7CisgIHZhciBiID0gZC50b0J5dGVBcnJh
eSgpOworICB2YXIgaSA9IDA7CisgIHdoaWxlKGkgPCBiLmxlbmd0aCAmJiBiW2ldID09IDApICsr
aTsKKyAgaWYoYi5sZW5ndGgtaSAhPSBuLTEgfHwgYltpXSAhPSAyKQorICAgIHJldHVybiBudWxs
OworICArK2k7CisgIHdoaWxlKGJbaV0gIT0gMCkKKyAgICBpZigrK2kgPj0gYi5sZW5ndGgpIHJl
dHVybiBudWxsOworICB2YXIgcmV0ID0gIiI7CisgIHdoaWxlKCsraSA8IGIubGVuZ3RoKQorICAg
IHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJbaV0pOworICByZXR1cm4gcmV0OworfQorCisv
LyBTZXQgdGhlIHByaXZhdGUga2V5IGZpZWxkcyBOLCBlLCBhbmQgZCBmcm9tIGhleCBzdHJpbmdz
CitmdW5jdGlvbiBSU0FTZXRQcml2YXRlKE4sRSxEKSB7CisgIGlmKE4gIT0gbnVsbCAmJiBFICE9
IG51bGwgJiYgTi5sZW5ndGggPiAwICYmIEUubGVuZ3RoID4gMCkgeworICAgIHRoaXMubiA9IHBh
cnNlQmlnSW50KE4sMTYpOworICAgIHRoaXMuZSA9IHBhcnNlSW50KEUsMTYpOworICAgIHRoaXMu
ZCA9IHBhcnNlQmlnSW50KEQsMTYpOworICB9CisgIGVsc2UKKyAgICBhbGVydCgiSW52YWxpZCBS
U0EgcHJpdmF0ZSBrZXkiKTsKK30KKworLy8gU2V0IHRoZSBwcml2YXRlIGtleSBmaWVsZHMgTiwg
ZSwgZCBhbmQgQ1JUIHBhcmFtcyBmcm9tIGhleCBzdHJpbmdzCitmdW5jdGlvbiBSU0FTZXRQcml2
YXRlRXgoTixFLEQsUCxRLERQLERRLEMpIHsKKyAgaWYoTiAhPSBudWxsICYmIEUgIT0gbnVsbCAm
JiBOLmxlbmd0aCA+IDAgJiYgRS5sZW5ndGggPiAwKSB7CisgICAgdGhpcy5uID0gcGFyc2VCaWdJ
bnQoTiwxNik7CisgICAgdGhpcy5lID0gcGFyc2VJbnQoRSwxNik7CisgICAgdGhpcy5kID0gcGFy
c2VCaWdJbnQoRCwxNik7CisgICAgdGhpcy5wID0gcGFyc2VCaWdJbnQoUCwxNik7CisgICAgdGhp
cy5xID0gcGFyc2VCaWdJbnQoUSwxNik7CisgICAgdGhpcy5kbXAxID0gcGFyc2VCaWdJbnQoRFAs
MTYpOworICAgIHRoaXMuZG1xMSA9IHBhcnNlQmlnSW50KERRLDE2KTsKKyAgICB0aGlzLmNvZWZm
ID0gcGFyc2VCaWdJbnQoQywxNik7CisgIH0KKyAgZWxzZQorICAgIGFsZXJ0KCJJbnZhbGlkIFJT
QSBwcml2YXRlIGtleSIpOworfQorCisvLyBHZW5lcmF0ZSBhIG5ldyByYW5kb20gcHJpdmF0ZSBr
ZXkgQiBiaXRzIGxvbmcsIHVzaW5nIHB1YmxpYyBleHB0IEUKK2Z1bmN0aW9uIFJTQUdlbmVyYXRl
KEIsRSkgeworICB2YXIgcm5nID0gbmV3IFNlY3VyZVJhbmRvbSgpOworICB2YXIgcXMgPSBCPj4x
OworICB0aGlzLmUgPSBwYXJzZUludChFLDE2KTsKKyAgdmFyIGVlID0gbmV3IEJpZ0ludGVnZXIo
RSwxNik7CisgIGZvcig7OykgeworICAgIGZvcig7OykgeworICAgICAgdGhpcy5wID0gbmV3IEJp
Z0ludGVnZXIoQi1xcywxLHJuZyk7CisgICAgICBpZih0aGlzLnAuc3VidHJhY3QoQmlnSW50ZWdl
ci5PTkUpLmdjZChlZSkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAwICYmIHRoaXMucC5p
c1Byb2JhYmxlUHJpbWUoMTApKSBicmVhazsKKyAgICB9CisgICAgZm9yKDs7KSB7CisgICAgICB0
aGlzLnEgPSBuZXcgQmlnSW50ZWdlcihxcywxLHJuZyk7CisgICAgICBpZih0aGlzLnEuc3VidHJh
Y3QoQmlnSW50ZWdlci5PTkUpLmdjZChlZSkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAw
ICYmIHRoaXMucS5pc1Byb2JhYmxlUHJpbWUoMTApKSBicmVhazsKKyAgICB9CisgICAgaWYodGhp
cy5wLmNvbXBhcmVUbyh0aGlzLnEpIDw9IDApIHsKKyAgICAgIHZhciB0ID0gdGhpcy5wOworICAg
ICAgdGhpcy5wID0gdGhpcy5xOworICAgICAgdGhpcy5xID0gdDsKKyAgICB9CisgICAgdmFyIHAx
ID0gdGhpcy5wLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKKyAgICB2YXIgcTEgPSB0aGlzLnEu
c3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOworICAgIHZhciBwaGkgPSBwMS5tdWx0aXBseShxMSk7
CisgICAgaWYocGhpLmdjZChlZSkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAwKSB7Cisg
ICAgICB0aGlzLm4gPSB0aGlzLnAubXVsdGlwbHkodGhpcy5xKTsKKyAgICAgIHRoaXMuZCA9IGVl
Lm1vZEludmVyc2UocGhpKTsKKyAgICAgIHRoaXMuZG1wMSA9IHRoaXMuZC5tb2QocDEpOworICAg
ICAgdGhpcy5kbXExID0gdGhpcy5kLm1vZChxMSk7CisgICAgICB0aGlzLmNvZWZmID0gdGhpcy5x
Lm1vZEludmVyc2UodGhpcy5wKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorfQorCisvLyBQ
ZXJmb3JtIHJhdyBwcml2YXRlIG9wZXJhdGlvbiBvbiAieCI6IHJldHVybiB4XmQgKG1vZCBuKQor
ZnVuY3Rpb24gUlNBRG9Qcml2YXRlKHgpIHsKKyAgaWYodGhpcy5wID09IG51bGwgfHwgdGhpcy5x
ID09IG51bGwpCisgICAgcmV0dXJuIHgubW9kUG93KHRoaXMuZCwgdGhpcy5uKTsKKworICAvLyBU
T0RPOiByZS1jYWxjdWxhdGUgYW55IG1pc3NpbmcgQ1JUIHBhcmFtcworICB2YXIgeHAgPSB4Lm1v
ZCh0aGlzLnApLm1vZFBvdyh0aGlzLmRtcDEsIHRoaXMucCk7CisgIHZhciB4cSA9IHgubW9kKHRo
aXMucSkubW9kUG93KHRoaXMuZG1xMSwgdGhpcy5xKTsKKworICB3aGlsZSh4cC5jb21wYXJlVG8o
eHEpIDwgMCkKKyAgICB4cCA9IHhwLmFkZCh0aGlzLnApOworICByZXR1cm4geHAuc3VidHJhY3Qo
eHEpLm11bHRpcGx5KHRoaXMuY29lZmYpLm1vZCh0aGlzLnApLm11bHRpcGx5KHRoaXMucSkuYWRk
KHhxKTsKK30KKworLy8gUmV0dXJuIHRoZSBQS0NTIzEgUlNBIGRlY3J5cHRpb24gb2YgImN0ZXh0
Ii4KKy8vICJjdGV4dCIgaXMgYW4gZXZlbi1sZW5ndGggaGV4IHN0cmluZyBhbmQgdGhlIG91dHB1
dCBpcyBhIHBsYWluIHN0cmluZy4KK2Z1bmN0aW9uIFJTQURlY3J5cHQoY3RleHQpIHsKKyAgdmFy
IGMgPSBwYXJzZUJpZ0ludChjdGV4dCwgMTYpOworICB2YXIgbSA9IHRoaXMuZG9Qcml2YXRlKGMp
OworICBpZihtID09IG51bGwpIHJldHVybiBudWxsOworICByZXR1cm4gcGtjczF1bnBhZDIobSwg
KHRoaXMubi5iaXRMZW5ndGgoKSs3KT4+Myk7Cit9CisKKy8vIFJldHVybiB0aGUgUEtDUyMxIFJT
QSBkZWNyeXB0aW9uIG9mICJjdGV4dCIuCisvLyAiY3RleHQiIGlzIGEgQmFzZTY0LWVuY29kZWQg
c3RyaW5nIGFuZCB0aGUgb3V0cHV0IGlzIGEgcGxhaW4gc3RyaW5nLgorLy9mdW5jdGlvbiBSU0FC
NjREZWNyeXB0KGN0ZXh0KSB7CisvLyAgdmFyIGggPSBiNjR0b2hleChjdGV4dCk7CisvLyAgaWYo
aCkgcmV0dXJuIHRoaXMuZGVjcnlwdChoKTsgZWxzZSByZXR1cm4gbnVsbDsKKy8vfQorCisvLyBw
cm90ZWN0ZWQKK1JTQUtleS5wcm90b3R5cGUuZG9Qcml2YXRlID0gUlNBRG9Qcml2YXRlOworCisv
LyBwdWJsaWMKK1JTQUtleS5wcm90b3R5cGUuc2V0UHJpdmF0ZSA9IFJTQVNldFByaXZhdGU7CitS
U0FLZXkucHJvdG90eXBlLnNldFByaXZhdGVFeCA9IFJTQVNldFByaXZhdGVFeDsKK1JTQUtleS5w
cm90b3R5cGUuZ2VuZXJhdGUgPSBSU0FHZW5lcmF0ZTsKK1JTQUtleS5wcm90b3R5cGUuZGVjcnlw
dCA9IFJTQURlY3J5cHQ7CisvL1JTQUtleS5wcm90b3R5cGUuYjY0X2RlY3J5cHQgPSBSU0FCNjRE
ZWNyeXB0OworCisKK25WYWx1ZT0iYTUyNjE5Mzk5NzU5NDhiYjdhNThkZmZlNWZmNTRlNjVmMDQ5
OGY5MTc1ZjVhMDkyODg4MTBiODk3NTg3MWU5OWFmM2I1ZGQ5NDA1N2IwZmMwNzUzNWY1Zjk3NDQ0
NTA0ZmEzNTE2OWQ0NjFkMGQzMGNmMDE5MmUzMDc3MjdjMDY1MTY4Yzc4ODc3MWM1NjFhOTQwMGZi
NDkxNzVlOWU2YWE0ZTIzZmUxMWFmNjllOTQxMmRkMjNiMGNiNjY4NGM0YzI0MjliY2UxMzllODQ4
YWIyNmQwODI5MDczMzUxZjRhY2QzNjA3NGVhZmQwMzZhNWViODMzNTlkMmE2OThkMyI7CitlVmFs
dWU9IjEwMDAxIjsKK2RWYWx1ZT0iOGU5OTEyZjZkMzY0NTg5NGU4ZDM4Y2I1OGMwZGI4MWZmNTE2
Y2Y0YzdlNWExNGM3ZjFlZGRiMTQ1OWQyY2RlZDRkOGQyOTNmYzk3YWVlNmFlZmI4NjE4NTljOGI2
YTNkMWRmZTcxMDQ2M2UxZjlkZGM3MjA0OGMwOTc1MTk3MWM0YTU4MGFhNTFlYjUyMzM1N2EzY2M0
OGQzMWNmYWQxZDRhMTY1MDY2ZWQ5MmQ0NzQ4ZmI2NTcxMjExZGE1Y2IxNGJjMTFiNmUyZGY3YzFh
NTU5ZTZkNWFjMWNkNWM5NDcwM2EyMjg5MTQ2NGZiYTIzZDBkOTY1MDg2Mjc3YTE2MSI7CitwVmFs
dWU9ImQwOTBjZTU4YTkyYzc1MjMzYTY0ODZjYjBhOTIwOWJmMzU4M2I2NGY1NDBjNzZmNTI5NGJi
OTdkMjg1ZWVkMzNhZWMyMjBiZGUxNGIyNDE3OTUxMTc4YWMxNTJjZWFiNmRhNzA5MDkwNWI0Nzgx
OTU0OThiMzUyMDQ4ZjE1ZTdkIjsKK3FWYWx1ZT0iY2FiNTc1ZGM2NTJiYjY2ZGYxNWEwMzU5NjA5
ZDUxZDFkYjE4NDc1MGMwMGM2Njk4YjkwZWYzNDY1Yzk5NjU1MTAzZWRiZjBkNTRjNTZhZWMwY2Uz
YzRkMjI1OTIzMzgwOTJhMTI2YTBjYzQ5ZjY1YTRhMzBkMjIyYjQxMWU1OGYiOworZG1wMVZhbHVl
PSIxYTI0YmNhOGUyNzNkZjJmMGU0N2MxOTliYmY2Nzg2MDRlN2RmNzIxNTQ4MGM3N2M4ZGIzOWY0
OWIwMDBjZTJjZjc1MDAwMzhhY2ZmZjU0MzNiN2Q1ODJhMDFmMTgyNmU2ZjRkNDJlMWM1N2Y1ZTFm
ZWY3YjEyYWFiYzU5ZmQyNSI7CitkbXExVmFsdWU9IjNkMDY5ODJlZmJiZTQ3MzM5ZTFmNmQzNmIx
MjE2YjhhNzQxZDQxMGIwYzY2MmY1NGY3MTE4YjI3YjlhNGVjOWQ5MTQzMzdlYjM5ODQxZDg2NjZm
MzAzNDQwOGNmOTRmNWI2MmYxMWM0MDJmYzk5NGZlMTVhMDU0OTMxNTBkOWZkIjsKK2NvZWZmVmFs
dWU9IjNhM2U3MzFhY2Q4OTYwYjdmZjllYjgxYTdmZjkzYmQxY2ZhNzRjYmQ1Njk4N2RiNThiNDU5
NGZiMDljMDkwODRkYjE3MzRjODE0M2Y5OGI2MDJiOTgxYWFhOTI0M2NhMjhkZWI2OWI1YjI4MGVl
OGRjZWUwZmQyNjI1ZTUzMjUwIjsKKworc2V0dXBFbmdpbmUoYW0zLCAyOCk7CisKK3ZhciBURVhU
ID0gIlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhlIGV4dHJlbWVseSBsYXp5IGZy
b2chICIgKworICAgICJOb3cgaXMgdGhlIHRpbWUgZm9yIGFsbCBnb29kIG1lbiB0byBjb21lIHRv
IHRoZSBwYXJ0eS4iOwordmFyIGVuY3J5cHRlZDsKKworZnVuY3Rpb24gZW5jcnlwdCgpIHsKKyAg
dmFyIFJTQSA9IG5ldyBSU0FLZXkoKTsKKyAgUlNBLnNldFB1YmxpYyhuVmFsdWUsIGVWYWx1ZSk7
CisgIFJTQS5zZXRQcml2YXRlRXgoblZhbHVlLCBlVmFsdWUsIGRWYWx1ZSwgcFZhbHVlLCBxVmFs
dWUsIGRtcDFWYWx1ZSwgZG1xMVZhbHVlLCBjb2VmZlZhbHVlKTsKKyAgZW5jcnlwdGVkID0gUlNB
LmVuY3J5cHQoVEVYVCk7Cit9CisKK2Z1bmN0aW9uIGRlY3J5cHQoKSB7CisgIHZhciBSU0EgPSBu
ZXcgUlNBS2V5KCk7CisgIFJTQS5zZXRQdWJsaWMoblZhbHVlLCBlVmFsdWUpOworICBSU0Euc2V0
UHJpdmF0ZUV4KG5WYWx1ZSwgZVZhbHVlLCBkVmFsdWUsIHBWYWx1ZSwgcVZhbHVlLCBkbXAxVmFs
dWUsIGRtcTFWYWx1ZSwgY29lZmZWYWx1ZSk7CisgIHZhciBkZWNyeXB0ZWQgPSBSU0EuZGVjcnlw
dChlbmNyeXB0ZWQpOworICBpZiAoZGVjcnlwdGVkICE9IFRFWFQpIHsKKyAgICB0aHJvdyBuZXcg
RXJyb3IoIkNyeXB0byBvcGVyYXRpb24gZmFpbGVkIik7CisgIH0KK30KKworZm9yICh2YXIgaSA9
IDA7IGkgPCA4OyArK2kpIHsKKyAgZW5jcnlwdCgpOworICBkZWNyeXB0KCk7Cit9CkluZGV4OiBT
dW5TcGlkZXIvdGVzdHMvdjgtdjUvdjgtZGVsdGFibHVlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1blNw
aWRlci90ZXN0cy92OC12NS92OC1kZWx0YWJsdWUuanMJKHJldmlzaW9uIDApCisrKyBTdW5TcGlk
ZXIvdGVzdHMvdjgtdjUvdjgtZGVsdGFibHVlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3
NyBAQAorLy8gQ29weXJpZ2h0IDIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAxOTk2IEpvaG4gTWFsb25leSBhbmQgTWFyaW8gV29s
Y3prby4KKworLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLy8g
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorLy8KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisvLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisKKy8v
IFRoaXMgaW1wbGVtZW50YXRpb24gb2YgdGhlIERlbHRhQmx1ZSBiZW5jaG1hcmsgaXMgZGVyaXZl
ZAorLy8gZnJvbSB0aGUgU21hbGx0YWxrIGltcGxlbWVudGF0aW9uIGJ5IEpvaG4gTWFsb25leSBh
bmQgTWFyaW8KKy8vIFdvbGN6a28uIFNvbWUgcGFydHMgaGF2ZSBiZWVuIHRyYW5zbGF0ZWQgZGly
ZWN0bHksIHdoZXJlYXMKKy8vIG90aGVycyBoYXZlIGJlZW4gbW9kaWZpZWQgbW9yZSBhZ2dyZXNp
dmVseSB0byBtYWtlIGl0IGZlZWwKKy8vIG1vcmUgbGlrZSBhIEphdmFTY3JpcHQgcHJvZ3JhbS4K
KworLyoqCisgKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIERlbHRhQmx1ZSBj
b25zdHJhaW4tc29sdmluZworICogYWxnb3JpdGhtLCBhcyBkZXNjcmliZWQgaW46CisgKgorICog
IlRoZSBEZWx0YUJsdWUgQWxnb3JpdGhtOiBBbiBJbmNyZW1lbnRhbCBDb25zdHJhaW50IEhpZXJh
cmNoeSBTb2x2ZXIiCisgKiAgIEJqb3JuIE4uIEZyZWVtYW4tQmVuc29uIGFuZCBKb2huIE1hbG9u
ZXkKKyAqICAgSmFudWFyeSAxOTkwIENvbW11bmljYXRpb25zIG9mIHRoZSBBQ00sCisgKiAgIGFs
c28gYXZhaWxhYmxlIGFzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3RvbiBUUiA4OS0wOC0wNi4KKyAq
CisgKiBCZXdhcmU6IHRoaXMgYmVuY2htYXJrIGlzIHdyaXR0ZW4gaW4gYSBncm90ZXNxdWUgc3R5
bGUgd2hlcmUKKyAqIHRoZSBjb25zdHJhaW50IG1vZGVsIGlzIGJ1aWx0IGJ5IHNpZGUtZWZmZWN0
cyBmcm9tIGNvbnN0cnVjdG9ycy4KKyAqIEkndmUga2VwdCBpdCB0aGlzIHdheSB0byBhdm9pZCBk
ZXZpYXRpbmcgdG9vIG11Y2ggZnJvbSB0aGUgb3JpZ2luYWwKKyAqIGltcGxlbWVudGF0aW9uLgor
ICovCisKKworLyogLS0tIE8gYiBqIGUgYyB0ICAgTSBvIGQgZSBsIC0tLSAqLworCitPYmplY3Qu
cHJvdG90eXBlLmluaGVyaXRzRnJvbSA9IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgZnVuY3Rpb24g
SW5oZXJpdGVyKCkgeyB9CisgIEluaGVyaXRlci5wcm90b3R5cGUgPSBzaHVwZXIucHJvdG90eXBl
OworICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgdGhpcy5zdXBlckNvbnN0
cnVjdG9yID0gc2h1cGVyOworfQorCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigpIHsKKyAg
dGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlw
ZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9CisKK09y
ZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1
cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLnNp
emUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQorCitPcmRl
cmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7CisgIHJl
dHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5y
ZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQgPSAwOwor
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAgIHZhciB2
YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAgICB0aGlz
LmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7CisgICAg
ICBza2lwcGVkKys7CisgICAgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsg
aSsrKQorICAgIHRoaXMuZWxtcy5wb3AoKTsKK30KKworLyogLS0tICoKKyAqIFMgdCByIGUgbiBn
IHQgaAorICogLS0tICovCisKKy8qKgorICogU3RyZW5ndGhzIGFyZSB1c2VkIHRvIG1lYXN1cmUg
dGhlIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgY29uc3RyYWludHMuCisgKiBOZXcgc3RyZW5ndGhz
IG1heSBiZSBpbnNlcnRlZCBpbiB0aGUgc3RyZW5ndGggaGllcmFyY2h5IHdpdGhvdXQKKyAqIGRp
c3J1cHRpbmcgY3VycmVudCBjb25zdHJhaW50cy4gIFN0cmVuZ3RocyBjYW5ub3QgYmUgY3JlYXRl
ZCBvdXRzaWRlCisgKiB0aGlzIGNsYXNzLCBzbyBwb2ludGVyIGNvbXBhcmlzb24gY2FuIGJlIHVz
ZWQgZm9yIHZhbHVlIGNvbXBhcmlzb24uCisgKi8KK2Z1bmN0aW9uIFN0cmVuZ3RoKHN0cmVuZ3Ro
VmFsdWUsIG5hbWUpIHsKKyAgdGhpcy5zdHJlbmd0aFZhbHVlID0gc3RyZW5ndGhWYWx1ZTsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKK30KKworU3RyZW5ndGguc3Ryb25nZXIgPSBmdW5jdGlvbiAoczEs
IHMyKSB7CisgIHJldHVybiBzMS5zdHJlbmd0aFZhbHVlIDwgczIuc3RyZW5ndGhWYWx1ZTsKK30K
KworU3RyZW5ndGgud2Vha2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA+IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlc3RPZiA9
IGZ1bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHRoaXMud2Vha2VyKHMxLCBzMikgPyBzMSA6
IHMyOworfQorCitTdHJlbmd0aC5zdHJvbmdlc3QgPSBmdW5jdGlvbiAoczEsIHMyKSB7CisgIHJl
dHVybiB0aGlzLnN0cm9uZ2VyKHMxLCBzMikgPyBzMSA6IHMyOworfQorCitTdHJlbmd0aC5wcm90
b3R5cGUubmV4dFdlYWtlciA9IGZ1bmN0aW9uICgpIHsKKyAgc3dpdGNoICh0aGlzLnN0cmVuZ3Ro
VmFsdWUpIHsKKyAgICBjYXNlIDA6IHJldHVybiBTdHJlbmd0aC5XRUFLRVNUOworICAgIGNhc2Ug
MTogcmV0dXJuIFN0cmVuZ3RoLldFQUtfREVGQVVMVDsKKyAgICBjYXNlIDI6IHJldHVybiBTdHJl
bmd0aC5OT1JNQUw7CisgICAgY2FzZSAzOiByZXR1cm4gU3RyZW5ndGguU1RST05HX0RFRkFVTFQ7
CisgICAgY2FzZSA0OiByZXR1cm4gU3RyZW5ndGguUFJFRkVSUkVEOworICAgIGNhc2UgNTogcmV0
dXJuIFN0cmVuZ3RoLlJFUVVJUkVEOworICB9Cit9CisKKy8vIFN0cmVuZ3RoIGNvbnN0YW50cy4K
K1N0cmVuZ3RoLlJFUVVJUkVEICAgICAgICA9IG5ldyBTdHJlbmd0aCgwLCAicmVxdWlyZWQiKTsK
K1N0cmVuZ3RoLlNUT05HX1BSRUZFUlJFRCA9IG5ldyBTdHJlbmd0aCgxLCAic3Ryb25nUHJlZmVy
cmVkIik7CitTdHJlbmd0aC5QUkVGRVJSRUQgICAgICAgPSBuZXcgU3RyZW5ndGgoMiwgInByZWZl
cnJlZCIpOworU3RyZW5ndGguU1RST05HX0RFRkFVTFQgID0gbmV3IFN0cmVuZ3RoKDMsICJzdHJv
bmdEZWZhdWx0Iik7CitTdHJlbmd0aC5OT1JNQUwgICAgICAgICAgPSBuZXcgU3RyZW5ndGgoNCwg
Im5vcm1hbCIpOworU3RyZW5ndGguV0VBS19ERUZBVUxUICAgID0gbmV3IFN0cmVuZ3RoKDUsICJ3
ZWFrRGVmYXVsdCIpOworU3RyZW5ndGguV0VBS0VTVCAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDYs
ICJ3ZWFrZXN0Iik7CisKKy8qIC0tLSAqCisgKiBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0g
Ki8KKworLyoqCisgKiBBbiBhYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgYSBzeXN0ZW0tbWFp
bnRhaW5hYmxlIHJlbGF0aW9uc2hpcAorICogKG9yICJjb25zdHJhaW50IikgYmV0d2VlbiBhIHNl
dCBvZiB2YXJpYWJsZXMuIEEgY29uc3RyYWludCBzdXBwbGllcworICogYSBzdHJlbmd0aCBpbnN0
YW5jZSB2YXJpYWJsZTsgY29uY3JldGUgc3ViY2xhc3NlcyBwcm92aWRlIGEgbWVhbnMKKyAqIG9m
IHN0b3JpbmcgdGhlIGNvbnN0cmFpbmVkIHZhcmlhYmxlcyBhbmQgb3RoZXIgaW5mb3JtYXRpb24g
cmVxdWlyZWQKKyAqIHRvIHJlcHJlc2VudCBhIGNvbnN0cmFpbnQuCisgKi8KK2Z1bmN0aW9uIENv
bnN0cmFpbnQoc3RyZW5ndGgpIHsKKyAgdGhpcy5zdHJlbmd0aCA9IHN0cmVuZ3RoOworfQorCisv
KioKKyAqIEFjdGl2YXRlIHRoaXMgY29uc3RyYWludCBhbmQgYXR0ZW1wdCB0byBzYXRpc2Z5IGl0
LgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLmFkZFRvR3JhcGgoKTsKKyAgcGxhbm5lci5pbmNyZW1lbnRhbEFkZCh0aGlzKTsK
K30KKworLyoqCisgKiBBdHRlbXB0IHRvIGZpbmQgYSB3YXkgdG8gZW5mb3JjZSB0aGlzIGNvbnN0
cmFpbnQuIElmIHN1Y2Nlc3NmdWwsCisgKiByZWNvcmQgdGhlIHNvbHV0aW9uLCBwZXJoYXBzIG1v
ZGlmeWluZyB0aGUgY3VycmVudCBkYXRhZmxvdworICogZ3JhcGguIEFuc3dlciB0aGUgY29uc3Ry
YWludCB0aGF0IHRoaXMgY29uc3RyYWludCBvdmVycmlkZXMsIGlmCisgKiB0aGVyZSBpcyBvbmUs
IG9yIG5pbCwgaWYgdGhlcmUgaXNuJ3QuCisgKiBBc3N1bWU6IEkgYW0gbm90IGFscmVhZHkgc2F0
aXNmaWVkLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5zYXRpc2Z5ID0gZnVuY3Rpb24gKG1h
cmspIHsKKyAgdGhpcy5jaG9vc2VNZXRob2QobWFyayk7CisgIGlmICghdGhpcy5pc1NhdGlzZmll
ZCgpKSB7CisgICAgaWYgKHRoaXMuc3RyZW5ndGggPT0gU3RyZW5ndGguUkVRVUlSRUQpCisgICAg
ICBhbGVydCgiQ291bGQgbm90IHNhdGlzZnkgYSByZXF1aXJlZCBjb25zdHJhaW50ISIpOworICAg
IHJldHVybiBudWxsOworICB9CisgIHRoaXMubWFya0lucHV0cyhtYXJrKTsKKyAgdmFyIG91dCA9
IHRoaXMub3V0cHV0KCk7CisgIHZhciBvdmVycmlkZGVuID0gb3V0LmRldGVybWluZWRCeTsKKyAg
aWYgKG92ZXJyaWRkZW4gIT0gbnVsbCkgb3ZlcnJpZGRlbi5tYXJrVW5zYXRpc2ZpZWQoKTsKKyAg
b3V0LmRldGVybWluZWRCeSA9IHRoaXM7CisgIGlmICghcGxhbm5lci5hZGRQcm9wYWdhdGUodGhp
cywgbWFyaykpCisgICAgYWxlcnQoIkN5Y2xlIGVuY291bnRlcmVkIik7CisgIG91dC5tYXJrID0g
bWFyazsKKyAgcmV0dXJuIG92ZXJyaWRkZW47Cit9CisKK0NvbnN0cmFpbnQucHJvdG90eXBlLmRl
c3Ryb3lDb25zdHJhaW50ID0gZnVuY3Rpb24gKCkgeworICBpZiAodGhpcy5pc1NhdGlzZmllZCgp
KSBwbGFubmVyLmluY3JlbWVudGFsUmVtb3ZlKHRoaXMpOworICBlbHNlIHRoaXMucmVtb3ZlRnJv
bUdyYXBoKCk7Cit9CisKKy8qKgorICogTm9ybWFsIGNvbnN0cmFpbnRzIGFyZSBub3QgaW5wdXQg
Y29uc3RyYWludHMuICBBbiBpbnB1dCBjb25zdHJhaW50CisgKiBpcyBvbmUgdGhhdCBkZXBlbmRz
IG9uIGV4dGVybmFsIHN0YXRlLCBzdWNoIGFzIHRoZSBtb3VzZSwgdGhlCisgKiBrZXlib3JkLCBh
IGNsb2NrLCBvciBzb21lIGFyYml0cmF0eSBwaWVjZSBvZiBpbXBlcmF0aXZlIGNvZGUuCisgKi8K
K0NvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBm
YWxzZTsKK30KKworLyogLS0tICoKKyAqIFUgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIEFic3RyYWN0IHN1cGVyY2xhc3MgZm9yIGNvbnN0cmFpbnRz
IGhhdmluZyBhIHNpbmdsZSBwb3NzaWJsZSBvdXRwdXQKKyAqIHZhcmlhYmxlLgorICovCitmdW5j
dGlvbiBVbmFyeUNvbnN0cmFpbnQodiwgc3RyZW5ndGgpIHsKKyAgVW5hcnlDb25zdHJhaW50LnN1
cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCBzdHJlbmd0aCk7CisgIHRoaXMubXlPdXRwdXQgPSB2
OworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsKK30K
KworVW5hcnlDb25zdHJhaW50LmluaGVyaXRzRnJvbShDb25zdHJhaW50KTsKKworLyoqCisgKiBB
ZGRzIHRoaXMgY29uc3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaAorICovCitVbmFyeUNv
bnN0cmFpbnQucHJvdG90eXBlLmFkZFRvR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlP
dXRwdXQuYWRkQ29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30K
KworLyoqCisgKiBEZWNpZGVzIGlmIHRoaXMgY29uc3RyYWludCBjYW4gYmUgc2F0aXNmaWVkIGFu
ZCByZWNvcmRzIHRoYXQKKyAqIGRlY2lzaW9uLgorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90
eXBlLmNob29zZU1ldGhvZCA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuc2F0aXNmaWVkID0g
KHRoaXMubXlPdXRwdXQubWFyayAhPSBtYXJrKQorICAgICYmIFN0cmVuZ3RoLnN0cm9uZ2VyKHRo
aXMuc3RyZW5ndGgsIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoKTsKK30KKworLyoqCisgKiBS
ZXR1cm5zIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pc1NhdGlzZmllZCA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuc2F0aXNmaWVkOworfQorCitVbmFyeUNvbnN0
cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMgPSBmdW5jdGlvbiAobWFyaykgeworICAvLyBoYXMg
bm8gaW5wdXRzCit9CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFi
bGUuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkg
eworICByZXR1cm4gdGhpcy5teU91dHB1dDsKK30KKworLyoqCisgKiBDYWxjdWxhdGUgdGhlIHdh
bGthYm91dCBzdHJlbmd0aCwgdGhlIHN0YXkgZmxhZywgYW5kLCBpZiBpdCBpcworICogJ3N0YXkn
LCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IG91dHB1dCBvZiB0aGlzIGNvbnN0cmFpbnQuIEFz
c3VtZQorICogdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZC4KKyAqLworVW5hcnlDb25zdHJh
aW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5teU91dHB1
dC53YWxrU3RyZW5ndGggPSB0aGlzLnN0cmVuZ3RoOworICB0aGlzLm15T3V0cHV0LnN0YXkgPSAh
dGhpcy5pc0lucHV0KCk7CisgIGlmICh0aGlzLm15T3V0cHV0LnN0YXkpIHRoaXMuZXhlY3V0ZSgp
OyAvLyBTdGF5IG9wdGltaXphdGlvbgorfQorCisvKioKKyAqIFJlY29yZHMgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5t
YXJrVW5zYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7
Cit9CisKK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24gPSBmdW5jdGlvbiAo
KSB7CisgIHJldHVybiB0cnVlOworfQorCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92
ZUZyb21HcmFwaCA9IGZ1bmN0aW9uICgpIHsKKyAgaWYgKHRoaXMubXlPdXRwdXQgIT0gbnVsbCkg
dGhpcy5teU91dHB1dC5yZW1vdmVDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnNhdGlzZmllZCA9
IGZhbHNlOworfQorCisvKiAtLS0gKgorICogUyB0IGEgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIFZhcmlhYmxlcyB0aGF0IHNob3VsZCwgd2l0aCBzb21lIGxl
dmVsIG9mIHByZWZlcmVuY2UsIHN0YXkgdGhlIHNhbWUuCisgKiBQbGFubmVycyBtYXkgZXhwbG9p
dCB0aGUgZmFjdCB0aGF0IGluc3RhbmNlcywgaWYgc2F0aXNmaWVkLCB3aWxsIG5vdAorICogY2hh
bmdlIHRoZWlyIG91dHB1dCBkdXJpbmcgcGxhbiBleGVjdXRpb24uICBUaGlzIGlzIGNhbGxlZCAi
c3RheQorICogb3B0aW1pemF0aW9uIi4KKyAqLworZnVuY3Rpb24gU3RheUNvbnN0cmFpbnQodiwg
c3RyKSB7CisgIFN0YXlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCB2LCBz
dHIpOworfQorCitTdGF5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oVW5hcnlDb25zdHJhaW50KTsK
KworU3RheUNvbnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIC8v
IFN0YXkgY29uc3RyYWludHMgZG8gbm90aGluZworfQorCisvKiAtLS0gKgorICogRSBkIGkgdCAg
IEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIEEgdW5hcnkgaW5wdXQg
Y29uc3RyYWludCB1c2VkIHRvIG1hcmsgYSB2YXJpYWJsZSB0aGF0IHRoZSBjbGllbnQKKyAqIHdp
c2hlcyB0byBjaGFuZ2UuCisgKi8KK2Z1bmN0aW9uIEVkaXRDb25zdHJhaW50KHYsIHN0cikgewor
ICBFZGl0Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30K
KworRWRpdENvbnN0cmFpbnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKKy8qKgor
ICogRWRpdHMgaW5kaWNhdGUgdGhhdCBhIHZhcmlhYmxlIGlzIHRvIGJlIGNoYW5nZWQgYnkgaW1w
ZXJhdGl2ZSBjb2RlLgorICovCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCA9IGZ1
bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRydWU7Cit9CisKK0VkaXRDb25zdHJhaW50LnByb3RvdHlw
ZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBFZGl0IGNvbnN0cmFpbnRzIGRvIG5vdGhp
bmcKK30KKworLyogLS0tICoKKyAqIEIgaSBuIGEgciB5ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAor
ICogLS0tICovCisKK3ZhciBEaXJlY3Rpb24gPSBuZXcgT2JqZWN0KCk7CitEaXJlY3Rpb24uTk9O
RSAgICAgPSAwOworRGlyZWN0aW9uLkZPUldBUkQgID0gMTsKK0RpcmVjdGlvbi5CQUNLV0FSRCA9
IC0xOworCisvKioKKyAqIEFic3RyYWN0IHN1cGVyY2xhc3MgZm9yIGNvbnN0cmFpbnRzIGhhdmlu
ZyB0d28gcG9zc2libGUgb3V0cHV0CisgKiB2YXJpYWJsZXMuCisgKi8KK2Z1bmN0aW9uIEJpbmFy
eUNvbnN0cmFpbnQodmFyMSwgdmFyMiwgc3RyZW5ndGgpIHsKKyAgQmluYXJ5Q29uc3RyYWludC5z
dXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgc3RyZW5ndGgpOworICB0aGlzLnYxID0gdmFyMTsK
KyAgdGhpcy52MiA9IHZhcjI7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cisg
IHRoaXMuYWRkQ29uc3RyYWludCgpOworfQorCitCaW5hcnlDb25zdHJhaW50LmluaGVyaXRzRnJv
bShDb25zdHJhaW50KTsKKworLyoqCisgKiBEZWNpZGVzIGlmIHRoaXMgY29uc3RyYXRpbnQgY2Fu
IGJlIHNhdGlzZmllZCBhbmQgd2hpY2ggd2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0
aGUgcmVsYXRpdmUgc3RyZW5ndGggb2YgdGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJl
Y29yZCB0aGF0IGRlY2lzaW9uLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9v
c2VNZXRob2QgPSBmdW5jdGlvbiAobWFyaykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmsp
IHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9ICh0aGlzLnYxLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0
aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/
IERpcmVjdGlvbi5GT1JXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0
aGlzLnYyLm1hcmsgPT0gbWFyaykgeworICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFy
ayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fs
a1N0cmVuZ3RoKSkKKyAgICAgID8gRGlyZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlv
bi5OT05FOworICB9CisgIGlmIChTdHJlbmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgs
IHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkgeworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGgu
c3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERp
cmVjdGlvbi5CQUNLV0FSRAorICAgICAgOiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAg
ICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMu
djIud2Fsa1N0cmVuZ3RoKQorICAgICAgPyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJl
Y3Rpb24uQkFDS1dBUkQKKyAgfQorfQorCisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRk
VG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLnYyLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0
aW9uLk5PTkU7Cit9CisKKy8qKgorICogQW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlz
IHNhdGlzZmllZCBpbiB0aGUgY3VycmVudCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRp
cmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9ORTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2
YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBtYXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3Rv
dHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsg
PSBtYXJrOworfQorCisvKioKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUK
KyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7Cisg
IHJldHVybiAodGhpcy5kaXJlY3Rpb24gPT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6
IHRoaXMudjI7Cit9CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFi
bGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkg
eworICByZXR1cm4gKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMu
djIgOiB0aGlzLnYxOworfQorCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVu
Z3RoLCB0aGUgc3RheSBmbGFnLCBhbmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBm
b3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9mIHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlz
IGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVkLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwg
b3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAgb3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtl
c3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4ud2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4u
c3RheTsKKyAgaWYgKG91dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNv
cmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNvbnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0Jp
bmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUuaW5wdXRzS25vd24gPSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRo
aXMuaW5wdXQoKTsKKyAgcmV0dXJuIGkubWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVy
bWluZWRCeSA9PSBudWxsOworfQorCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVG
cm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEu
cmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5y
ZW1vdmVDb25zdHJhaW50KHRoaXMpOworICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05F
OworfQorCisvKiAtLS0gKgorICogUyBjIGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICog
LS0tICovCisKKy8qKgorICogUmVsYXRlcyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2Nh
bGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRo
ZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5nZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25z
aGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9yIGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJl
YWQtb25seS4KKyAqLworZnVuY3Rpb24gU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNl
dCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsK
KyAgdGhpcy5zY2FsZSA9IHNjYWxlOworICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVD
b25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3Ro
KTsKK30KKworU2NhbGVDb25zdHJhaW50LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsK
KworLyoqCisgKiBBZGRzIHRoaXMgY29uc3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4K
KyAqLworU2NhbGVDb25zdHJhaW50LnByb3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkg
eworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFw
aC5jYWxsKHRoaXMpOworICB0aGlzLnNjYWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMu
b2Zmc2V0LmFkZENvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5
cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlm
ICh0aGlzLnNjYWxlICE9IG51bGwpIHRoaXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQo
dGhpcyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0
aW9uIChtYXJrKSB7CisgIFNjYWxlQ29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlw
ZS5tYXJrSW5wdXRzLmNhbGwodGhpcywgbWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMu
b2Zmc2V0Lm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50
LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRpc2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90
b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERp
cmVjdGlvbi5GT1JXQVJEKSB7CisgICAgdGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0
aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5vZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhp
cy52MS52YWx1ZSA9ICh0aGlzLnYyLnZhbHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5z
Y2FsZS52YWx1ZTsKKyAgfQorfQorCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0
cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1
ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0
aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90
eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rpb24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgp
LCBvdXQgPSB0aGlzLm91dHB1dCgpOworICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vh
a2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlobi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlo
bi5zdGF5ICYmIHRoaXMuc2NhbGUuc3RheSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0
LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOworfQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAg
eSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMg
dHdvIHZhcmlhYmxlcyB0byBoYXZlIHRoZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVh
bGl0eUNvbnN0cmFpbnQodmFyMSwgdmFyMiwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJh
aW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9
CisKK0VxdWFsaXR5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisK
Ky8qKgorICogRW5mb3JjZSB0aGlzIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlz
ZmllZC4KKyAqLworRXF1YWxpdHlDb25zdHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLm91dHB1dCgpLnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQor
CisvKiAtLS0gKgorICogViBhIHIgaSBhIGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNv
bnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBhZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWlu
IHRoZQorICogc3RydWN0dXJlIG9mIHRoZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBk
YXRhZmxvdyBncmFwaCwgYW5kCisgKiB2YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8g
dGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRhbAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitm
dW5jdGlvbiBWYXJpYWJsZShuYW1lLCBpbml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGlu
aXRpYWxWYWx1ZSB8fCAwOworICB0aGlzLmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0
aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAg
dGhpcy53YWxrU3RyZW5ndGggPSBTdHJlbmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVl
OworICB0aGlzLm5hbWUgPSBuYW1lOworfQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3Ry
YWludCB0byB0aGUgc2V0IG9mIGFsbCBjb25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZh
cmlhYmxlLgorICovCitWYXJpYWJsZS5wcm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9u
IChjKSB7CisgIHRoaXMuY29uc3RyYWludHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMg
YWxsIHRyYWNlcyBvZiBjIGZyb20gdGhpcyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90
eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBmdW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRz
LnJlbW92ZShjKTsKKyAgaWYgKHRoaXMuZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLwor
CisvKioKKyAqIFRoZSBEZWx0YUJsdWUgcGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkg
eworICB0aGlzLmN1cnJlbnRNYXJrID0gMDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlz
ZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQgYW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50
YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisg
KiB0aGUgY29uc3RyYWludCBpcyBzdWNjZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIg
Y29uc3RyYWludAorICogb24gaXRzIG91dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byBy
ZXNhdGlzZnkgdGhhdAorICogY29uc3RyYWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhp
cyBwcm9jZXNzIGlzIHJlcGVhdGVkCisgKiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZh
cmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25z
dHJhaW50IG9yIGIpIGl0IHJlYWNoZXMgYSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFr
IHRvIGJlIHNhdGlzZmllZCB1c2luZyBhbnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFi
bGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdp
dGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFsdWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJl
ZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUgYWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBh
biBpbmZpbml0ZSBsb29wIGV2ZW4gaWYgdGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBp
bmFkdmVydGVudCBjeWNsZS4KKyAqLworUGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQg
PSBmdW5jdGlvbiAoYykgeworICB2YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3Zl
cnJpZGRlbiA9IGMuc2F0aXNmeShtYXJrKTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkK
KyAgICBvdmVycmlkZGVuID0gb3ZlcnJpZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAq
IEVudHJ5IHBvaW50IGZvciByZXRyYWN0aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZl
bgorICogY29uc3RyYWludCBhbmQgaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdy
YXBoLgorICogRGV0YWlsczogUmV0cmFjdGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxs
b3cgc29tZSBjdXJyZW50bHkKKyAqIHVuc2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50
IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhlcmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNh
dGlzZmllZCBkb3duc3RyZWFtIGNvbnN0cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5
IGVhY2ggb25lIGluIHR1cm4uIFRoaXMgbGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAor
ICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBmaXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5n
CisgKiB1bm5lY2Vzc2FyaWx5IGFkZGluZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3Ry
YWludHMuCisgKiBBc3N1bWU6IGMgaXMgc2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlw
ZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1
dCgpOworICBjLm1hcmtVbnNhdGlzZmllZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2
YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJlbW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0
cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlSRUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHVuc2F0aXNmaWVkLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVk
LmF0KGkpOworICAgICAgaWYgKHUuc3RyZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMu
aW5jcmVtZW50YWxBZGQodSk7CisgICAgfQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdl
YWtlcigpOworICB9IHdoaWxlIChzdHJlbmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKwor
LyoqCisgKiBTZWxlY3QgYSBwcmV2aW91c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFu
bmVyLnByb3RvdHlwZS5uZXdNYXJrID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1
cnJlbnRNYXJrOworfQorCisvKioKKyAqIEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlv
biBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5
IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFpbnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0
IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRlc2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICog
b25seSBjb25zdHJhaW50cyB3aG9zZSBvdXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29u
c3RyYWludHMKKyAqIHRoYXQgZG8gbm8gY29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRp
dCBjb25zdHJhaW50cywgYXJlCisgKiBub3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRh
aWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNvbnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFk
ZGVkCisgKiB0byB0aGUgcGxhbiB1bmRlciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkg
YmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBwbGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMg
YXJlIGtub3duLiBBIHZhcmlhYmxlIGlzCisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlh
YmxlIGlzIG1hcmtlZCAoaW5kaWNhdGluZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBh
IGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVhcmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZh
cmlhYmxlIGlzICdzdGF5JyAoaS5lLiBpdCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9u
CisgKiB0aW1lKSwgb3IgYykgdGhlIHZhcmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQor
ICogY29uc3RyYWludC4gVGhlIGxhc3QgcHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBo
aXN0b3J5CisgKiB2YXJpYWJsZXMsIHdoaWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFs
c28gbm90IGNvbXB1dGVkIGJ5CisgKiBhbnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNl
cyBhcmUgYWxsIHNhdGlzZmllZC4KKyAqLworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBm
dW5jdGlvbiAoc291cmNlcykgeworICB2YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIg
cGxhbiA9IG5ldyBQbGFuKCk7CisgIHZhciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8u
c2l6ZSgpID4gMCkgeworICAgIHZhciBjID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChj
Lm91dHB1dCgpLm1hcmsgIT0gbWFyayAmJiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBw
bGFuLmFkZENvbnN0cmFpbnQoYyk7CisgICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAg
ICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAg
IH0KKyAgfQorICByZXR1cm4gcGxhbjsKK30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3Ig
cmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZyb20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNv
bnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFu
bmVyLnByb3RvdHlwZS5leHRyYWN0UGxhbkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25z
dHJhaW50cykgeworICB2YXIgc291cmNlcyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBm
b3IgKHZhciBpID0gMDsgaSA8IGNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMg
PSBjb25zdHJhaW50cy5hdChpKTsKKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmll
ZCgpKQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1
c2lvbgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4o
c291cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhz
IGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdp
dmVuIGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxs
IHZhcmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0
ZWN0ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4g
T3RoZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQg
d2hlbiBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0
aGUgZ2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1h
cmtlZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZl
biBtYXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisg
KiB0aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0
aGUKKyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1Bs
YW5uZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZh
ciB0b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGls
ZSAodG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7Cisg
ICAgaWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFs
UmVtb3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRl
KCk7CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8p
OworICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJv
dXQgc3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJl
YW0gb2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVu
c2F0aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVu
Z3RoLgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rp
b24gKG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0
aCA9IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNm
aWVkID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDAp
IHsKKyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJh
aW50cy5hdChpKTsKKyAgICAgIGlmICghYy5pc1NhdGlzZmllZCgpKQorICAgICAgICB1bnNhdGlz
ZmllZC5hZGQoYyk7CisgICAgfQorICAgIHZhciBkZXRlcm1pbmluZyA9IHYuZGV0ZXJtaW5lZEJ5
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5jb25zdHJhaW50cy5zaXplKCk7IGkrKykgewor
ICAgICAgdmFyIG5leHQgPSB2LmNvbnN0cmFpbnRzLmF0KGkpOworICAgICAgaWYgKG5leHQgIT0g
ZGV0ZXJtaW5pbmcgJiYgbmV4dC5pc1NhdGlzZmllZCgpKSB7CisgICAgICAgIG5leHQucmVjYWxj
dWxhdGUoKTsKKyAgICAgICAgdG9kby5hZGQobmV4dC5vdXRwdXQoKSk7CisgICAgICB9CisgICAg
fQorICB9CisgIHJldHVybiB1bnNhdGlzZmllZDsKK30KKworUGxhbm5lci5wcm90b3R5cGUuYWRk
Q29uc3RyYWludHNDb25zdW1pbmdUbyA9IGZ1bmN0aW9uICh2LCBjb2xsKSB7CisgIHZhciBkZXRl
cm1pbmluZyA9IHYuZGV0ZXJtaW5lZEJ5OworICB2YXIgY2MgPSB2LmNvbnN0cmFpbnRzOworICBm
b3IgKHZhciBpID0gMDsgaSA8IGNjLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSBjYy5hdChp
KTsKKyAgICBpZiAoYyAhPSBkZXRlcm1pbmluZyAmJiBjLmlzU2F0aXNmaWVkKCkpCisgICAgICBj
b2xsLmFkZChjKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogUCBsIGEgbgorICogLS0tICovCisK
Ky8qKgorICogQSBQbGFuIGlzIGFuIG9yZGVyZWQgbGlzdCBvZiBjb25zdHJhaW50cyB0byBiZSBl
eGVjdXRlZCBpbiBzZXF1ZW5jZQorICogdG8gcmVzYXRpc2Z5IGFsbCBjdXJyZW50bHkgc2F0aXNm
aWFibGUgY29uc3RyYWludHMgaW4gdGhlIGZhY2Ugb2YKKyAqIG9uZSBvciBtb3JlIGNoYW5naW5n
IGlucHV0cy4KKyAqLworZnVuY3Rpb24gUGxhbigpIHsKKyAgdGhpcy52ID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7Cit9CisKK1BsYW4ucHJvdG90eXBlLmFkZENvbnN0cmFpbnQgPSBmdW5jdGlv
biAoYykgeworICB0aGlzLnYuYWRkKGMpOworfQorCitQbGFuLnByb3RvdHlwZS5zaXplID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gdGhpcy52LnNpemUoKTsKK30KKworUGxhbi5wcm90b3R5cGUu
Y29uc3RyYWludEF0ID0gZnVuY3Rpb24gKGluZGV4KSB7CisgIHJldHVybiB0aGlzLnYuYXQoaW5k
ZXgpOworfQorCitQbGFuLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuc2l6ZSgpOyBpKyspIHsKKyAgICB2YXIgYyA9IHRoaXMuY29u
c3RyYWludEF0KGkpOworICAgIGMuZXhlY3V0ZSgpOworICB9Cit9CisKKy8qIC0tLSAqCisgKiBN
IGEgaSBuCisgKiAtLS0gKi8KKworLyoqCisgKiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBEZWx0YUJs
dWUgYmVuY2htYXJrLiBBIGxvbmcgY2hhaW4gb2YgZXF1YWxpdHkKKyAqIGNvbnN0cmFpbnRzIGlz
IGNvbnN0cnVjdGVkIHdpdGggYSBzdGF5IGNvbnN0cmFpbnQgb24gb25lIGVuZC4gQW4KKyAqIGVk
aXQgY29uc3RyYWludCBpcyB0aGVuIGFkZGVkIHRvIHRoZSBvcHBvc2l0ZSBlbmQgYW5kIHRoZSB0
aW1lIGlzCisgKiBtZWFzdXJlZCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB0aGlzIGNvbnN0cmFp
bnQsIGFuZCBleHRyYWN0aW5nCisgKiBhbmQgZXhlY3V0aW5nIGEgY29uc3RyYWludCBzYXRpc2Zh
Y3Rpb24gcGxhbi4gVGhlcmUgYXJlIHR3byBjYXNlcy4KKyAqIEluIGNhc2UgMSwgdGhlIGFkZGVk
IGNvbnN0cmFpbnQgaXMgc3Ryb25nZXIgdGhhbiB0aGUgc3RheQorICogY29uc3RyYWludCBhbmQg
dmFsdWVzIG11c3QgcHJvcGFnYXRlIGRvd24gdGhlIGVudGlyZSBsZW5ndGggb2YgdGhlCisgKiBj
aGFpbi4gSW4gY2FzZSAyLCB0aGUgYWRkZWQgY29uc3RyYWludCBpcyB3ZWFrZXIgdGhhbiB0aGUg
c3RheQorICogY29uc3RyYWludCBzbyBpdCBjYW5ub3QgYmUgYWNjb21vZGF0ZWQuIFRoZSBjb3N0
IGluIHRoaXMgY2FzZSBpcywKKyAqIG9mIGNvdXJzZSwgdmVyeSBsb3cuIFR5cGljYWwgc2l0dWF0
aW9ucyBsaWUgc29tZXdoZXJlIGJldHdlZW4gdGhlc2UKKyAqIHR3byBleHRyZW1lcy4KKyAqLwor
ZnVuY3Rpb24gY2hhaW5UZXN0KG4pIHsKKyAgcGxhbm5lciA9IG5ldyBQbGFubmVyKCk7CisgIHZh
ciBwcmV2ID0gbnVsbCwgZmlyc3QgPSBudWxsLCBsYXN0ID0gbnVsbDsKKworICAvLyBCdWlsZCBj
aGFpbiBvZiBuIGVxdWFsaXR5IGNvbnN0cmFpbnRzCisgIGZvciAodmFyIGkgPSAwOyBpIDw9IG47
IGkrKykgeworICAgIHZhciBuYW1lID0gInYiICsgaTsKKyAgICB2YXIgdiA9IG5ldyBWYXJpYWJs
ZShuYW1lKTsKKyAgICBpZiAocHJldiAhPSBudWxsKQorICAgICAgbmV3IEVxdWFsaXR5Q29uc3Ry
YWludChwcmV2LCB2LCBTdHJlbmd0aC5SRVFVSVJFRCk7CisgICAgaWYgKGkgPT0gMCkgZmlyc3Qg
PSB2OworICAgIGlmIChpID09IG4pIGxhc3QgPSB2OworICAgIHByZXYgPSB2OworICB9CisKKyAg
bmV3IFN0YXlDb25zdHJhaW50KGxhc3QsIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUKTsKKyAgdmFy
IGVkaXQgPSBuZXcgRWRpdENvbnN0cmFpbnQoZmlyc3QsIFN0cmVuZ3RoLlBSRUZFUlJFRCk7Cisg
IHZhciBlZGl0cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBlZGl0cy5hZGQoZWRpdCk7
CisgIHZhciBwbGFuID0gcGxhbm5lci5leHRyYWN0UGxhbkZyb21Db25zdHJhaW50cyhlZGl0cyk7
CisgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICBmaXJzdC52YWx1ZSA9IGk7
CisgICAgcGxhbi5leGVjdXRlKCk7CisgICAgaWYgKGxhc3QudmFsdWUgIT0gaSkKKyAgICAgIGFs
ZXJ0KCJDaGFpbiB0ZXN0IGZhaWxlZC4iKTsKKyAgfQorfQorCisvKioKKyAqIFRoaXMgdGVzdCBj
b25zdHJ1Y3RzIGEgdHdvIHNldHMgb2YgdmFyaWFibGVzIHJlbGF0ZWQgdG8gZWFjaAorICogb3Ro
ZXIgYnkgYSBzaW1wbGUgbGluZWFyIHRyYW5zZm9ybWF0aW9uIChzY2FsZSBhbmQgb2Zmc2V0KS4g
VGhlCisgKiB0aW1lIGlzIG1lYXN1cmVkIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9uIGVpdGhlciBz
aWRlIG9mIHRoZQorICogbWFwcGluZyBhbmQgdG8gY2hhbmdlIHRoZSBzY2FsZSBhbmQgb2Zmc2V0
IGZhY3RvcnMuCisgKi8KK2Z1bmN0aW9uIHByb2plY3Rpb25UZXN0KG4pIHsKKyAgcGxhbm5lciA9
IG5ldyBQbGFubmVyKCk7CisgIHZhciBzY2FsZSA9IG5ldyBWYXJpYWJsZSgic2NhbGUiLCAxMCk7
CisgIHZhciBvZmZzZXQgPSBuZXcgVmFyaWFibGUoIm9mZnNldCIsIDEwMDApOworICB2YXIgc3Jj
ID0gbnVsbCwgZHN0ID0gbnVsbDsKKworICB2YXIgZGVzdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICBzcmMgPSBuZXcgVmFy
aWFibGUoInNyYyIgKyBpLCBpKTsKKyAgICBkc3QgPSBuZXcgVmFyaWFibGUoImRzdCIgKyBpLCBp
KTsKKyAgICBkZXN0cy5hZGQoZHN0KTsKKyAgICBuZXcgU3RheUNvbnN0cmFpbnQoc3JjLCBTdHJl
bmd0aC5OT1JNQUwpOworICAgIG5ldyBTY2FsZUNvbnN0cmFpbnQoc3JjLCBzY2FsZSwgb2Zmc2V0
LCBkc3QsIFN0cmVuZ3RoLlJFUVVJUkVEKTsKKyAgfQorCisgIGNoYW5nZShzcmMsIDE3KTsKKyAg
aWYgKGRzdC52YWx1ZSAhPSAxMTcwKSBhbGVydCgiUHJvamVjdGlvbiAxIGZhaWxlZCIpOworICBj
aGFuZ2UoZHN0LCAxMDUwKTsKKyAgaWYgKHNyYy52YWx1ZSAhPSA1KSBhbGVydCgiUHJvamVjdGlv
biAyIGZhaWxlZCIpOworICBjaGFuZ2Uoc2NhbGUsIDUpOworICBmb3IgKHZhciBpID0gMDsgaSA8
IG4gLSAxOyBpKyspIHsKKyAgICBpZiAoZGVzdHMuYXQoaSkudmFsdWUgIT0gaSAqIDUgKyAxMDAw
KQorICAgICAgYWxlcnQoIlByb2plY3Rpb24gMyBmYWlsZWQiKTsKKyAgfQorICBjaGFuZ2Uob2Zm
c2V0LCAyMDAwKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CisgICAgaWYg
KGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMjAwMCkKKyAgICAgIGFsZXJ0KCJQcm9qZWN0
aW9uIDQgZmFpbGVkIik7CisgIH0KK30KKworZnVuY3Rpb24gY2hhbmdlKHYsIG5ld1ZhbHVlKSB7
CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KHYsIFN0cmVuZ3RoLlBSRUZFUlJFRCk7
CisgIHZhciBlZGl0cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBlZGl0cy5hZGQoZWRp
dCk7CisgIHZhciBwbGFuID0gcGxhbm5lci5leHRyYWN0UGxhbkZyb21Db25zdHJhaW50cyhlZGl0
cyk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIHYudmFsdWUgPSBuZXdW
YWx1ZTsKKyAgICBwbGFuLmV4ZWN1dGUoKTsKKyAgfQorICBlZGl0LmRlc3Ryb3lDb25zdHJhaW50
KCk7Cit9CisKKy8vIEdsb2JhbCB2YXJpYWJsZSBob2xkaW5nIHRoZSBjdXJyZW50IHBsYW5uZXIu
Cit2YXIgcGxhbm5lciA9IG51bGw7CisKK2Z1bmN0aW9uIGRlbHRhQmx1ZSgpIHsKKyAgY2hhaW5U
ZXN0KDEwMCk7CisgIHByb2plY3Rpb25UZXN0KDEwMCk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTU1OyArK2kpCisgICAgZGVsdGFCbHVlKCk7CkluZGV4OiBTdW5TcGlkZXIvdGVzdHMvdjgt
djUvdjgtZWFybGV5LWJveWVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1blNwaWRlci90ZXN0cy92OC12
NS92OC1lYXJsZXktYm95ZXIuanMJKHJldmlzaW9uIDApCisrKyBTdW5TcGlkZXIvdGVzdHMvdjgt
djUvdjgtZWFybGV5LWJveWVyLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2ODMgQEAKKy8v
IFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBzY2hlbWUyanMsIGV4Y2Vw
dCBmb3IgdGhlCisvLyBiZW5jaG1hcmsgaGFybmVzcyBjb2RlIGF0IHRoZSBiZWdpbm5pbmcgYW5k
IGVuZCBvZiB0aGUgZmlsZS4KKworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJTEUgLSBETyBO
T1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJTEUgLSBE
TyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJTEUg
LSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJ
TEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVE
IEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VO
RVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiog
R0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoKKyAqIFRvIHVz
ZSB3cml0ZS9wcmludHMvLi4uIHRoZSBkZWZhdWx0LW91dHB1dCBwb3J0IGhhcyB0byBiZSBzZXQg
Zmlyc3QuCisgKiBTaW1wbHkgc2V0dGluZyBTQ19ERUZBVUxUX09VVCBhbmQgU0NfRVJST1JfT1VU
IHRvIHRoZSBkZXNpcmVkIHZhbHVlcworICogc2hvdWxkIGRvIHRoZSB0cmljay4KKyAqIEluIHRo
ZSBmb2xsb3dpbmcgZXhhbXBsZSB0aGUgc3RkLW91dCBhbmQgZXJyb3ItcG9ydCBhcmUgcmVkaXJl
Y3RlZCB0bworICogYSBESVYuCitmdW5jdGlvbiBpbml0UnVudGltZSgpIHsKKyAgICBmdW5jdGlv
biBlc2NhcGVIVE1MKHMpIHsKKwl2YXIgdG1wID0gczsKKwl0bXAgPSB0bXAucmVwbGFjZSgvJi9n
LCAiJmFtcDsiKTsKKwl0bXAgPSB0bXAucmVwbGFjZSgvPC9nLCAiJmx0OyIpOworCXRtcCA9IHRt
cC5yZXBsYWNlKC8+L2csICImZ3Q7Iik7CisJdG1wID0gdG1wLnJlcGxhY2UoLyAvZywgIiZuYnNw
OyIpOworCXRtcCA9IHRtcC5yZXBsYWNlKC9cbi9nLCAiPGJyIC8+Iik7CisJdG1wID0gdG1wLnJl
cGxhY2UoL1x0L2csICImbmJzcDsmbmJzcDsmbmJzcDsmbmJzcCIpOworCXJldHVybiB0bXA7CisJ
CisgICAgfQorCisgICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9J3N0ZG91dCc+PC9kaXY+Iik7
CisgICAgU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfR2VuZXJpY091dHB1dFBvcnQoCisJZnVuY3Rp
b24ocykgeworCSAgICB2YXIgc3Rkb3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZG91
dCcpOworCSAgICBzdGRvdXQuaW5uZXJIVE1MID0gc3Rkb3V0LmlubmVySFRNTCArIGVzY2FwZUhU
TUwocyk7CisJfSk7CisgICAgU0NfRVJST1JfT1VUID0gU0NfREVGQVVMVF9PVVQ7Cit9CisqLwor
CisKK2Z1bmN0aW9uIHNjX3ByaW50X2RlYnVnKCkgeworICAgIHNjX3ByaW50LmFwcGx5KG51bGws
IGFyZ3VtZW50cyk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgKmpzKikpICovCit2YXIgc2NfSlNf
R0xPQkFMUyA9IHRoaXM7CisKK3ZhciBfX3NjX0xJTkU9LTE7Cit2YXIgX19zY19GSUxFPSIiOwor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYWxlcnQoKSB7CisgICB2
YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgIHZhciBzID0gIiI7CisgICB2YXIgaTsKKwor
ICAgZm9yKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgIHMgKz0gc2NfdG9EaXNwbGF5
U3RyaW5nKGFyZ3VtZW50c1sgaSBdKTsKKyAgIH0KKworICAgcmV0dXJuIGFsZXJ0KCBzICk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY190eXBlb2YoIHggKSB7
CisgICByZXR1cm4gdHlwZW9mIHg7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19lcnJvcigpIHsKKyAgICB2YXIgYSA9IFtzY19qc3N0cmluZzJzeW1ib2woIipl
cnJvcioiKV07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysp
IHsKKwlhW2krMV0gPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHRocm93IGE7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVmaXggInRocm93
ICIpKSkKKyovCitmdW5jdGlvbiBzY19yYWlzZShvYmopIHsKKyAgICB0aHJvdyBvYmo7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCB3aXRoLWhhbmRsZXItbGFtYmRhKSkgKi8KK2Z1bmN0aW9uIHNj
X3dpdGhIYW5kbGVyTGFtYmRhKGhhbmRsZXIsIGJvZHkpIHsKKyAgICB0cnkgeworCXJldHVybiBi
b2R5KCk7CisgICAgfSBjYXRjaChlKSB7CisJaWYgKCFlLl9pbnRlcm5hbEV4Y2VwdGlvbikKKwkg
ICAgcmV0dXJuIGhhbmRsZXIoZSk7CisJZWxzZQorCSAgICB0aHJvdyBlOworICAgIH0KK30KKwor
dmFyIHNjX3Byb3BlcnRpZXMgPSBuZXcgT2JqZWN0KCk7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19wdXRwcm9wQmFuZyhzeW0sIGtleSwgdmFsKSB7CisgICAgdmFy
IGh0ID0gc2NfcHJvcGVydGllc1tzeW1dOworICAgIGlmICghaHQpIHsKKwlodCA9IG5ldyBPYmpl
Y3QoKTsKKwlzY19wcm9wZXJ0aWVzW3N5bV0gPSBodDsKKyAgICB9CisgICAgaHRba2V5XSA9IHZh
bDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2dldHByb3Ao
c3ltLCBrZXkpIHsKKyAgICB2YXIgaHQgPSBzY19wcm9wZXJ0aWVzW3N5bV07CisgICAgaWYgKGh0
KSB7CisJaWYgKGtleSBpbiBodCkKKwkgICAgcmV0dXJuIGh0W2tleV07CisJZWxzZQorCSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlCisJcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVtcHJvcEJhbmcoc3ltLCBrZXkpIHsKKyAg
ICB2YXIgaHQgPSBzY19wcm9wZXJ0aWVzW3N5bV07CisgICAgaWYgKGh0KQorCWRlbGV0ZSBodFtr
ZXldOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYW55MlN0
cmluZyhvKSB7CisgICAgcmV0dXJuIGpzc3RyaW5nMnN0cmluZyhzY190b0Rpc3BsYXlTdHJpbmco
bykpOworfSAgICAKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGluZml4IDIgMiAiPT09IikpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0
aW9uIHNjX2lzRXF2KG8xLCBvMikgeworICAgIHJldHVybiAobzEgPT09IG8yKTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPT09
IikpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzRXEobzEsIG8y
KSB7CisgICAgcmV0dXJuIChvMSA9PT0gbzIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzTnVtYmVyKG4pIHsK
KyAgICByZXR1cm4gKHR5cGVvZiBuID09PSAibnVtYmVyIik7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNDb21w
bGV4KG4pIHsKKyAgICByZXR1cm4gc2NfaXNOdW1iZXIobik7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNSZWFs
KG4pIHsKKyAgICByZXR1cm4gc2NfaXNOdW1iZXIobik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNSYXRpb25h
bChuKSB7CisgICAgcmV0dXJuIHNjX2lzUmVhbChuKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0ludGVnZXIo
bikgeworICAgIHJldHVybiAocGFyc2VJbnQobikgPT09IG4pOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiLCBmYWxzZSIpKSkKKyovCisvLyB3ZSBkb24ndCBoYXZlIGV4YWN0IG51bWJlcnMu
Li4KK2Z1bmN0aW9uIHNjX2lzRXhhY3QobikgeworICAgIHJldHVybiBmYWxzZTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIiwgdHJ1
ZSIpKQorCSAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzSW5leGFjdChuKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCA9ID1meCA9ZmwpCisgICAg
ICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICI9PT0i
KSkpCisqLworZnVuY3Rpb24gc2NfZXF1YWwoeCkgeworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
YXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWlmICh4ICE9PSBhcmd1bWVudHNbaV0pCisJICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IDwg
PGZ4IDxmbCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChp
bmZpeCAyIDIgIjwiKSkpCisqLworZnVuY3Rpb24gc2NfbGVzcyh4KSB7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA+PSBhcmd1bWVudHNb
aV0pCisJICAgIHJldHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ID4gPmZ4ID5mbCkKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj4iKSkpCisq
LworZnVuY3Rpb24gc2NfZ3JlYXRlcih4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA8PSBhcmd1bWVudHNbaV0pCisJICAgIHJl
dHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IDw9IDw9ZnggPD1mbCkKKyAgICAgICAgICAgKHR5cGUg
Ym9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIjw9IikpKQorKi8KK2Z1bmN0
aW9uIHNjX2xlc3NFcXVhbCh4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA+IGFyZ3VtZW50c1tpXSkKKwkgICAgcmV0dXJuIGZh
bHNlOworCXggPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgPj0gPj1mbCA+PWZ4KQorICAgICAgICAgICAodHlwZSBib29sKQor
ICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj0iKSkpCisqLworZnVuY3Rpb24gc2Nf
Z3JlYXRlckVxdWFsKHgsIHkpIHsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7IGkrKykgeworCWlmICh4IDwgYXJndW1lbnRzW2ldKQorCSAgICByZXR1cm4gZmFsc2U7
CisJeCA9IGFyZ3VtZW50c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChwb3N0Zml4ICI9PT0gMCIpKSkKKyovCitmdW5jdGlvbiBzY19pc1plcm8oeCkgewor
ICAgIHJldHVybiAoeCA9PT0gMCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICI+IDAiKSkp
CisqLworZnVuY3Rpb24gc2NfaXNQb3NpdGl2ZSh4KSB7CisgICAgcmV0dXJuICh4ID4gMCk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICI8IDAiKSkpCisqLworZnVuY3Rpb24gc2NfaXNOZWdh
dGl2ZSh4KSB7CisgICAgcmV0dXJuICh4IDwgMCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4
ICIlMj09PTEiKSkpCisqLworZnVuY3Rpb24gc2NfaXNPZGQoeCkgeworICAgIHJldHVybiAoeCAl
IDIgPT09IDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBl
IGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiJTI9PT0wIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2lzRXZlbih4KSB7CisgICAgcmV0dXJuICh4ICUgMiA9PT0gMCk7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWF4ID0gTWF0aC5tYXg7CisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX21pbiA9IE1hdGgubWluOworCisvKioqIE1FVEEg
KChleHBvcnQgKyArZnggK2ZsKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDAgI2YgIisi
ICIwIikpKQorKi8KK2Z1bmN0aW9uIHNjX3BsdXMoKSB7CisgICAgdmFyIHN1bSA9IDA7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJc3VtICs9IGFyZ3Vt
ZW50c1tpXTsKKyAgICByZXR1cm4gc3VtOworfQorCisvKioqIE1FVEEgKChleHBvcnQgKiAqZngg
KmZsKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDAgI2YgIioiICIxIikpKQorKi8KK2Z1
bmN0aW9uIHNjX211bHRpKCkgeworICAgIHZhciBwcm9kdWN0ID0gMTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlwcm9kdWN0ICo9IGFyZ3VtZW50c1tp
XTsKKyAgICByZXR1cm4gcHJvZHVjdDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IC0gLWZ4IC1m
bCkKKyAgICAgICAgICAgKHBlZXBob2xlIChtaW51cykpKQorKi8KK2Z1bmN0aW9uIHNjX21pbnVz
KHgpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKwlyZXR1cm4gLXg7CisgICAg
ZWxzZSB7CisJdmFyIHJlcyA9IHg7CisJZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVu
Z3RoOyBpKyspCisJICAgIHJlcyAtPSBhcmd1bWVudHNbaV07CisJcmV0dXJuIHJlczsKKyAgICB9
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAvIC9mbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChk
aXYpKSkKKyovCitmdW5jdGlvbiBzY19kaXYoeCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAxKQorCXJldHVybiAxL3g7CisgICAgZWxzZSB7CisJdmFyIHJlcyA9IHg7CisJZm9yICh2
YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJICAgIHJlcyAvPSBhcmd1bWVu
dHNbaV07CisJcmV0dXJuIHJlczsKKyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCit2YXIgc2NfYWJzID0gTWF0aC5hYnM7CisKKy8qKiogTUVUQSAoKGV4cG9ydCBxdW90aWVu
dCAvZngpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyICJwYXJzZUludCgiIHggIi8iIHkg
IikiKSkpCisqLworZnVuY3Rpb24gc2NfcXVvdGllbnQoeCwgeSkgeworICAgIHJldHVybiBwYXJz
ZUludCh4IC8geSk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChpbmZpeCAyIDIgIiUiKSkpCisqLworZnVuY3Rpb24gc2NfcmVtYWluZGVyKHgsIHkp
IHsKKyAgICByZXR1cm4geCAlIHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChtb2R1bG8pKSkKKyovCitmdW5jdGlvbiBzY19tb2R1bG8oeCwgeSkg
eworICAgIHZhciByZW1haW5kZXIgPSB4ICUgeTsKKyAgICAvLyBpZiB0aGV5IGRvbid0IGhhdmUg
dGhlIHNhbWUgc2lnbgorICAgIGlmICgocmVtYWluZGVyICogeSkgPCAwKQorCXJldHVybiByZW1h
aW5kZXIgKyB5OworICAgIGVsc2UKKwlyZXR1cm4gcmVtYWluZGVyOworfQorCitmdW5jdGlvbiBz
Y19ldWNsaWRfZ2NkKGEsIGIpIHsKKyAgICB2YXIgdGVtcDsKKyAgICBpZiAoYSA9PT0gMCkgcmV0
dXJuIGI7CisgICAgaWYgKGIgPT09IDApIHJldHVybiBhOworICAgIGlmIChhIDwgMCkge2EgPSAt
YTt9OworICAgIGlmIChiIDwgMCkge2IgPSAtYjt9OworICAgIGlmIChiID4gYSkge3RlbXAgPSBh
OyBhID0gYjsgYiA9IHRlbXA7fTsKKyAgICB3aGlsZSAodHJ1ZSkgeworCWEgJT0gYjsKKwlpZihh
ID09PSAwKSB7cmV0dXJuIGI7fTsKKwliICU9IGE7CisJaWYoYiA9PT0gMCkge3JldHVybiBhO307
CisgICAgfTsKKyAgICByZXR1cm4gYjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2djZCgpIHsKKyAgICB2YXIgZ2NkID0gMDsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlnY2QgPSBzY19ldWNsaWRfZ2NkKGdjZCwg
YXJndW1lbnRzW2ldKTsKKyAgICByZXR1cm4gZ2NkOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2NfbGNtKCkgeworICAgIHZhciBsY20gPSAxOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJdmFyIGYgPSBNYXRoLnJv
dW5kKGFyZ3VtZW50c1tpXSAvIHNjX2V1Y2xpZF9nY2QoYXJndW1lbnRzW2ldLCBsY20pKTsKKwls
Y20gKj0gTWF0aC5hYnMoZik7CisgICAgfQorICAgIHJldHVybiBsY207Cit9CisKKy8vIExJTUlU
QVRJT046IG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IgZG9uJ3QgbWFrZSBzZW5zZSBpbiBmbG9h
dGluZyBwb2ludCB3b3JsZC4KKy8vdmFyIFNDX01BWF9ERUNJTUFMUyA9IDEwMDAwMDAKKy8vCisv
LyBmdW5jdGlvbiBzY19udW1lcmF0b3IoeCkgeworLy8gICAgIHZhciByb3VuZGVkID0gTWF0aC5y
b3VuZCh4ICogU0NfTUFYX0RFQ0lNQUxTKTsKKy8vICAgICByZXR1cm4gTWF0aC5yb3VuZChyb3Vu
ZGVkIC8gc2NfZXVjbGlkX2djZChyb3VuZGVkLCBTQ19NQVhfREVDSU1BTFMpKTsKKy8vIH0KKwor
Ly8gZnVuY3Rpb24gc2NfZGVub21pbmF0b3IoeCkgeworLy8gICAgIHZhciByb3VuZGVkID0gTWF0
aC5yb3VuZCh4ICogU0NfTUFYX0RFQ0lNQUxTKTsKKy8vICAgICByZXR1cm4gTWF0aC5yb3VuZChT
Q19NQVhfREVDSU1BTFMgLyBzY19ldWNsaWRfZ2NkKHJvdW5kZWQsIFNDX01BWF9ERUNJTUFMUykp
OworLy8gfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Zsb29yID0gTWF0
aC5mbG9vcjsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfY2VpbGluZyA9IE1h
dGguY2VpbDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfdHJ1bmNhdGUgPSBw
YXJzZUludDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfcm91bmQgPSBNYXRo
LnJvdW5kOworCisvLyBMSU1JVEFUSU9OOiBzY19yYXRpb25hbGl6ZSBkb2Vzbid0IG1ha2Ugc2Vu
c2UgaW4gYSBmbG9hdGluZyBwb2ludCB3b3JsZC4KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK3ZhciBzY19leHAgPSBNYXRoLmV4cDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2
YXIgc2NfbG9nID0gTWF0aC5sb2c7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNj
X3NpbiA9IE1hdGguc2luOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19jb3Mg
PSBNYXRoLmNvczsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfdGFuID0gTWF0
aC50YW47CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2FzaW4gPSBNYXRoLmFz
aW47CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Fjb3MgPSBNYXRoLmFjb3M7
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2F0YW4gPSBNYXRoLmF0YW47CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3FydCA9IE1hdGguc3FydDsKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfZXhwdCA9IE1hdGgucG93OworCisvLyBM
SU1JVEFUSU9OOiB3ZSBkb24ndCBoYXZlIGNvbXBsZXggbnVtYmVycy4KKy8vIExJTUlUQVRJT046
IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBoZW5jZSBub3QgaW1wbGVtZW50ZWQuCisvLyBM
SU1JVEFUSU9OOiBtYWtlLXJlY3Rhbmd1bGFyLCBtYWtlLXBvbGFyLCByZWFsLXBhcnQsIGltYWct
cGFydCwgbWFnbml0dWRlLCBhbmdsZQorLy8gTElNSVRBVElPTjogMiBhcmd1bWVudCBhdGFuCisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpZCkpKQorKi8K
K2Z1bmN0aW9uIHNjX2V4YWN0MmluZXhhY3QoeCkgeworICAgIHJldHVybiB4OworfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaWQpKSkKKyovCitmdW5j
dGlvbiBzY19pbmV4YWN0MmV4YWN0KHgpIHsKKyAgICByZXR1cm4geDsKK30KKworZnVuY3Rpb24g
c2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4KSB7CisgICAgaWYgKHJhZGl4KQorCXJldHVybiB4
LnRvU3RyaW5nKHJhZGl4KTsKKyAgICBlbHNlCisJcmV0dXJuIHgudG9TdHJpbmcoKTsKK30KKwor
ZnVuY3Rpb24gc2NfanNzdHJpbmcybnVtYmVyKHMsIHJhZGl4KSB7CisgICAgaWYgKHMgPT09ICIi
KSByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmFkaXgpIHsKKwl2YXIgdCA9IHBhcnNlSW50KHMs
IHJhZGl4KTsKKwlpZiAoIXQgJiYgdCAhPT0gMCkgcmV0dXJuIGZhbHNlOworCS8vIHZlcmlmeSB0
aGF0IGVhY2ggY2hhciBpcyBpbiByYW5nZS4gKHBhcnNlSW50IGlnbm9yZXMgbGVhZGluZworCS8v
IHdoaXRlIGFuZCB0cmFpbGluZyBjaGFycykKKwl2YXIgYWxsb3dlZENoYXJzID0gIjAxMjM0NTY3
ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLnN1YnN0cmluZygwLCByYWRpeCsxKTsKKwlp
ZiAoKG5ldyBSZWdFeHAoIl5bIithbGxvd2VkQ2hhcnMrIl0qJCIsICJpIikpLnRlc3QocykpCisJ
ICAgIHJldHVybiB0OworCWVsc2UgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisJdmFyIHQg
PSArczsgLy8gZG9lcyBub3QgaWdub3JlIHRyYWlsaW5nIGNoYXJzLgorCWlmICghdCAmJiB0ICE9
PSAwKSByZXR1cm4gZmFsc2U7CisJLy8gc2ltcGx5IHZlcmlmeSB0aGF0IGZpcnN0IGNoYXIgaXMg
bm90IHdoaXRlc3BhY2UuCisJdmFyIGMgPSBzLmNoYXJBdCgwKTsKKwkvLyBpZiArYyBpcyAwLCBi
dXQgdGhlIGNoYXIgaXMgbm90ICIwIiwgdGhlbiB3ZSBoYXZlIGEgd2hpdGVzcGFjZS4KKwlpZiAo
K2MgPT09IDAgJiYgYyAhPT0gIjAiKSByZXR1cm4gZmFsc2U7CisJcmV0dXJuIHQ7CisgICAgfQor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAobm90KSkpCisqLworZnVuY3Rpb24gc2Nfbm90KGIpIHsKKyAgICBy
ZXR1cm4gYiA9PT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNCb29sZWFuKGIpIHsKKyAgICByZXR1
cm4gKGIgPT09IHRydWUpIHx8IChiID09PSBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHNjX1BhaXIo
Y2FyLCBjZHIpIHsKKyAgICB0aGlzLmNhciA9IGNhcjsKKyAgICB0aGlzLmNkciA9IGNkcjsKK30K
Kworc2NfUGFpci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
c2NfdG9EaXNwbGF5U3RyaW5nKHRoaXMpOworfTsKK3NjX1BhaXIucHJvdG90eXBlLnNjX3RvV3Jp
dGVPckRpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbih3cml0ZU9yRGlzcGxheSkgeworICAgIHZhciBj
dXJyZW50ID0gdGhpczsKKworICAgIHZhciByZXMgPSAiKCI7CisKKyAgICB3aGlsZSh0cnVlKSB7
CisJcmVzICs9IHdyaXRlT3JEaXNwbGF5KGN1cnJlbnQuY2FyKTsKKwlpZiAoc2NfaXNQYWlyKGN1
cnJlbnQuY2RyKSkgeworCSAgICByZXMgKz0gIiAiOworCSAgICBjdXJyZW50ID0gY3VycmVudC5j
ZHI7CisJfSBlbHNlIGlmIChjdXJyZW50LmNkciAhPT0gbnVsbCkgeworCSAgICByZXMgKz0gIiAu
ICIgKyB3cml0ZU9yRGlzcGxheShjdXJyZW50LmNkcik7CisJICAgIGJyZWFrOworCX0gZWxzZSAv
LyBjdXJyZW50LmNkciA9PSBudWxsCisJICAgIGJyZWFrOworICAgIH0KKwkKKyAgICByZXMgKz0g
IikiOworCisgICAgcmV0dXJuIHJlczsKK307CitzY19QYWlyLnByb3RvdHlwZS5zY190b0Rpc3Bs
YXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5zY190b1dyaXRlT3JEaXNw
bGF5U3RyaW5nKHNjX3RvRGlzcGxheVN0cmluZyk7Cit9Oworc2NfUGFpci5wcm90b3R5cGUuc2Nf
dG9Xcml0ZVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnNjX3RvV3JpdGVP
ckRpc3BsYXlTdHJpbmcoc2NfdG9Xcml0ZVN0cmluZyk7Cit9OworLy8gc2NfUGFpci5wcm90b3R5
cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyBpbiBJTy5qcworCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZp
eCAiIGluc3RhbmNlb2Ygc2NfUGFpciIpKSkKKyovCitmdW5jdGlvbiBzY19pc1BhaXIocCkgewor
ICAgIHJldHVybiAocCBpbnN0YW5jZW9mIHNjX1BhaXIpOworfQorCitmdW5jdGlvbiBzY19pc1Bh
aXJFcXVhbChwMSwgcDIsIGNvbXApIHsKKyAgICByZXR1cm4gKGNvbXAocDEuY2FyLCBwMi5jYXIp
ICYmIGNvbXAocDEuY2RyLCBwMi5jZHIpKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAibmV3IHNjX1BhaXIoIiBjYXIgIiwgIiBjZHIg
IikiKSkpCisqLworZnVuY3Rpb24gc2NfY29ucyhjYXIsIGNkcikgeworICAgIHJldHVybiBuZXcg
c2NfUGFpcihjYXIsIGNkcik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBjb25zKikpICovCitm
dW5jdGlvbiBzY19jb25zU3RhcigpIHsKKyAgICB2YXIgcmVzID0gYXJndW1lbnRzW2FyZ3VtZW50
cy5sZW5ndGggLSAxXTsKKyAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aC0yOyBpID49
IDA7IGktLSkKKwlyZXMgPSBuZXcgc2NfUGFpcihhcmd1bWVudHNbaV0sIHJlcyk7CisgICAgcmV0
dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKHBvc3RmaXggIi5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FyKHApIHsKKyAgICByZXR1
cm4gcC5jYXI7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChwb3N0Zml4ICIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkcihwKSB7CisgICAgcmV0
dXJuIHAuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaG9sZSAyIHAgIi5jYXIgPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNjX3NldENhckJh
bmcocCwgdmFsKSB7CisgICAgcC5jYXIgPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgcCAiLmNkciA9ICIgdmFsKSkpCisqLwor
ZnVuY3Rpb24gc2Nfc2V0Q2RyQmFuZyhwLCB2YWwpIHsKKyAgICBwLmNkciA9IHZhbDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5j
YXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYXIocCkgeyByZXR1cm4gcC5jYXIuY2FyOyB9
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAi
LmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkcihwKSB7IHJldHVybiBwLmNkci5jYXI7
IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4
ICIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNk
cjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIi5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZHIocCkgeyByZXR1cm4gcC5jZHIu
Y2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYWFyKHApIHsgcmV0dXJu
IHAuY2FyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkYXIo
cCkgeyByZXR1cm4gcC5jYXIuY2RyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlv
biBzY19jYWFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIuY2FyIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2NhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5jYXI7IH0KKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNh
ci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhYXIocCkgeyByZXR1cm4gcC5jYXIuY2FyLmNk
cjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIi5jZHIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFkcihwKSB7IHJldHVybiBw
LmNkci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZGFyKHAp
IHsgcmV0dXJuIHAuY2FyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24g
c2NfY2RkZHIocCkgeyByZXR1cm4gcC5jZHIuY2RyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2FyLmNhci5jYXIiKSkp
CisqLworZnVuY3Rpb24gc2NfY2FhYWFyKHApIHsgcmV0dXJuIHAuY2FyLmNhci5jYXIuY2FyOyB9
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAi
LmNhci5jZHIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWFkYXIocCkgeyByZXR1cm4g
cC5jYXIuY2RyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNj
X2NhYWFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2FyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2RyLmNhci5jYXIi
KSkpCisqLworZnVuY3Rpb24gc2NfY2FhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5jYXIuY2Fy
OyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZp
eCAiLmNhci5jYXIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFhYXIocCkgeyByZXR1
cm4gcC5jYXIuY2FyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIuY2RyIikpKQorKi8KK2Z1bmN0aW9u
IHNjX2NkYWRhcihwKSB7IHJldHVybiBwLmNhci5jZHIuY2FyLmNkcjsgfQorLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2FyLmNhci5j
ZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhYWRyKHApIHsgcmV0dXJuIHAuY2RyLmNhci5jYXIu
Y2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiLmNkci5jZHIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFkZHIocCkgeyBy
ZXR1cm4gcC5jZHIuY2RyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNhci5jZHIuY2FyIikpKQorKi8KK2Z1bmN0
aW9uIHNjX2NhZGFhcihwKSB7IHJldHVybiBwLmNhci5jYXIuY2RyLmNhcjsgfQorLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2RyLmNk
ci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNkci5j
ZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiLmNkci5jYXIuY2RyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWRhZHIocCkg
eyByZXR1cm4gcC5jZHIuY2FyLmNkci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIuY2FyIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2NhZGRkcihwKSB7IHJldHVybiBwLmNkci5jZHIuY2RyLmNhcjsgfQorLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2Fy
LmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkYWFyKHApIHsgcmV0dXJuIHAuY2FyLmNh
ci5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGRkYXIo
cCkgeyByZXR1cm4gcC5jYXIuY2RyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jZHIuY2RyIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2NkZGFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2RyLmNkcjsgfQorLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIu
Y2RyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkZGRyKHApIHsgcmV0dXJuIHAuY2Ry
LmNkci5jZHIuY2RyOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19sYXN0UGFpcihsKSB7CisgICAgaWYgKCFzY19pc1BhaXIobCkpIHNjX2Vycm9yKCJzY19sYXN0
UGFpcjogcGFpciBleHBlY3RlZCIpOworICAgIHZhciByZXMgPSBsOworICAgIHZhciBjZHIgPSBs
LmNkcjsKKyAgICB3aGlsZSAoc2NfaXNQYWlyKGNkcikpIHsKKwlyZXMgPSBjZHI7CisJY2RyID0g
cmVzLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIiA9PT0gbnVsbCIpKSkKKyovCitmdW5jdGlvbiBzY19pc051bGwobykgeworICAgIHJldHVy
biAobyA9PT0gbnVsbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNMaXN0KG8pIHsKKyAgICB2YXIgcmFiYml0
OworICAgIHZhciB0dXJ0bGU7CisKKyAgICB2YXIgcmFiYml0ID0gbzsKKyAgICB2YXIgdHVydGxl
ID0gbzsKKyAgICB3aGlsZSAodHJ1ZSkgeworCWlmIChyYWJiaXQgPT09IG51bGwgfHwKKwkgICAg
KHJhYmJpdCBpbnN0YW5jZW9mIHNjX1BhaXIgJiYgcmFiYml0LmNkciA9PT0gbnVsbCkpCisJICAg
IHJldHVybiB0cnVlOyAgLy8gZW5kIG9mIGxpc3QKKwllbHNlIGlmICgocmFiYml0IGluc3RhbmNl
b2Ygc2NfUGFpcikgJiYKKwkJIChyYWJiaXQuY2RyIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKwkg
ICAgcmFiYml0ID0gcmFiYml0LmNkci5jZHI7CisJICAgIHR1cnRsZSA9IHR1cnRsZS5jZHI7CisJ
ICAgIGlmIChyYWJiaXQgPT09IHR1cnRsZSkgcmV0dXJuIGZhbHNlOyAvLyBjeWNsZQorCX0gZWxz
ZQorCSAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBwYWlyCisgICAgfQorfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdCgpIHsKKyAgICB2YXIgcmVzID0gbnVs
bDsKKyAgICB2YXIgYSA9IGFyZ3VtZW50czsKKyAgICBmb3IgKHZhciBpID0gYS5sZW5ndGgtMTsg
aSA+PSAwOyBpLS0pCisJcmVzID0gbmV3IHNjX1BhaXIoYVtpXSwgcmVzKTsKKyAgICByZXR1cm4g
cmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfaW90YShu
dW0sIGluaXQpIHsKKyAgIHZhciByZXMgPSBudWxsOworICAgaWYgKCFpbml0KSBpbml0ID0gMDsK
KyAgIGZvciAodmFyIGkgPSBudW0gLSAxOyBpID49IDA7IGktLSkKKyAgICAgIHJlcyA9IG5ldyBz
Y19QYWlyKGkgKyBpbml0LCByZXMpOworICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21ha2VMaXN0KG5iRWxzLCBmaWxsKSB7CisgICAg
dmFyIHJlcyA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYkVsczsgaSsrKQorCXJl
cyA9IG5ldyBzY19QYWlyKGZpbGwsIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xlbmd0aChsKSB7CisgICAgdmFyIHJl
cyA9IDA7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlyZXMrKzsKKwlsID0gbC5jZHI7Cisg
ICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19yZW1xKG8sIGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsK
KyAgICB2YXIgdGFpbCA9IGR1bW15OworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYgKGwu
Y2FyICE9PSBvKSB7CisJICAgIHRhaWwuY2RyID0gc2NfY29ucyhsLmNhciwgbnVsbCk7CisJICAg
IHRhaWwgPSB0YWlsLmNkcjsKKwl9CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZHVt
bXkuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVt
cUJhbmcobywgbCkgeworICAgIHZhciBkdW1teSA9IHsgY2RyIDogbnVsbCB9OworICAgIHZhciB0
YWlsID0gZHVtbXk7CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVlOworICAgIHdoaWxlIChsICE9
PSBudWxsKSB7CisJaWYgKGwuY2FyID09PSBvKSB7CisJICAgIG5lZWRzQXNzaWcgPSB0cnVlOwor
CX0gZWxzZSB7CisJICAgIGlmIChuZWVkc0Fzc2lnKSB7CisJCXRhaWwuY2RyID0gbDsKKwkJbmVl
ZHNBc3NpZyA9IGZhbHNlOworCSAgICB9CisJICAgIHRhaWwgPSBsOworCX0KKwlsID0gbC5jZHI7
CisgICAgfQorICAgIHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXkuY2RyOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZGVsZXRlKG8sIGwpIHsK
KyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15Owor
ICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYgKCFzY19pc0VxdWFsKGwuY2FyLCBvKSkgewor
CSAgICB0YWlsLmNkciA9IHNjX2NvbnMobC5jYXIsIG51bGwpOworCSAgICB0YWlsID0gdGFpbC5j
ZHI7CisJfQorCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGR1bW15LmNkcjsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2RlbGV0ZUJhbmcobywgbCkg
eworICAgIHZhciBkdW1teSA9IHsgY2RyIDogbnVsbCB9OworICAgIHZhciB0YWlsID0gZHVtbXk7
CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVlOworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJ
aWYgKHNjX2lzRXF1YWwobC5jYXIsIG8pKSB7CisJICAgIG5lZWRzQXNzaWcgPSB0cnVlOworCX0g
ZWxzZSB7CisJICAgIGlmIChuZWVkc0Fzc2lnKSB7CisJCXRhaWwuY2RyID0gbDsKKwkJbmVlZHNB
c3NpZyA9IGZhbHNlOworCSAgICB9CisJICAgIHRhaWwgPSBsOworCX0KKwlsID0gbC5jZHI7Cisg
ICAgfQorICAgIHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXkuY2RyOworfQorCitm
dW5jdGlvbiBzY19yZXZlcnNlQXBwZW5kQmFuZyhsMSwgbDIpIHsKKyAgICB2YXIgcmVzID0gbDI7
CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJdmFyIHRtcCA9IHJlczsKKwlyZXMgPSBsMTsK
KwlsMSA9IGwxLmNkcjsKKwlyZXMuY2RyID0gdG1wOworICAgIH0KKyAgICByZXR1cm4gcmVzOwor
fQorCQorZnVuY3Rpb24gc2NfZHVhbEFwcGVuZChsMSwgbDIpIHsKKyAgICBpZiAobDEgPT09IG51
bGwpIHJldHVybiBsMjsKKyAgICBpZiAobDIgPT09IG51bGwpIHJldHVybiBsMTsKKyAgICB2YXIg
cmV2ID0gc2NfcmV2ZXJzZShsMSk7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJl
diwgbDIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXBw
ZW5kKCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQorCXJldHVybiBudWxsOwor
ICAgIHZhciByZXMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdOworICAgIGZvciAo
dmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pCisJcmVzID0gc2NfZHVh
bEFwcGVuZChhcmd1bWVudHNbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworZnVuY3Rp
b24gc2NfZHVhbEFwcGVuZEJhbmcobDEsIGwyKSB7CisgICAgaWYgKGwxID09PSBudWxsKSByZXR1
cm4gbDI7CisgICAgaWYgKGwyID09PSBudWxsKSByZXR1cm4gbDE7CisgICAgdmFyIHRtcCA9IGwx
OworICAgIHdoaWxlICh0bXAuY2RyICE9PSBudWxsKSB0bXA9dG1wLmNkcjsKKyAgICB0bXAuY2Ry
ID0gbDI7CisgICAgcmV0dXJuIGwxOworfQorICAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX2FwcGVuZEJhbmcoKSB7CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcmVzID0gc2NfZHVh
bEFwcGVuZEJhbmcocmVzLCBhcmd1bWVudHNbaV0pOworICAgIHJldHVybiByZXM7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZlcnNlKGwxKSB7CisgICAg
dmFyIHJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJcmVzID0gc2NfY29u
cyhsMS5jYXIsIHJlcyk7CisJbDEgPSBsMS5jZHI7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZlcnNlQmFuZyhs
KSB7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKGwsIG51bGwpOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdFRhaWwobCwgaykgeworICAg
IHZhciByZXMgPSBsOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7CisJcmVzID0g
cmVzLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xpc3RSZWYobCwgaykgeworICAgIHJldHVybiBzY19saXN0
VGFpbChsLCBrKS5jYXI7Cit9CisKKy8qIC8vIHVub3B0aW1pemVkIGdlbmVyaWMgdmVyc2lvbnMK
K2Z1bmN0aW9uIHNjX21lbVgobywgbCwgY29tcCkgeworICAgIHdoaWxlIChsICE9IG51bGwpIHsK
KwlpZiAoY29tcChsLmNhciwgbykpCisJICAgIHJldHVybiBsOworCWwgPSBsLmNkcjsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorZnVuY3Rpb24gc2NfbWVtcShvLCBsKSB7IHJldHVybiBz
Y19tZW1YKG8sIGwsIHNjX2lzRXEpOyB9CitmdW5jdGlvbiBzY19tZW12KG8sIGwpIHsgcmV0dXJu
IHNjX21lbVgobywgbCwgc2NfaXNFcXYpOyB9CitmdW5jdGlvbiBzY19tZW1iZXIobywgbCkgeyBy
ZXR1cm4gc2NfbWVtWChvLCBsLCBzY19pc0VxdWFsKTsgfQorKi8KKworLyogb3B0aW1pemVkIHZl
cnNpb25zICovCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWVtcShv
LCBsKSB7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlpZiAobC5jYXIgPT09IG8pCisJICAg
IHJldHVybiBsOworCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21lbXYobywgbCkgeworICAgIHdo
aWxlIChsICE9PSBudWxsKSB7CisJaWYgKGwuY2FyID09PSBvKQorCSAgICByZXR1cm4gbDsKKwls
ID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19tZW1iZXIobywgbCkgeworICAgIHdoaWxlIChsICE9PSBu
dWxsKSB7CisJaWYgKHNjX2lzRXF1YWwobC5jYXIsbykpCisJICAgIHJldHVybiBsOworCWwgPSBs
LmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiAvLyBnZW5lcmljIHVub3B0
aW1pemVkIHZlcnNpb25zCitmdW5jdGlvbiBzY19hc3NYKG8sIGFsLCBjb21wKSB7CisgICAgd2hp
bGUgKGFsICE9IG51bGwpIHsKKwlpZiAoY29tcChhbC5jYXIuY2FyLCBvKSkKKwkgICAgcmV0dXJu
IGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorZnVu
Y3Rpb24gc2NfYXNzcShvLCBhbCkgeyByZXR1cm4gc2NfYXNzWChvLCBhbCwgc2NfaXNFcSk7IH0K
K2Z1bmN0aW9uIHNjX2Fzc3YobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1gobywgYWwsIHNjX2lzRXF2
KTsgfQorZnVuY3Rpb24gc2NfYXNzb2MobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1gobywgYWwsIHNj
X2lzRXF1YWwpOyB9CisqLworLy8gb3B0aW1pemVkIHZlcnNpb25zCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzcShvLCBhbCkgeworICAgIHdoaWxlIChhbCAhPT0g
bnVsbCkgeworCWlmIChhbC5jYXIuY2FyID09PSBvKQorCSAgICByZXR1cm4gYWwuY2FyOworCWFs
ID0gYWwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzdihvLCBhbCkgeworICAgIHdoaWxlIChhbCAhPT0g
bnVsbCkgeworCWlmIChhbC5jYXIuY2FyID09PSBvKQorCSAgICByZXR1cm4gYWwuY2FyOworCWFs
ID0gYWwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzb2MobywgYWwpIHsKKyAgICB3aGlsZSAoYWwgIT09
IG51bGwpIHsKKwlpZiAoc2NfaXNFcXVhbChhbC5jYXIuY2FyLCBvKSkKKwkgICAgcmV0dXJuIGFs
LmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiBj
YW4gYmUgdXNlZCBmb3IgbXV0YWJsZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzICovCitmdW5jdGlv
biBzY19pc0NoYXJTdHJpbmdFcXVhbChjczEsIGNzMikgeyByZXR1cm4gY3MxLnZhbCA9PT0gY3My
LnZhbDsgfQorZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nTGVzcyhjczEsIGNzMikgeyByZXR1cm4g
Y3MxLnZhbCA8IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0dyZWF0ZXIoY3Mx
LCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPiBjczIudmFsOyB9CitmdW5jdGlvbiBzY19pc0NoYXJT
dHJpbmdMZXNzRXF1YWwoY3MxLCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPD0gY3MyLnZhbDsgfQor
ZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nR3JlYXRlckVxdWFsKGNzMSwgY3MyKSB7IHJldHVybiBj
czEudmFsID49IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJRXF1YWwoY3Mx
LCBjczIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpID09PSBjczIudmFsLnRv
TG93ZXJDYXNlKCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJTGVzcyhjczEsIGNzMikK
KyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPCBjczIudmFsLnRvTG93ZXJDYXNl
KCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlcihjczEsIGNzMikKKyAgICB7
IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPiBjczIudmFsLnRvTG93ZXJDYXNlKCk7IH0K
K2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJTGVzc0VxdWFsKGNzMSwgY3MyKQorICAgIHsgcmV0
dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA8PSBjczIudmFsLnRvTG93ZXJDYXNlKCk7IH0KK2Z1
bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlckVxdWFsKGNzMSwgY3MyKQorICAgIHsgcmV0
dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA+PSBjczIudmFsLnRvTG93ZXJDYXNlKCk7IH0KKwor
CisKKworZnVuY3Rpb24gc2NfQ2hhcihjKSB7CisgICAgdmFyIGNhY2hlZCA9IHNjX0NoYXIubGF6
eVtjXTsKKyAgICBpZiAoY2FjaGVkKQorCXJldHVybiBjYWNoZWQ7CisgICAgdGhpcy52YWwgPSBj
OworICAgIHNjX0NoYXIubGF6eVtjXSA9IHRoaXM7CisgICAgLy8gYWRkIHJldHVybiwgc28gRkYg
ZG9lcyBub3QgY29tcGxhaW4uCisgICAgcmV0dXJuIHVuZGVmaW5lZDsKK30KK3NjX0NoYXIubGF6
eSA9IG5ldyBPYmplY3QoKTsKKy8vIHRoYW5rcyB0byBFcmljCitzY19DaGFyLmNoYXIycmVhZGFi
bGUgPSB7CisgICAgIlwwMDAiOiAiI1xcbnVsbCIsCisgICAgIlwwMDciOiAiI1xcYmVsbCIsCisg
ICAgIlwwMTAiOiAiI1xcYmFja3NwYWNlIiwKKyAgICAiXDAxMSI6ICIjXFx0YWIiLAorICAgICJc
MDEyIjogIiNcXG5ld2xpbmUiLAorICAgICJcMDE0IjogIiNcXHBhZ2UiLAorICAgICJcMDE1Ijog
IiNcXHJldHVybiIsCisgICAgIlwwMzMiOiAiI1xcZXNjYXBlIiwKKyAgICAiXDA0MCI6ICIjXFxz
cGFjZSIsCisgICAgIlwxNzciOiAiI1xcZGVsZXRlIiwKKworICAvKiBwb2V0aWNsZXNzIG5hbWVz
ICovCisgICAgIlwwMDEiOiAiI1xcc29oIiwKKyAgICAiXDAwMiI6ICIjXFxzdHgiLAorICAgICJc
MDAzIjogIiNcXGV0eCIsCisgICAgIlwwMDQiOiAiI1xcZW90IiwKKyAgICAiXDAwNSI6ICIjXFxl
bnEiLAorICAgICJcMDA2IjogIiNcXGFjayIsCisKKyAgICAiXDAxMyI6ICIjXFx2dCIsCisgICAg
IlwwMTYiOiAiI1xcc28iLAorICAgICJcMDE3IjogIiNcXHNpIiwKKworICAgICJcMDIwIjogIiNc
XGRsZSIsCisgICAgIlwwMjEiOiAiI1xcZGMxIiwKKyAgICAiXDAyMiI6ICIjXFxkYzIiLAorICAg
ICJcMDIzIjogIiNcXGRjMyIsCisgICAgIlwwMjQiOiAiI1xcZGM0IiwKKyAgICAiXDAyNSI6ICIj
XFxuYWsiLAorICAgICJcMDI2IjogIiNcXHN5biIsCisgICAgIlwwMjciOiAiI1xcZXRiIiwKKwor
ICAgICJcMDMwIjogIiNcXGNhbiIsCisgICAgIlwwMzEiOiAiI1xcZW0iLAorICAgICJcMDMyIjog
IiNcXHN1YiIsCisgICAgIlwwMzMiOiAiI1xcZXNjIiwKKyAgICAiXDAzNCI6ICIjXFxmcyIsCisg
ICAgIlwwMzUiOiAiI1xcZ3MiLAorICAgICJcMDM2IjogIiNcXHJzIiwKKyAgICAiXDAzNyI6ICIj
XFx1cyJ9OworCitzY19DaGFyLnJlYWRhYmxlMmNoYXIgPSB7CisgICAgIm51bGwiOiAiXDAwMCIs
CisgICAgImJlbGwiOiAiXDAwNyIsCisgICAgImJhY2tzcGFjZSI6ICJcMDEwIiwKKyAgICAidGFi
IjogIlwwMTEiLAorICAgICJuZXdsaW5lIjogIlwwMTIiLAorICAgICJwYWdlIjogIlwwMTQiLAor
ICAgICJyZXR1cm4iOiAiXDAxNSIsCisgICAgImVzY2FwZSI6ICJcMDMzIiwKKyAgICAic3BhY2Ui
OiAiXDA0MCIsCisgICAgImRlbGV0ZSI6ICJcMDAwIiwKKyAgICAic29oIjogIlwwMDEiLAorICAg
ICJzdHgiOiAiXDAwMiIsCisgICAgImV0eCI6ICJcMDAzIiwKKyAgICAiZW90IjogIlwwMDQiLAor
ICAgICJlbnEiOiAiXDAwNSIsCisgICAgImFjayI6ICJcMDA2IiwKKyAgICAiYmVsIjogIlwwMDci
LAorICAgICJicyI6ICJcMDEwIiwKKyAgICAiaHQiOiAiXDAxMSIsCisgICAgIm5sIjogIlwwMTIi
LAorICAgICJ2dCI6ICJcMDEzIiwKKyAgICAibnAiOiAiXDAxNCIsCisgICAgImNyIjogIlwwMTUi
LAorICAgICJzbyI6ICJcMDE2IiwKKyAgICAic2kiOiAiXDAxNyIsCisgICAgImRsZSI6ICJcMDIw
IiwKKyAgICAiZGMxIjogIlwwMjEiLAorICAgICJkYzIiOiAiXDAyMiIsCisgICAgImRjMyI6ICJc
MDIzIiwKKyAgICAiZGM0IjogIlwwMjQiLAorICAgICJuYWsiOiAiXDAyNSIsCisgICAgInN5biI6
ICJcMDI2IiwKKyAgICAiZXRiIjogIlwwMjciLAorICAgICJjYW4iOiAiXDAzMCIsCisgICAgImVt
IjogIlwwMzEiLAorICAgICJzdWIiOiAiXDAzMiIsCisgICAgImVzYyI6ICJcMDMzIiwKKyAgICAi
ZnMiOiAiXDAzNCIsCisgICAgImdzIjogIlwwMzUiLAorICAgICJycyI6ICJcMDM2IiwKKyAgICAi
dXMiOiAiXDAzNyIsCisgICAgInNwIjogIlwwNDAiLAorICAgICJkZWwiOiAiXDE3NyJ9OworICAg
IAorc2NfQ2hhci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
dGhpcy52YWw7Cit9OworLy8gc2NfdG9EaXNwbGF5U3RyaW5nID09IHRvU3RyaW5nCitzY19DaGFy
LnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGVudHJ5
ID0gc2NfQ2hhci5jaGFyMnJlYWRhYmxlW3RoaXMudmFsXTsKKyAgICBpZiAoZW50cnkpCisJcmV0
dXJuIGVudHJ5OworICAgIGVsc2UKKwlyZXR1cm4gIiNcXCIgKyB0aGlzLnZhbDsKK307CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChwb3N0Zml4ICJpbnN0YW5jZW9mIHNjX0NoYXIiKSkpCisqLworZnVuY3Rpb24g
c2NfaXNDaGFyKGMpIHsKKyAgICByZXR1cm4gKGMgaW5zdGFuY2VvZiBzY19DaGFyKTsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0IGNoYXI9PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPT09ICIgYzIgIi52YWwiKSkpCisqLwor
dmFyIHNjX2lzQ2hhckVxdWFsID0gc2NfaXNDaGFyU3RyaW5nRXF1YWw7CisvKioqIE1FVEEgKChl
eHBvcnQgY2hhcjw/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMiBjMSAiLnZhbCA8ICIgYzIgIi52YWwiKSkpCisqLwordmFyIHNjX2lzQ2hhckxl
c3MgPSBzY19pc0NoYXJTdHJpbmdMZXNzOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI+PykKKyAg
ICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52
YWwgPiAiIGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJHcmVhdGVyID0gc2NfaXNDaGFy
U3RyaW5nR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyPD0/KQorICAgICAgICAgICAo
dHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbCA8PSAiIGMy
ICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJMZXNzRXF1YWwgPSBzY19pc0NoYXJTdHJpbmdM
ZXNzRXF1YWw7CisvKioqIE1FVEEgKChleHBvcnQgY2hhcj49PykKKyAgICAgICAgICAgKHR5cGUg
Ym9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPj0gIiBjMiAiLnZh
bCIpKSkKKyovCit2YXIgc2NfaXNDaGFyR3JlYXRlckVxdWFsID0gc2NfaXNDaGFyU3RyaW5nR3Jl
YXRlckVxdWFsOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXItY2k9PykKKyAgICAgICAgICAgKHR5
cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwudG9Mb3dlckNh
c2UoKSA9PT0gIiBjMiAiLnZhbC50b0xvd2VyQ2FzZSgpIikpKQorKi8KK3ZhciBzY19pc0NoYXJD
SUVxdWFsID0gc2NfaXNDaGFyU3RyaW5nQ0lFcXVhbDsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFy
LWNpPD8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9s
ZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPCAiIGMyICIudmFsLnRvTG93ZXJDYXNlKCkiKSkp
CisqLwordmFyIHNjX2lzQ2hhckNJTGVzcyA9IHNjX2lzQ2hhclN0cmluZ0NJTGVzczsKKy8qKiog
TUVUQSAoKGV4cG9ydCBjaGFyLWNpPj8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAg
ICAgIChwZWVwaG9sZSAoaG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPiAiIGMyICIudmFs
LnRvTG93ZXJDYXNlKCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJR3JlYXRlciA9IHNjX2lzQ2hh
clN0cmluZ0NJR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPD0/KQorICAgICAg
ICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50
b0xvd2VyQ2FzZSgpIDw9ICIgYzIgIi52YWwudG9Mb3dlckNhc2UoKSIpKSkKKyovCit2YXIgc2Nf
aXNDaGFyQ0lMZXNzRXF1YWwgPSBzY19pc0NoYXJTdHJpbmdDSUxlc3NFcXVhbDsKKy8qKiogTUVU
QSAoKGV4cG9ydCBjaGFyLWNpPj0/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAg
ICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50b0xvd2VyQ2FzZSgpID49ICIgYzIgIi52YWwu
dG9Mb3dlckNhc2UoKSIpKSkKKyovCit2YXIgc2NfaXNDaGFyQ0lHcmVhdGVyRXF1YWwgPSBzY19p
c0NoYXJTdHJpbmdDSUdyZWF0ZXJFcXVhbDsKKwordmFyIFNDX05VTUJFUl9DTEFTUyA9ICIwMTIz
NDU2Nzg5IjsKK3ZhciBTQ19XSElURVNQQUNFX0NMQVNTID0gJyBcclxuXHRcZic7Cit2YXIgU0Nf
TE9XRVJfQ0xBU1MgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonOwordmFyIFNDX1VQUEVS
X0NMQVNTID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzsKKworZnVuY3Rpb24gc2NfaXND
aGFyT2ZDbGFzcyhjLCBjbCkgeyByZXR1cm4gKGNsLmluZGV4T2YoYykgIT0gLTEpOyB9CisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9u
IHNjX2lzQ2hhckFscGhhYmV0aWMoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNzKGMu
dmFsLCBTQ19MT1dFUl9DTEFTUykgfHwKKwkgIHNjX2lzQ2hhck9mQ2xhc3MoYy52YWwsIFNDX1VQ
UEVSX0NMQVNTKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBi
b29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMSAiU0NfTlVNQkVSX0NMQVNTLmluZGV4
T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJOdW1lcmljKGMp
CisgICAgeyByZXR1cm4gc2NfaXNDaGFyT2ZDbGFzcyhjLnZhbCwgU0NfTlVNQkVSX0NMQVNTKTsg
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitm
dW5jdGlvbiBzY19pc0NoYXJXaGl0ZXNwYWNlKGMpIHsKKyAgICB2YXIgdG1wID0gYy52YWw7Cisg
ICAgcmV0dXJuIHRtcCA9PT0gIiAiIHx8IHRtcCA9PT0gIlxyIiB8fCB0bXAgPT09ICJcbiIgfHwg
dG1wID09PSAiXHQiIHx8IHRtcCA9PT0gIlxmIjsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIlND
X1VQUEVSX0NMQVNTLmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBz
Y19pc0NoYXJVcHBlckNhc2UoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNzKGMudmFs
LCBTQ19VUFBFUl9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIlNDX0xPV0VSX0NMQVNT
LmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJMb3dl
ckNhc2UoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNzKGMudmFsLCBTQ19MT1dFUl9D
TEFTUyk7IH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KHBvc3RmaXggIi52YWwuY2hhckNvZGVBdCgwKSIpKSkKKyovCitmdW5jdGlvbiBzY19jaGFyMmlu
dGVnZXIoYykKKyAgICB7IHJldHVybiBjLnZhbC5jaGFyQ29kZUF0KDApOyB9CisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJuZXcgc2NfQ2hhcihT
dHJpbmcuZnJvbUNoYXJDb2RlKCIgbiAiKSkiKSkpCisqLworZnVuY3Rpb24gc2NfaW50ZWdlcjJj
aGFyKG4pCisgICAgeyByZXR1cm4gbmV3IHNjX0NoYXIoU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7
IH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUg
MSAibmV3IHNjX0NoYXIoIiBjICIudmFsLnRvVXBwZXJDYXNlKCkpIikpKQorKi8KK2Z1bmN0aW9u
IHNjX2NoYXJVcGNhc2UoYykKKyAgICB7IHJldHVybiBuZXcgc2NfQ2hhcihjLnZhbC50b1VwcGVy
Q2FzZSgpKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KGhvbGUgMSAibmV3IHNjX0NoYXIoIiBjICIudmFsLnRvTG93ZXJDYXNlKCkpIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2NoYXJEb3duY2FzZShjKQorICAgIHsgcmV0dXJuIG5ldyBzY19DaGFyKGMudmFs
LnRvTG93ZXJDYXNlKCkpOyB9CisKK2Z1bmN0aW9uIHNjX21ha2VKU1N0cmluZ09mTGVuZ3RoKGss
IGMpIHsKKyAgICB2YXIgZmlsbDsKKyAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKQorCWZpbGwgPSAi
ICI7CisgICAgZWxzZQorCWZpbGwgPSBjOworICAgIHZhciByZXMgPSAiIjsKKyAgICB2YXIgbGVu
ID0gMTsKKyAgICAvLyBldmVyeSByb3VuZCBkb3VibGVzIHRoZSBzaXplIG9mIGZpbGwuCisgICAg
d2hpbGUgKGsgPj0gbGVuKSB7CisJaWYgKGsgJiBsZW4pCisJICAgIHJlcyA9IHJlcy5jb25jYXQo
ZmlsbCk7CisJZmlsbCA9IGZpbGwuY29uY2F0KGZpbGwpOworCWxlbiAqPSAyOworICAgIH0KKyAg
ICByZXR1cm4gcmVzOworfQorCitmdW5jdGlvbiBzY19tYWtlanNTdHJpbmcoaywgYykgeworICAg
IHZhciBmaWxsOworICAgIGlmIChjKQorCWZpbGwgPSBjLnZhbDsKKyAgICBlbHNlCisJZmlsbCA9
ICIgIjsKKyAgICByZXR1cm4gc2NfbWFrZUpTU3RyaW5nT2ZMZW5ndGgoaywgZmlsbCk7Cit9CisK
K2Z1bmN0aW9uIHNjX2pzc3RyaW5nMmxpc3QocykgeworICAgIHZhciByZXMgPSBudWxsOworICAg
IGZvciAodmFyIGkgPSBzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorCXJlcyA9IHNjX2NvbnMo
bmV3IHNjX0NoYXIocy5jaGFyQXQoaSkpLCByZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK2Z1
bmN0aW9uIHNjX2xpc3QyanNzdHJpbmcobCkgeworICAgIHZhciBhID0gbmV3IEFycmF5KCk7Cisg
ICAgd2hpbGUobCAhPT0gbnVsbCkgeworCWEucHVzaChsLmNhci52YWwpOworCWwgPSBsLmNkcjsK
KyAgICB9CisgICAgcmV0dXJuICIiLmNvbmNhdC5hcHBseSgiIiwgYSk7Cit9CisKK3ZhciBzY19W
ZWN0b3IgPSBBcnJheTsKKworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b1dyaXRlT3JEaXNwbGF5
U3RyaW5nID0gZnVuY3Rpb24od3JpdGVPckRpc3BsYXkpIHsKKyAgICBpZiAodGhpcy5sZW5ndGgg
PT09IDApIHJldHVybiAiIygpIjsKKworICAgIHZhciByZXMgPSAiIygiICsgd3JpdGVPckRpc3Bs
YXkodGhpc1swXSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKQor
CXJlcyArPSAiICIgKyB3cml0ZU9yRGlzcGxheSh0aGlzW2ldKTsKKyAgICByZXMgKz0gIikiOwor
ICAgIHJldHVybiByZXM7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJp
bmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5zY190b1dyaXRlT3JEaXNwbGF5U3Ry
aW5nKHNjX3RvRGlzcGxheVN0cmluZyk7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b1dy
aXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuc2NfdG9Xcml0ZU9yRGlz
cGxheVN0cmluZyhzY190b1dyaXRlU3RyaW5nKTsKK307CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2
ZWN0b3I/IGFycmF5PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChwb3N0Zml4ICIgaW5zdGFuY2VvZiBzY19WZWN0b3IiKSkpCisqLworZnVuY3Rpb24gc2Nf
aXNWZWN0b3IodikgeworICAgIHJldHVybiAodiBpbnN0YW5jZW9mIHNjX1ZlY3Rvcik7Cit9CisK
Ky8vIG9ubHkgYXBwbGllcyB0byB2ZWN0b3JzCitmdW5jdGlvbiBzY19pc1ZlY3RvckVxdWFsKHYx
LCB2MiwgY29tcCkgeworICAgIGlmICh2MS5sZW5ndGggIT09IHYyLmxlbmd0aCkgcmV0dXJuIGZh
bHNlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspCisJaWYgKCFjb21w
KHYxW2ldLCB2MltpXSkpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IG1ha2UtdmVjdG9yIG1ha2UtYXJyYXkpKSAqLworZnVuY3Rpb24gc2Nf
bWFrZVZlY3RvcihzaXplLCBmaWxsKSB7CisgICAgdmFyIGEgPSBuZXcgc2NfVmVjdG9yKHNpemUp
OworICAgIGlmIChmaWxsICE9PSB1bmRlZmluZWQpCisJc2NfdmVjdG9yRmlsbEJhbmcoYSwgZmls
bCk7CisgICAgcmV0dXJuIGE7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0b3IgYXJyYXkp
CisgICAgICAgICAgIChwZWVwaG9sZSAodmVjdG9yKSkpCisqLworZnVuY3Rpb24gc2NfdmVjdG9y
KCkgeworICAgIHZhciBhID0gbmV3IHNjX1ZlY3RvcigpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWEucHVzaChhcmd1bWVudHNbaV0pOworICAgIHJl
dHVybiBhOworfQorCisvKioqIE1FVEEgKChleHBvcnQgdmVjdG9yLWxlbmd0aCBhcnJheS1sZW5n
dGgpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmxlbmd0aCIpKSkKKyovCitmdW5j
dGlvbiBzY192ZWN0b3JMZW5ndGgodikgeworICAgIHJldHVybiB2Lmxlbmd0aDsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IHZlY3Rvci1yZWYgYXJyYXktcmVmKQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMiB2ICJbIiBwb3MgIl0iKSkpCisqLworZnVuY3Rpb24gc2NfdmVjdG9yUmVmKHYs
IHBvcykgeworICAgIHJldHVybiB2W3Bvc107Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0
b3Itc2V0ISBhcnJheS1zZXQhKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMyB2ICJbIiBw
b3MgIl0gPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNjX3ZlY3RvclNldEJhbmcodiwgcG9zLCB2
YWwpIHsKKyAgICB2W3Bvc10gPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0b3It
Pmxpc3QgYXJyYXktPmxpc3QpKSAqLworZnVuY3Rpb24gc2NfdmVjdG9yMmxpc3QoYSkgeworICAg
IHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSBhLmxlbmd0aC0xOyBpID49IDA7IGkt
LSkKKwlyZXMgPSBzY19jb25zKGFbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IGxpc3QtPnZlY3RvciBsaXN0LT5hcnJheSkpICovCitmdW5jdGlvbiBz
Y19saXN0MnZlY3RvcihsKSB7CisgICAgdmFyIGEgPSBuZXcgc2NfVmVjdG9yKCk7CisgICAgd2hp
bGUobCAhPT0gbnVsbCkgeworCWEucHVzaChsLmNhcik7CisJbCA9IGwuY2RyOworICAgIH0KKyAg
ICByZXR1cm4gYTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rvci1maWxsISBhcnJheS1m
aWxsISkpICovCitmdW5jdGlvbiBzY192ZWN0b3JGaWxsQmFuZyhhLCBmaWxsKSB7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorCWFbaV0gPSBmaWxsOworfQorCisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jb3B5VmVjdG9yKGEsIGxlbikg
eworICAgIGlmIChsZW4gPD0gYS5sZW5ndGgpCisJcmV0dXJuIGEuc2xpY2UoMCwgbGVuKTsKKyAg
ICBlbHNlIHsKKwl2YXIgdG1wID0gYS5jb25jYXQoKTsKKwl0bXAubGVuZ3RoID0gbGVuOworCXJl
dHVybiB0bXA7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAoaG9sZSAzIGEgIi5zbGljZSgiIHN0YXJ0ICIsIiBlbmQgIikiKSkpCisqLwor
ZnVuY3Rpb24gc2NfdmVjdG9yQ29weShhLCBzdGFydCwgZW5kKSB7CisgICAgcmV0dXJuIGEuc2xp
Y2Uoc3RhcnQsIGVuZCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlv
biBzY192ZWN0b3JDb3B5QmFuZyh0YXJnZXQsIHRzdGFydCwgc291cmNlLCBzc3RhcnQsIHNlbmQp
IHsKKyAgICBpZiAoIXNzdGFydCkgc3N0YXJ0ID0gMDsKKyAgICBpZiAoIXNlbmQpIHNlbmQgPSBz
b3VyY2UubGVuZ3RoOworCisgICAgLy8gaWYgdGFyZ2V0ID09IHNvdXJjZSB3ZSBkb24ndCB3YW50
IHRvIG92ZXJ3cml0ZSBub3QgeWV0IGNvcGllZCBlbGVtZW50cy4KKyAgICBpZiAodHN0YXJ0IDw9
IHNzdGFydCkgeworCWZvciAodmFyIGkgPSB0c3RhcnQsIGogPSBzc3RhcnQ7IGogPCBzZW5kOyBp
KyssIGorKykgeworCSAgICB0YXJnZXRbaV0gPSBzb3VyY2Vbal07CisJfQorICAgIH0gZWxzZSB7
CisJdmFyIGRpZmYgPSBzZW5kIC0gc3N0YXJ0OworCWZvciAodmFyIGkgPSB0c3RhcnQgKyBkaWZm
IC0gMSwgaiA9IHNlbmQgLSAxOworCSAgICAgaiA+PSBzc3RhcnQ7CisJICAgICBpLS0sIGotLSkg
eworCSAgICB0YXJnZXRbaV0gPSBzb3VyY2Vbal07CisJfQorICAgIH0KKyAgICByZXR1cm4gdGFy
Z2V0OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wp
CisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJ0eXBlb2YgIiBvICIgPT09ICdmdW5jdGlv
biciKSkpCisqLworZnVuY3Rpb24gc2NfaXNQcm9jZWR1cmUobykgeworICAgIHJldHVybiAodHlw
ZW9mIG8gPT09ICJmdW5jdGlvbiIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
ZnVuY3Rpb24gc2NfYXBwbHkocHJvYykgeworICAgIHZhciBhcmdzID0gbmV3IEFycmF5KCk7Cisg
ICAgLy8gZmlyc3QgcGFydCBvZiBhcmd1bWVudHMgYXJlIG5vdCBpbiBsaXN0LWZvcm0uCisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKQorCWFyZ3MucHVz
aChhcmd1bWVudHNbaV0pOworICAgIHZhciBsID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgg
LSAxXTsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWFyZ3MucHVzaChsLmNhcik7CisJbCA9
IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gcHJvYy5hcHBseShudWxsLCBhcmdzKTsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21hcChwcm9jLCBsMSkgewor
ICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorCXJldHVybiBudWxsOworICAgIC8vIGVsc2UKKyAg
ICB2YXIgbmJBcHBseUFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIgYXBwbHlB
cmdzID0gbmV3IEFycmF5KG5iQXBwbHlBcmdzKTsKKyAgICB2YXIgcmV2cmVzID0gbnVsbDsKKyAg
ICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IG5iQXBwbHlBcmdz
OyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXS5jYXI7CisJICAg
IGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNkcjsKKwl9CisJcmV2cmVzID0g
c2NfY29ucyhwcm9jLmFwcGx5KG51bGwsIGFwcGx5QXJncyksIHJldnJlcyk7CisgICAgfQorICAg
IHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXZyZXMsIG51bGwpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWFwQmFuZyhwcm9jLCBsMSkgeworICAg
IGlmIChsMSA9PT0gdW5kZWZpbmVkKQorCXJldHVybiBudWxsOworICAgIC8vIGVsc2UKKyAgICB2
YXIgbDFfb3JpZyA9IGwxOworICAgIHZhciBuYkFwcGx5QXJncyA9IGFyZ3VtZW50cy5sZW5ndGgg
LSAxOworICAgIHZhciBhcHBseUFyZ3MgPSBuZXcgQXJyYXkobmJBcHBseUFyZ3MpOworICAgIHdo
aWxlIChsMSAhPT0gbnVsbCkgeworCXZhciB0bXAgPSBsMTsKKwlmb3IgKHZhciBpID0gMDsgaSA8
IG5iQXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kgKyAx
XS5jYXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNkcjsKKwl9
CisJdG1wLmNhciA9IHByb2MuYXBwbHkobnVsbCwgYXBwbHlBcmdzKTsKKyAgICB9CisgICAgcmV0
dXJuIGwxX29yaWc7Cit9CisgICAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0
aW9uIHNjX2ZvckVhY2gocHJvYywgbDEpIHsKKyAgICBpZiAobDEgPT09IHVuZGVmaW5lZCkKKwly
ZXR1cm4gdW5kZWZpbmVkOworICAgIC8vIGVsc2UKKyAgICB2YXIgbmJBcHBseUFyZ3MgPSBhcmd1
bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5KG5iQXBwbHlB
cmdzKTsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IG5i
QXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXS5j
YXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNkcjsKKwl9CisJ
cHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpOworICAgIH0KKyAgICAvLyBhZGQgcmV0dXJuIHNv
IEZGIGRvZXMgbm90IGNvbXBsYWluLgorICAgIHJldHVybiB1bmRlZmluZWQ7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19maWx0ZXIocHJvYywgbDEpIHsKKyAg
ICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15OworICAg
IHdoaWxlIChsMSAhPT0gbnVsbCkgeworCWlmIChwcm9jKGwxLmNhcikgIT09IGZhbHNlKSB7CisJ
ICAgIHRhaWwuY2RyID0gc2NfY29ucyhsMS5jYXIsIG51bGwpOworCSAgICB0YWlsID0gdGFpbC5j
ZHI7CisJfQorCWwxID0gbDEuY2RyOworICAgIH0KKyAgICByZXR1cm4gZHVtbXkuY2RyOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZmlsdGVyQmFuZyhwcm9j
LCBsMSkgeworICAgIHZhciBoZWFkID0gc2NfY29ucygiZHVtbXkiLCBsMSk7CisgICAgdmFyIGl0
ID0gaGVhZDsKKyAgICB2YXIgbmV4dCA9IGwxOworICAgIHdoaWxlIChuZXh0ICE9PSBudWxsKSB7
CisgICAgICAgIGlmIChwcm9jKG5leHQuY2FyKSAhPT0gZmFsc2UpIHsKKwkgICAgaXQuY2RyID0g
bmV4dAorCSAgICBpdCA9IG5leHQ7CisJfQorCW5leHQgPSBuZXh0LmNkcjsKKyAgICB9CisgICAg
aXQuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gaGVhZC5jZHI7Cit9CisKK2Z1bmN0aW9uIHNjX2Zp
bHRlck1hcDEocHJvYywgbDEpIHsKKyAgICB2YXIgcmV2cmVzID0gbnVsbDsKKyAgICB3aGlsZSAo
bDEgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHByb2MobDEuY2FyKQorICAgICAgICBp
ZiAodG1wICE9PSBmYWxzZSkgcmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7CisgICAgICAg
IGwxID0gbDEuY2RyOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2ZXJzZUFwcGVuZEJhbmcocmV2
cmVzLCBudWxsKTsKK30KK2Z1bmN0aW9uIHNjX2ZpbHRlck1hcDIocHJvYywgbDEsIGwyKSB7Cisg
ICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisgICAgICAg
IHZhciB0bXAgPSBwcm9jKGwxLmNhciwgbDIuY2FyKTsKKyAgICAgICAgaWYodG1wICE9PSBmYWxz
ZSkgcmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7CisJbDEgPSBsMS5jZHI7CisJbDIgPSBs
Mi5jZHIKKyAgICB9CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJldnJlcywgbnVs
bCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19maWx0ZXJN
YXAocHJvYywgbDEsIGwyLCBsMykgeworICAgIGlmIChsMiA9PT0gdW5kZWZpbmVkKQorCXJldHVy
biBzY19maWx0ZXJNYXAxKHByb2MsIGwxKTsKKyAgICBlbHNlIGlmIChsMyA9PT0gdW5kZWZpbmVk
KQorCXJldHVybiBzY19maWx0ZXJNYXAyKHByb2MsIGwxLCBsMik7CisgICAgLy8gZWxzZQorICAg
IHZhciBuYkFwcGx5QXJncyA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOworICAgIHZhciBhcHBseUFy
Z3MgPSBuZXcgQXJyYXkobmJBcHBseUFyZ3MpOworICAgIHZhciByZXZyZXMgPSBudWxsOworICAg
IHdoaWxlIChsMSAhPT0gbnVsbCkgeworCWZvciAodmFyIGkgPSAwOyBpIDwgbmJBcHBseUFyZ3M7
IGkrKykgeworCSAgICBhcHBseUFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDFdLmNhcjsKKwkgICAg
YXJndW1lbnRzW2kgKyAxXSA9IGFyZ3VtZW50c1tpICsgMV0uY2RyOworCX0KKwl2YXIgdG1wID0g
cHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpOworCWlmKHRtcCAhPT0gZmFsc2UpIHJldnJlcyA9
IHNjX2NvbnModG1wLCByZXZyZXMpOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2ZXJzZUFwcGVu
ZEJhbmcocmV2cmVzLCBudWxsKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX2FueShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hp
bGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHByb2MobC5jYXIpOworICAgICAg
ICBpZih0bXAgIT09IGZhbHNlKSByZXR1cm4gdG1wOworCWwgPSBsLmNkcjsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgYW55PykKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDIgInNjX2FueSgiIHByb2MgIiwiIGwgIikgIT09IGZhbHNlIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2FueVByZWQocHJvYywgbCkgeworICAgIHJldHVybiBzY19hbnkocHJv
YywgbCkhPT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlv
biBzY19ldmVyeShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgdmFyIHRt
cCA9IHRydWU7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgdG1wID0gcHJvYyhs
LmNhcik7CisgICAgICAgIGlmICh0bXAgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CisJbCA9IGwu
Y2RyOworICAgIH0KKyAgICByZXR1cm4gdG1wOworfQorCisvKioqIE1FVEEgKChleHBvcnQgZXZl
cnk/KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAic2NfZXZlcnkoIiBwcm9jICIsIiBs
ICIpICE9PSBmYWxzZSIpKSkKKyovCitmdW5jdGlvbiBzY19ldmVyeVByZWQocHJvYywgbCkgewor
ICAgIHZhciB0bXAgPSBzY19ldmVyeShwcm9jLCBsKTsKKyAgICBpZiAodG1wICE9PSBmYWxzZSkg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiKCkiKSkpCisqLworZnVuY3Rpb24g
c2NfZm9yY2UobykgeworICAgIHJldHVybiBvKCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19tYWtlUHJvbWlzZShwcm9jKSB7CisgICAgdmFyIGlzUmVzdWx0
UmVhZHkgPSBmYWxzZTsKKyAgICB2YXIgcmVzdWx0ID0gdW5kZWZpbmVkOworICAgIHJldHVybiBm
dW5jdGlvbigpIHsKKwlpZiAoIWlzUmVzdWx0UmVhZHkpIHsKKwkgICAgdmFyIHRtcCA9IHByb2Mo
KTsKKwkgICAgaWYgKCFpc1Jlc3VsdFJlYWR5KSB7CisJCWlzUmVzdWx0UmVhZHkgPSB0cnVlOwor
CQlyZXN1bHQgPSB0bXA7CisJICAgIH0KKwl9CisJcmV0dXJuIHJlc3VsdDsKKyAgICB9OworfQor
CitmdW5jdGlvbiBzY19WYWx1ZXModmFsdWVzKSB7CisgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlICh2YWx1
ZXMpKSkKKyovCitmdW5jdGlvbiBzY192YWx1ZXMoKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5n
dGggPT09IDEpCisJcmV0dXJuIGFyZ3VtZW50c1swXTsKKyAgICBlbHNlCisJcmV0dXJuIG5ldyBz
Y19WYWx1ZXMoYXJndW1lbnRzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX2NhbGxXaXRoVmFsdWVzKHByb2R1Y2VyLCBjb25zdW1lcikgeworICAgIHZhciBw
cm9kdWNlZCA9IHByb2R1Y2VyKCk7CisgICAgaWYgKHByb2R1Y2VkIGluc3RhbmNlb2Ygc2NfVmFs
dWVzKQorCXJldHVybiBjb25zdW1lci5hcHBseShudWxsLCBwcm9kdWNlZC52YWx1ZXMpOworICAg
IGVsc2UKKwlyZXR1cm4gY29uc3VtZXIocHJvZHVjZWQpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZHluYW1pY1dpbmQoYmVmb3JlLCB0aHVuaywgYWZ0ZXIp
IHsKKyAgICBiZWZvcmUoKTsKKyAgICB0cnkgeworCXZhciByZXMgPSB0aHVuaygpOworCXJldHVy
biByZXM7CisgICAgfSBmaW5hbGx5IHsKKwlhZnRlcigpOworICAgIH0KK30KKworCisvLyBUT0RP
OiBldmFsL3NjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQvbnVsbC1lbnZpcm9ubWVudC9pbnRlcmFj
dGlvbi1lbnZpcm9ubWVudAorCisvLyBMSU1JVEFUSU9OOiAnbG9hZCcgZG9lc24ndCBleGlzdCB3
aXRob3V0IGZpbGVzLgorLy8gTElNSVRBVElPTjogdHJhbnNjcmlwdC1vbi90cmFuc2NyaXB0LW9m
ZiBkb2Vzbid0IGV4aXN0IHdpdGhvdXQgZmlsZXMuCisKKworZnVuY3Rpb24gc2NfU3RydWN0KG5h
bWUpIHsKKyAgICB0aGlzLm5hbWUgPSBuYW1lOworfQorc2NfU3RydWN0LnByb3RvdHlwZS5zY190
b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIiM8c3RydWN0IiArIHNj
X2hhc2godGhpcykgKyAiPiI7Cit9Oworc2NfU3RydWN0LnByb3RvdHlwZS5zY190b1dyaXRlU3Ry
aW5nID0gc2NfU3RydWN0LnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJpbmc7CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIm5ldyBzY19TdHJ1
Y3QoIiBuYW1lICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX21ha2VTdHJ1Y3QobmFtZSkgeworICAg
IHJldHVybiBuZXcgc2NfU3RydWN0KG5hbWUpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAi
IGluc3RhbmNlb2Ygc2NfU3RydWN0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RydWN0KG8pIHsK
KyAgICByZXR1cm4gKG8gaW5zdGFuY2VvZiBzY19TdHJ1Y3QpOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAyICIoIiAxICIgaW5zdGFuY2VvZiBzY19TdHJ1Y3QpICYmICggIiAxICIubmFtZSA9PT0g
IiAwICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RydWN0TmFtZWQobmFtZSwgcykgeworICAg
IHJldHVybiAoKHMgaW5zdGFuY2VvZiBzY19TdHJ1Y3QpICYmIChzLm5hbWUgPT09IG5hbWUpKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IHN0cnVjdC1maWVsZCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChob2xlIDMgMCAiWyIgMiAiXSIpKSkKKyovCitmdW5jdGlvbiBzY19nZXRTdHJ1Y3RGaWVs
ZChzLCBuYW1lLCBmaWVsZCkgeworICAgIHJldHVybiBzW2ZpZWxkXTsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0IHN0cnVjdC1maWVsZC1zZXQhKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUg
NCAwICJbIiAyICJdID0gIiAzKSkpCisqLworZnVuY3Rpb24gc2Nfc2V0U3RydWN0RmllbGRCYW5n
KHMsIG5hbWUsIGZpZWxkLCB2YWwpIHsKKyAgICBzW2ZpZWxkXSA9IHZhbDsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAifiIpKSkKKyov
CitmdW5jdGlvbiBzY19iaXROb3QoeCkgeworICAgIHJldHVybiB+eDsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiJiIpKSkKKyov
CitmdW5jdGlvbiBzY19iaXRBbmQoeCwgeSkgeworICAgIHJldHVybiB4ICYgeTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAifCIp
KSkKKyovCitmdW5jdGlvbiBzY19iaXRPcih4LCB5KSB7CisgICAgcmV0dXJuIHggfCB5OworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAy
ICJeIikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFhvcih4LCB5KSB7CisgICAgcmV0dXJuIHggXiB5
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5m
aXggMiAyICI8PCIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRMc2goeCwgeSkgeworICAgIHJldHVy
biB4IDw8IHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChpbmZpeCAyIDIgIj4+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFJzaCh4LCB5KSB7Cisg
ICAgcmV0dXJuIHggPj4geTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj4+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFVyc2go
eCwgeSkgeworICAgIHJldHVybiB4ID4+PiB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQganMt
ZmllbGQganMtcHJvcGVydHkpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIG8gIlsiIGZp
ZWxkICJdIikpKQorKi8KK2Z1bmN0aW9uIHNjX2pzRmllbGQobywgZmllbGQpIHsKKyAgICByZXR1
cm4gb1tmaWVsZF07Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBqcy1maWVsZC1zZXQhIGpzLXBy
b3BlcnR5LXNldCEpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIG8gIlsiIGZpZWxkICJd
ID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY19zZXRKc0ZpZWxkQmFuZyhvLCBmaWVsZCwgdmFs
KSB7CisgICAgcmV0dXJuIG9bZmllbGRdID0gdmFsOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
anMtZmllbGQtZGVsZXRlISBqcy1wcm9wZXJ0eS1kZWxldGUhKQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMiAiZGVsZXRlIiBvICJbIiBmaWVsZCAiXSIpKSkKKyovCitmdW5jdGlvbiBzY19k
ZWxldGVKc0ZpZWxkQmFuZyhvLCBmaWVsZCkgeworICAgIGRlbGV0ZSBvW2ZpZWxkXTsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGpzQ2FsbCkpKQor
Ki8KK2Z1bmN0aW9uIHNjX2pzQ2FsbChvLCBmdW4pIHsKKyAgICB2YXIgYXJncyA9IG5ldyBBcnJh
eSgpOworICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWFy
Z3NbaS0yXSA9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gZnVuLmFwcGx5KG8sIGFyZ3MpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoanNNZXRo
b2RDYWxsKSkpCisqLworZnVuY3Rpb24gc2NfanNNZXRob2RDYWxsKG8sIGZpZWxkKSB7CisgICAg
dmFyIGFyZ3MgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykKKwlhcmdzW2ktMl0gPSBhcmd1bWVudHNbaV07CisgICAgcmV0dXJuIG9b
ZmllbGRdLmFwcGx5KG8sIGFyZ3MpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgbmV3IGpzLW5l
dykKKyAgICAgICAgICAgKHBlZXBob2xlIChqc05ldykpKQorKi8KK2Z1bmN0aW9uIHNjX2pzTmV3
KGMpIHsKKyAgICB2YXIgZXZhbFN0ciA9ICJuZXcgYygiOworICAgIGV2YWxTdHIgKz1hcmd1bWVu
dHMubGVuZ3RoID4gMT8gImFyZ3VtZW50c1sxXSI6ICIiOworICAgIGZvciAodmFyIGkgPSAyOyBp
IDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWV2YWxTdHIgKz0gIiwgYXJndW1lbnRzWyIgKyBp
ICsgIl0iOworICAgIGV2YWxTdHIgKz0iKSI7CisgICAgcmV0dXJuIGV2YWwoZXZhbFN0cik7Cit9
ICAgIAorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gUmVnRXhwID09PT09PT09PT09PT09
PT09PT09CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cChy
ZSkgeworICAgIHJldHVybiBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cE1hdGNoKHJl
LCBzKSB7CisgICAgdmFyIHJlZyA9IChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPyByZSA6IHNjX3By
ZWdleHAocmUpOworICAgIHZhciB0bXAgPSByZWcuZXhlYyhzY19zdHJpbmcyanNzdHJpbmcocykp
OworICAgIAorICAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHZh
ciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSB0bXAubGVuZ3RoLTE7IGkgPj0gMDsgaS0t
KSB7CisJaWYgKHRtcFtpXSAhPT0gbnVsbCkgeworCSAgICByZXMgPSBzY19jb25zKHNjX2pzc3Ry
aW5nMnN0cmluZyh0bXBbaV0pLCByZXMpOworCX0gZWxzZSB7CisJICAgIHJlcyA9IHNjX2NvbnMo
ZmFsc2UsIHJlcyk7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorICAgCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cFJlcGxhY2UocmUsIHMxLCBz
MikgeworICAgdmFyIHJlZzsKKyAgIHZhciBqc3MxID0gc2Nfc3RyaW5nMmpzc3RyaW5nKHMxKTsK
KyAgIHZhciBqc3MyID0gc2Nfc3RyaW5nMmpzc3RyaW5nKHMyKTsKKworICAgaWYgKHJlIGluc3Rh
bmNlb2YgUmVnRXhwKSB7CisgICAgICAgaWYgKHJlLmdsb2JhbCkKKwkgICByZWcgPSByZTsKKyAg
ICAgICBlbHNlCisJICAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3VyY2UpOworICAgfSBlbHNlIHsK
KyAgICAgICByZWcgPSBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkpOworICAgfQor
CisgICByZXR1cm4ganNzMS5yZXBsYWNlKHJlZywganNzMik7Cit9CisgICAKKy8qKiogTUVUQSAo
KGV4cG9ydCBwcmVnZXhwLXJlcGxhY2UqKSkgKi8KK2Z1bmN0aW9uIHNjX3ByZWdleHBSZXBsYWNl
QWxsKHJlLCBzMSwgczIpIHsKKyAgIHZhciByZWc7CisgICB2YXIganNzMSA9IHNjX3N0cmluZzJq
c3N0cmluZyhzMSk7CisgICB2YXIganNzMiA9IHNjX3N0cmluZzJqc3N0cmluZyhzMik7CisKKyAg
IGlmIChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgaWYgKHJlLmdsb2JhbCkKKwkgIHJl
ZyA9IHJlOworICAgICAgZWxzZQorCSAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3VyY2UsICJnIik7
CisgICB9IGVsc2UgeworICAgICAgIHJlZyA9IG5ldyBSZWdFeHAoc2Nfc3RyaW5nMmpzc3RyaW5n
KHJlKSwgImciKTsKKyAgIH0KKworICAgcmV0dXJuIGpzczEucmVwbGFjZShyZWcsIGpzczIpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cFNwbGl0
KHJlLCBzKSB7CisgICB2YXIgcmVnID0gKChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPworCSAgICAg
IHJlIDoKKwkgICAgICBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkpKTsKKyAgIHZh
ciBqc3MgPSBzY19zdHJpbmcyanNzdHJpbmcocyk7CisgICB2YXIgdG1wID0ganNzLnNwbGl0KHJl
Zyk7CisKKyAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgICByZXR1cm4gc2Nf
dmVjdG9yMmxpc3QodG1wKTsKK30KKyAgIAorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKy8q
IE90aGVyIGxpYnJhcnkgc3R1ZmYgKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworCisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJNYXRoLmZs
b29yKE1hdGgucmFuZG9tKCkqIiAnbiAiKSIpKSkKKyovCitmdW5jdGlvbiBzY19yYW5kb20obikg
eworICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbik7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCBjdXJyZW50LWRhdGUpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAwICJu
ZXcgRGF0ZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2N1cnJlbnREYXRlKCkgeworICAgcmV0dXJu
IG5ldyBEYXRlKCk7Cit9CisKK2Z1bmN0aW9uIHNjX0hhc2h0YWJsZSgpIHsKK30KK3NjX0hhc2h0
YWJsZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIiN7JWhh
c2h0YWJsZX0iOworfTsKKy8vIHNjX3RvV3JpdGVTdHJpbmcgPT0gc2NfdG9EaXNwbGF5U3RyaW5n
ID09IHRvU3RyaW5nCisKK2Z1bmN0aW9uIHNjX0hhc2h0YWJsZUVsZW1lbnQoa2V5LCB2YWwpIHsK
KyAgICB0aGlzLmtleSA9IGtleTsKKyAgICB0aGlzLnZhbCA9IHZhbDsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMCAibmV3IHNjX0hhc2h0
YWJsZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX21ha2VIYXNodGFibGUoKSB7CisgICAgcmV0dXJu
IG5ldyBzY19IYXNodGFibGUoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX2hhc2h0YWJsZVB1dEJhbmcoaHQsIGtleSwgdmFsKSB7CisgICAgdmFyIGhhc2gg
PSBzY19oYXNoKGtleSk7CisgICAgaHRbaGFzaF0gPSBuZXcgc2NfSGFzaHRhYmxlRWxlbWVudChr
ZXksIHZhbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19o
YXNodGFibGVHZXQoaHQsIGtleSkgeworICAgIHZhciBoYXNoID0gc2NfaGFzaChrZXkpOworICAg
IGlmIChoYXNoIGluIGh0KQorCXJldHVybiBodFtoYXNoXS52YWw7CisgICAgZWxzZQorCXJldHVy
biBmYWxzZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2hh
c2h0YWJsZUZvckVhY2goaHQsIGYpIHsKKyAgICBmb3IgKHZhciB2IGluIGh0KSB7CisJaWYgKGh0
W3ZdIGluc3RhbmNlb2Ygc2NfSGFzaHRhYmxlRWxlbWVudCkKKwkgICAgZihodFt2XS5rZXksIGh0
W3ZdLnZhbCk7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgaGFzaHRhYmxlLWNvbnRh
aW5zPykKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgInNjX2hhc2goIiAxICIpIGluICIg
MCkpKQorKi8KK2Z1bmN0aW9uIHNjX2hhc2h0YWJsZUNvbnRhaW5zKGh0LCBrZXkpIHsKKyAgICB2
YXIgaGFzaCA9IHNjX2hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCBpbiBodCkKKwlyZXR1cm4gdHJ1
ZTsKKyAgICBlbHNlCisJcmV0dXJuIGZhbHNlOworfQorCit2YXIgU0NfSEFTSF9DT1VOVEVSID0g
MDsKKworZnVuY3Rpb24gc2NfaGFzaChvKSB7CisgICAgaWYgKG8gPT09IG51bGwpCisJcmV0dXJu
ICJudWxsIjsKKyAgICBlbHNlIGlmIChvID09PSB1bmRlZmluZWQpCisJcmV0dXJuICJ1bmRlZmlu
ZWQiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisJcmV0dXJuICJ0cnVlIjsKKyAgICBlbHNl
IGlmIChvID09PSBmYWxzZSkKKwlyZXR1cm4gImZhbHNlIjsKKyAgICBlbHNlIGlmICh0eXBlb2Yg
byA9PT0gIm51bWJlciIpCisJcmV0dXJuICJudW0tIiArIG87CisgICAgZWxzZSBpZiAodHlwZW9m
IG8gPT09ICJzdHJpbmciKQorCXJldHVybiAianNzdHItIiArIG87CisgICAgZWxzZSBpZiAoby5z
Y19nZXRIYXNoKQorCXJldHVybiBvLnNjX2dldEhhc2goKTsKKyAgICBlbHNlCisJcmV0dXJuIHNj
X2NvdW50ZXJIYXNoLmNhbGwobyk7Cit9CitmdW5jdGlvbiBzY19jb3VudGVySGFzaCgpIHsKKyAg
ICBpZiAoIXRoaXMuc2NfaGFzaCkgeworCXRoaXMuc2NfaGFzaCA9ICJoYXNoLSIgKyBTQ19IQVNI
X0NPVU5URVI7CisJU0NfSEFTSF9DT1VOVEVSKys7CisgICAgfQorICAgIHJldHVybiB0aGlzLnNj
X2hhc2g7Cit9CisKK2Z1bmN0aW9uIHNjX1RyYW1wb2xpbmUoYXJncywgbWF4VGFpbENhbGxzKSB7
CisgICAgdGhpc1snX190cmFtcG9saW5lIHJldHVybl9fJ10gPSB0cnVlOworICAgIHRoaXMuYXJn
cyA9IGFyZ3M7CisgICAgdGhpcy5NQVhfVEFJTF9DQUxMcyA9IG1heFRhaWxDYWxsczsKK30KKy8v
IFRPRE86IGNhbGwvY2Mgc3R1ZmYKK3NjX1RyYW1wb2xpbmUucHJvdG90eXBlLnJlc3RhcnQgPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgbyA9IHRoaXM7CisgICAgd2hpbGUgKHRydWUpIHsKKwkvLyBz
ZXQgYm90aCBnbG9iYWxzLgorCVNDX1RBSUxfT0JKRUNULmNhbGxzID0gby5NQVhfVEFJTF9DQUxM
cy0xOworCXZhciBmdW4gPSBvLmFyZ3MuY2FsbGVlOworCXZhciByZXMgPSBmdW4uYXBwbHkoU0Nf
VEFJTF9PQkpFQ1QsIG8uYXJncyk7CisJaWYgKHJlcyBpbnN0YW5jZW9mIHNjX1RyYW1wb2xpbmUp
CisJICAgIG8gPSByZXM7CisJZWxzZQorCSAgICByZXR1cm4gcmVzOworICAgIH0KK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IGJpbmQtZXhpdC1sYW1iZGEpKSAqLworZnVuY3Rpb24gc2NfYmluZEV4
aXRMYW1iZGEocHJvYykgeworICAgIHZhciBlc2NhcGVfb2JqID0gbmV3IHNjX0JpbmRFeGl0RXhj
ZXB0aW9uKCk7CisgICAgdmFyIGVzY2FwZSA9IGZ1bmN0aW9uKHJlcykgeworCWVzY2FwZV9vYmou
cmVzID0gcmVzOworCXRocm93IGVzY2FwZV9vYmo7CisgICAgfTsKKyAgICB0cnkgeworCXJldHVy
biBwcm9jKGVzY2FwZSk7CisgICAgfSBjYXRjaChlKSB7CisJaWYgKGUgPT09IGVzY2FwZV9vYmop
IHsKKwkgICAgcmV0dXJuIGUucmVzOworCX0KKwl0aHJvdyBlOworICAgIH0KK30KK2Z1bmN0aW9u
IHNjX0JpbmRFeGl0RXhjZXB0aW9uKCkgeworICAgIHRoaXMuX2ludGVybmFsRXhjZXB0aW9uID0g
dHJ1ZTsKK30KKwordmFyIFNDX1NDTTJKU19HTE9CQUxTID0gbmV3IE9iamVjdCgpOworCisvLyBk
ZWZhdWx0IHRhaWwtY2FsbCBkZXB0aC4KKy8vIG5vcm1hbGx5IHRoZSBwcm9ncmFtIHNob3VsZCBz
ZXQgaXQgYWdhaW4uIGJ1dCBqdXN0IGluIGNhc2UuLi4KK3ZhciBTQ19UQUlMX09CSkVDVCA9IG5l
dyBPYmplY3QoKTsKK1NDX1NDTTJKU19HTE9CQUxTLlRBSUxfT0JKRUNUID0gU0NfVEFJTF9PQkpF
Q1Q7CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gSS9PID09PT09PT09PT09PT09PT09PT09
PT09CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfRU9GKCkgeworfQordmFyIFNDX0VP
Rl9PQkpFQ1QgPSBuZXcgc2NfRU9GKCk7CisKK2Z1bmN0aW9uIHNjX1BvcnQoKSB7Cit9CisKKy8q
IC0tLS0tLS0tLS0tLS0tLSBJbnB1dCBwb3J0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfSW5wdXRQb3J0KCkgeworfQorc2NfSW5wdXRQb3J0
LnByb3RvdHlwZSA9IG5ldyBzY19Qb3J0KCk7CisKK3NjX0lucHV0UG9ydC5wcm90b3R5cGUucGVl
a0NoYXIgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoISgicGVla2VkIiBpbiB0aGlzKSkKKwl0aGlz
LnBlZWtlZCA9IHRoaXMuZ2V0TmV4dENoYXIoKTsKKyAgICByZXR1cm4gdGhpcy5wZWVrZWQ7Cit9
CitzY19JbnB1dFBvcnQucHJvdG90eXBlLnJlYWRDaGFyID0gZnVuY3Rpb24oKSB7CisgICAgdmFy
IHRtcCA9IHRoaXMucGVla0NoYXIoKTsKKyAgICBkZWxldGUgdGhpcy5wZWVrZWQ7CisgICAgcmV0
dXJuIHRtcDsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5cGUuaXNDaGFyUmVhZHkgPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5cGUuY2xvc2Ug
PSBmdW5jdGlvbigpIHsKKyAgICAvLyBkbyBub3RoaW5nCit9CisKKy8qIC4uLi4uLi4uLi4uLi4u
IFN0cmluZyBwb3J0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uKi8KK2Z1bmN0aW9uIHNjX0Vy
cm9ySW5wdXRQb3J0KCkgeworfTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZSA9IG5ldyBz
Y19JbnB1dFBvcnQoKTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZS5nZXROZXh0Q2hhciA9
IGZ1bmN0aW9uKCkgeworICAgIHRocm93ICJjYW4ndCByZWFkIGZyb20gZXJyb3ItcG9ydC4iOwor
fTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZS5pc0NoYXJSZWFkeSA9IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiBmYWxzZTsKK307CisgICAgCisKKy8qIC4uLi4uLi4uLi4uLi4uIFN0cmlu
ZyBwb3J0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uKi8KKworZnVuY3Rpb24gc2NfU3RyaW5n
SW5wdXRQb3J0KGpzU3RyKSB7CisgICAgLy8gd2UgYXJlIGdvaW5nIHRvIGRvIHNvbWUgY2hhckF0
cyBvbiB0aGUgc3RyLgorICAgIC8vIGluc3RlYWQgb2YgcmVjcmVhdGluZyBhbGwgdGhlIHRpbWUg
YSBTdHJpbmctb2JqZWN0LCB3ZQorICAgIC8vIGNyZWF0ZSBvbmUgaW4gdGhlIGJlZ2lubmluZy4g
KG5vdCBzdXJlLCBpZiB0aGlzIGlzIHJlYWxseSBhbiBvcHRpbSkKKyAgICB0aGlzLnN0ciA9IG5l
dyBTdHJpbmcoanNTdHIpOworICAgIHRoaXMucG9zID0gMDsKK30KK3NjX1N0cmluZ0lucHV0UG9y
dC5wcm90b3R5cGUgPSBuZXcgc2NfSW5wdXRQb3J0KCk7CitzY19TdHJpbmdJbnB1dFBvcnQucHJv
dG90eXBlLmdldE5leHRDaGFyID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMucG9zID49IHRo
aXMuc3RyLmxlbmd0aCkKKwlyZXR1cm4gU0NfRU9GX09CSkVDVDsKKyAgICByZXR1cm4gdGhpcy5z
dHIuY2hhckF0KHRoaXMucG9zKyspOworfTsKKworLyogLS0tLS0tLS0tLS0tLSBSZWFkIGFuZCBv
dGhlciBsaWItZnVucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitmdW5jdGlv
biBzY19Ub2tlbih0eXBlLCB2YWwsIHBvcykgeworICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAg
dGhpcy52YWwgPSB2YWw7CisgICAgdGhpcy5wb3MgPSBwb3M7Cit9CitzY19Ub2tlbi5FT0YgPSAw
LypFT0YqLzsKK3NjX1Rva2VuLk9QRU5fUEFSID0gMS8qT1BFTl9QQVIqLzsKK3NjX1Rva2VuLkNM
T1NFX1BBUiA9IDIvKkNMT1NFX1BBUiovOworc2NfVG9rZW4uT1BFTl9CUkFDRSA9IDMvKk9QRU5f
QlJBQ0UqLzsKK3NjX1Rva2VuLkNMT1NFX0JSQUNFID0gNC8qQ0xPU0VfQlJBQ0UqLzsKK3NjX1Rv
a2VuLk9QRU5fQlJBQ0tFVCA9IDUvKk9QRU5fQlJBQ0tFVCovOworc2NfVG9rZW4uQ0xPU0VfQlJB
Q0tFVCA9IDYvKkNMT1NFX0JSQUNLRVQqLzsKK3NjX1Rva2VuLldISVRFU1BBQ0UgPSA3LypXSElU
RVNQQUNFKi87CitzY19Ub2tlbi5RVU9URSA9IDgvKlFVT1RFKi87CitzY19Ub2tlbi5JRCA9IDkv
KklEKi87CitzY19Ub2tlbi5ET1QgPSAxMC8qRE9UKi87CitzY19Ub2tlbi5TVFJJTkcgPSAxMS8q
U1RSSU5HKi87CitzY19Ub2tlbi5OVU1CRVIgPSAxMi8qTlVNQkVSKi87CitzY19Ub2tlbi5FUlJP
UiA9IDEzLypFUlJPUiovOworc2NfVG9rZW4uVkVDVE9SX0JFR0lOID0gMTQvKlZFQ1RPUl9CRUdJ
TiovOworc2NfVG9rZW4uVFJVRSA9IDE1LypUUlVFKi87CitzY19Ub2tlbi5GQUxTRSA9IDE2LypG
QUxTRSovOworc2NfVG9rZW4uVU5TUEVDSUZJRUQgPSAxNy8qVU5TUEVDSUZJRUQqLzsKK3NjX1Rv
a2VuLlJFRkVSRU5DRSA9IDE4LypSRUZFUkVOQ0UqLzsKK3NjX1Rva2VuLlNUT1JFID0gMTkvKlNU
T1JFKi87CitzY19Ub2tlbi5DSEFSID0gMjAvKkNIQVIqLzsKKwordmFyIFNDX0lEX0NMQVNTID0g
U0NfTE9XRVJfQ0xBU1MgKyBTQ19VUFBFUl9DTEFTUyArICIhJCUqKy0uLzo8PT4/QF5ffiI7Citm
dW5jdGlvbiBzY19Ub2tlbml6ZXIocG9ydCkgeworICAgIHRoaXMucG9ydCA9IHBvcnQ7Cit9Citz
Y19Ub2tlbml6ZXIucHJvdG90eXBlLnBlZWtUb2tlbiA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0
aGlzLnBlZWtlZCkKKwlyZXR1cm4gdGhpcy5wZWVrZWQ7CisgICAgdmFyIG5ld1Rva2VuID0gdGhp
cy5uZXh0VG9rZW4oKTsKKyAgICB0aGlzLnBlZWtlZCA9IG5ld1Rva2VuOworICAgIHJldHVybiBu
ZXdUb2tlbjsKK307CitzY19Ub2tlbml6ZXIucHJvdG90eXBlLnJlYWRUb2tlbiA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciB0bXAgPSB0aGlzLnBlZWtUb2tlbigpOworICAgIGRlbGV0ZSB0aGlzLnBl
ZWtlZDsKKyAgICByZXR1cm4gdG1wOworfTsKK3NjX1Rva2VuaXplci5wcm90b3R5cGUubmV4dFRv
a2VuID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7CisgICAgCisgICAg
ZnVuY3Rpb24gaXNOdW1iZXJDaGFyKGMpIHsKKwlyZXR1cm4gKGMgPj0gIjAiICYmIGMgPD0gIjki
KTsKKyAgICB9OworICAgIGZ1bmN0aW9uIGlzSWRPck51bWJlckNoYXIoYykgeworCXJldHVybiBT
Q19JRF9DTEFTUy5pbmRleE9mKGMpICE9IC0xIHx8IC8vIElELWNoYXIKKwkgICAgKGMgPj0gIjAi
ICYmIGMgPD0gIjkiKTsKKyAgICB9CisgICAgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGMpIHsKKwly
ZXR1cm4gYyA9PT0gIiAiIHx8IGMgPT09ICJcciIgfHwgYyA9PT0gIlxuIiB8fCBjID09PSAiXHQi
IHx8IGMgPT09ICJcZiI7CisgICAgfTsKKyAgICBmdW5jdGlvbiBpc1doaXRlc3BhY2VPckVPRihj
KSB7CisJcmV0dXJuIGlzV2hpdGVzcGFjZShjKSB8fCBjID09PSBTQ19FT0ZfT0JKRUNUOworICAg
IH07CisKKyAgICBmdW5jdGlvbiByZWFkU3RyaW5nKCkgeworCXJlcyA9ICIiOworCXdoaWxlICh0
cnVlKSB7CisJICAgIHZhciBjID0gcG9ydC5yZWFkQ2hhcigpOworCSAgICBzd2l0Y2ggKGMpIHsK
KwkgICAgY2FzZSAnIic6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTEvKlNUUklORyovLCByZXMp
OworCSAgICBjYXNlICJcXCI6CisJCXZhciB0bXAgPSBwb3J0LnJlYWRDaGFyKCk7CisJCXN3aXRj
aCAodG1wKSB7CisJCWNhc2UgJzAnOiByZXMgKz0gIlwwIjsgYnJlYWs7CisJCWNhc2UgJ2EnOiBy
ZXMgKz0gIlxhIjsgYnJlYWs7CisJCWNhc2UgJ2InOiByZXMgKz0gIlxiIjsgYnJlYWs7CisJCWNh
c2UgJ2YnOiByZXMgKz0gIlxmIjsgYnJlYWs7CisJCWNhc2UgJ24nOiByZXMgKz0gIlxuIjsgYnJl
YWs7CisJCWNhc2UgJ3InOiByZXMgKz0gIlxyIjsgYnJlYWs7CisJCWNhc2UgJ3QnOiByZXMgKz0g
Ilx0IjsgYnJlYWs7CisJCWNhc2UgJ3YnOiByZXMgKz0gIlx2IjsgYnJlYWs7CisJCWNhc2UgJyIn
OiByZXMgKz0gJyInOyBicmVhazsKKwkJY2FzZSAnXFwnOiByZXMgKz0gJ1xcJzsgYnJlYWs7CisJ
CWNhc2UgJ3gnOgorCQkgICAgLyogaGV4YS1udW1iZXIgKi8KKwkJICAgIHZhciBuYiA9IDA7CisJ
CSAgICB3aGlsZSAodHJ1ZSkgeworCQkJdmFyIGhleEMgPSBwb3J0LnBlZWtDaGFyKCk7CisJCQlp
ZiAoaGV4QyA+PSAnMCcgJiYgaGV4QyA8PSAnOScpIHsKKwkJCSAgICBwb3J0LnJlYWRDaGFyKCk7
CisJCQkgICAgbmIgPSBuYiAqIDE2ICsgaGV4Qy5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2Rl
QXQoMCk7CisJCQl9IGVsc2UgaWYgKGhleEMgPj0gJ2EnICYmIGhleEMgPD0gJ2YnKSB7CisJCQkg
ICAgcG9ydC5yZWFkQ2hhcigpOworCQkJICAgIG5iID0gbmIgKiAxNiArIGhleEMuY2hhckNvZGVB
dCgwKSAtICdhJy5jaGFyQ29kZUF0KDApOworCQkJfSBlbHNlIGlmIChoZXhDID49ICdBJyAmJiBo
ZXhDIDw9ICdGJykgeworCQkJICAgIHBvcnQucmVhZENoYXIoKTsKKwkJCSAgICBuYiA9IG5iICog
MTYgKyBoZXhDLmNoYXJDb2RlQXQoMCkgLSAnQScuY2hhckNvZGVBdCgwKTsKKwkJCX0gZWxzZSB7
CisJCQkgICAgLy8gbmV4dCBjaGFyIGlzbid0IHBhcnQgb2YgaGV4LgorCQkJICAgIHJlcyArPSBT
dHJpbmcuZnJvbUNoYXJDb2RlKG5iKTsKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJICAgIH0KKwkJ
ICAgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgICAgaWYgKHRtcCA9PT0gU0NfRU9GX09CSkVDVCkg
eworCQkJcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xvc2VkIHN0cmluZy1s
aXRlcmFsIiArIHJlcyk7CisJCSAgICB9CisJCSAgICByZXMgKz0gdG1wOworCQl9CisJCWJyZWFr
OworCSAgICBkZWZhdWx0OgorCQlpZiAoYyA9PT0gU0NfRU9GX09CSkVDVCkgeworCQkgICAgcmV0
dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xvc2VkIHN0cmluZy1saXRlcmFsIiAr
IHJlcyk7CisJCX0KKwkJcmVzICs9IGM7CisJICAgIH0KKwl9CisgICAgfTsKKyAgICBmdW5jdGlv
biByZWFkSWRPck51bWJlcihmaXJzdENoYXIpIHsKKwl2YXIgcmVzID0gZmlyc3RDaGFyOworCXdo
aWxlIChpc0lkT3JOdW1iZXJDaGFyKHBvcnQucGVla0NoYXIoKSkpCisJICAgIHJlcyArPSBwb3J0
LnJlYWRDaGFyKCk7CisJaWYgKGlzTmFOKHJlcykpCisJICAgIHJldHVybiBuZXcgc2NfVG9rZW4o
OS8qSUQqLywgcmVzKTsKKwllbHNlCisJICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTIvKk5VTUJF
UiovLCByZXMgLSAwKTsKKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIHNraXBXaGl0ZXNwYWNl
QW5kQ29tbWVudHMoKSB7CisJdmFyIGRvbmUgPSBmYWxzZTsKKwl3aGlsZSAoIWRvbmUpIHsKKwkg
ICAgZG9uZSA9IHRydWU7CisJICAgIHdoaWxlIChpc1doaXRlc3BhY2UocG9ydC5wZWVrQ2hhcigp
KSkKKwkJcG9ydC5yZWFkQ2hhcigpOworCSAgICBpZiAocG9ydC5wZWVrQ2hhcigpID09PSAnOycp
IHsKKwkJcG9ydC5yZWFkQ2hhcigpOworCQlkb25lID0gZmFsc2U7CisJCXdoaWxlICh0cnVlKSB7
CisJCSAgICBjdXJDaGFyID0gcG9ydC5yZWFkQ2hhcigpOworCQkgICAgaWYgKGN1ckNoYXIgPT09
IFNDX0VPRl9PQkpFQ1QgfHwKKwkJCWN1ckNoYXIgPT09ICdcbicpCisJCQlicmVhazsKKwkJfQor
CSAgICB9CisJfQorICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gcmVhZERvdCgpIHsKKwlpZiAo
aXNXaGl0ZXNwYWNlKHBvcnQucGVla0NoYXIoKSkpCisJICAgIHJldHVybiBuZXcgc2NfVG9rZW4o
MTAvKkRPVCovKTsKKwllbHNlCisJICAgIHJldHVybiByZWFkSWRPck51bWJlcigiLiIpOworICAg
IH07CisKKyAgICBmdW5jdGlvbiByZWFkU2hhcnAoKSB7CisJdmFyIGMgPSBwb3J0LnJlYWRDaGFy
KCk7CisJaWYgKGlzV2hpdGVzcGFjZShjKSkKKwkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8q
RVJST1IqLywgImJhZCAjLXBhdHRlcm4wLiIpOworCisJLy8gcmVmZXJlbmNlCisJaWYgKGlzTnVt
YmVyQ2hhcihjKSkgeworCSAgICB2YXIgbmIgPSBjIC0gMDsKKwkgICAgd2hpbGUgKGlzTnVtYmVy
Q2hhcihwb3J0LnBlZWtDaGFyKCkpKQorCQluYiA9IG5iKjEwICsgKHBvcnQucmVhZENoYXIoKSAt
IDApOworCSAgICBzd2l0Y2ggKHBvcnQucmVhZENoYXIoKSkgeworCSAgICBjYXNlICcjJzoKKwkJ
cmV0dXJuIG5ldyBzY19Ub2tlbigxOC8qUkVGRVJFTkNFKi8sIG5iKTsKKwkgICAgY2FzZSAnPSc6
CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTkvKlNUT1JFKi8sIG5iKTsKKwkgICAgZGVmYXVsdDoK
KwkJcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRlcm4xLiIgKyBu
Yik7CisJICAgIH0KKwl9CisKKwlpZiAoYyA9PT0gIigiKQorCSAgICByZXR1cm4gbmV3IHNjX1Rv
a2VuKDE0LypWRUNUT1JfQkVHSU4qLyk7CisJCisJaWYgKGMgPT09ICJcXCIpIHsgLy8gY2hhcmFj
dGVyCisJICAgIHZhciB0bXAgPSAiIgorCSAgICB3aGlsZSAoIWlzV2hpdGVzcGFjZU9yRU9GKHBv
cnQucGVla0NoYXIoKSkpCisJCXRtcCArPSBwb3J0LnJlYWRDaGFyKCk7CisJICAgIHN3aXRjaCAo
dG1wLmxlbmd0aCkgeworCSAgICBjYXNlIDA6IC8vIGl0J3MgZXNjYXBpbmcgYSB3aGl0ZXNwYWNl
IGNoYXI6CisJCWlmIChzY19pc0VPRk9iamVjdChwb3J0LnBlZWtDaGFyKSkKKwkJICAgIHJldHVy
biBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuMi4iKTsKKwkJZWxzZQor
CQkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigyMC8qQ0hBUiovLCBwb3J0LnJlYWRDaGFyKCkpOwor
CSAgICBjYXNlIDE6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMjAvKkNIQVIqLywgdG1wKTsKKwkg
ICAgZGVmYXVsdDoKKwkJdmFyIGVudHJ5ID0gc2NfQ2hhci5yZWFkYWJsZTJjaGFyW3RtcC50b0xv
d2VyQ2FzZSgpXTsKKwkJaWYgKGVudHJ5KQorCQkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigyMC8q
Q0hBUiovLCBlbnRyeSk7CisJCWVsc2UKKwkJICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVS
Uk9SKi8sICJ1bmtub3duIGNoYXJhY3RlciBkZXNjcmlwdGlvbjogI1xcIiArIHRtcCk7CisJICAg
IH0KKwl9CisKKwkvLyBzb21lIGNvbnN0YW50cyAoI3QsICNmLCAjdW5zcGVjaWZpZWQpCisJdmFy
IHJlczsKKwl2YXIgbmVlZGluZzsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlICd0JzogcmVzID0gbmV3
IHNjX1Rva2VuKDE1LypUUlVFKi8sIHRydWUpOyBuZWVkaW5nID0gIiI7IGJyZWFrOworCWNhc2Ug
J2YnOiByZXMgPSBuZXcgc2NfVG9rZW4oMTYvKkZBTFNFKi8sIGZhbHNlKTsgbmVlZGluZyA9ICIi
OyBicmVhazsKKwljYXNlICd1JzogcmVzID0gbmV3IHNjX1Rva2VuKDE3LypVTlNQRUNJRklFRCov
LCB1bmRlZmluZWQpOyBuZWVkaW5nID0gIm5zcGVjaWZpZWQiOyBicmVhazsKKwlkZWZhdWx0Ogor
CSAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0dGVybjM6ICIg
KyBjKTsKKwl9CisJd2hpbGUodHJ1ZSkgeworCSAgICBjID0gcG9ydC5wZWVrQ2hhcigpOworCSAg
ICBpZiAoKGlzV2hpdGVzcGFjZU9yRU9GKGMpIHx8IGMgPT09ICcpJykgJiYKKwkJbmVlZGluZyA9
PSAiIikKKwkJcmV0dXJuIHJlczsKKwkgICAgZWxzZSBpZiAoaXNXaGl0ZXNwYWNlKGMpIHx8IG5l
ZWRpbmcgPT0gIiIpCisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1w
YXR0ZXJuNCAiICsgYyArICIgIiArIG5lZWRpbmcpOworCSAgICBlbHNlIGlmIChuZWVkaW5nLmNo
YXJBdCgwKSA9PSBjKSB7CisJCXBvcnQucmVhZENoYXIoKTsgLy8gY29uc3VtZQorCQluZWVkaW5n
ID0gbmVlZGluZy5zbGljZSgxKTsKKwkgICAgfSBlbHNlCisJCXJldHVybiBuZXcgc2NfVG9rZW4o
MTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuNSIpOworCX0KKwkKKyAgICB9OworCisgICAgc2tp
cFdoaXRlc3BhY2VBbmRDb21tZW50cygpOworICAgIHZhciBjdXJDaGFyID0gcG9ydC5yZWFkQ2hh
cigpOworICAgIGlmIChjdXJDaGFyID09PSBTQ19FT0ZfT0JKRUNUKQorCXJldHVybiBuZXcgc2Nf
VG9rZW4oMC8qRU9GKi8sIGN1ckNoYXIpOworICAgIHN3aXRjaCAoY3VyQ2hhcikKKyAgICB7Cisg
ICAgY2FzZSAiICI6CisgICAgY2FzZSAiXG4iOgorICAgIGNhc2UgIlx0IjoKKwlyZXR1cm4gcmVh
ZFdoaXRlc3BhY2UoKTsKKyAgICBjYXNlICIoIjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDEvKk9Q
RU5fUEFSKi8pOworICAgIGNhc2UgIikiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oMi8qQ0xPU0Vf
UEFSKi8pOworICAgIGNhc2UgInsiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oMy8qT1BFTl9CUkFD
RSovKTsKKyAgICBjYXNlICJ9IjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDQvKkNMT1NFX0JSQUNF
Ki8pOworICAgIGNhc2UgIlsiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oNS8qT1BFTl9CUkFDS0VU
Ki8pOworICAgIGNhc2UgIl0iOgorCXJldHVybiBuZXcgc2NfVG9rZW4oNi8qQ0xPU0VfQlJBQ0tF
VCovKTsKKyAgICBjYXNlICInIjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDgvKlFVT1RFKi8pOwor
ICAgIGNhc2UgIiMiOgorCXJldHVybiByZWFkU2hhcnAoKTsKKyAgICBjYXNlICIuIjoKKwlyZXR1
cm4gcmVhZERvdCgpOworICAgIGNhc2UgJyInOgorCXJldHVybiByZWFkU3RyaW5nKCk7CisgICAg
ZGVmYXVsdDoKKwlpZiAoaXNJZE9yTnVtYmVyQ2hhcihjdXJDaGFyKSkKKwkgICAgcmV0dXJuIHJl
YWRJZE9yTnVtYmVyKGN1ckNoYXIpOworCXRocm93ICJ1bmV4cGVjdGVkIGNoYXJhY3RlcjogIiAr
IGN1ckNoYXI7CisgICAgfQorfTsKKworZnVuY3Rpb24gc2NfUmVhZGVyKHRva2VuaXplcikgewor
ICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyOworICAgIHRoaXMuYmFja3JlZiA9IG5ldyBB
cnJheSgpOworfQorc2NfUmVhZGVyLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24oKSB7CisgICAg
ZnVuY3Rpb24gcmVhZExpc3QobGlzdEJlZ2luVHlwZSkgeworCWZ1bmN0aW9uIG1hdGNoZXNQZWVy
KG9wZW4sIGNsb3NlKSB7CisJICAgIHJldHVybiBvcGVuID09PSAxLypPUEVOX1BBUiovICYmIGNs
b3NlID09PSAyLypDTE9TRV9QQVIqLworCSAgICAJfHwgb3BlbiA9PT0gMy8qT1BFTl9CUkFDRSov
ICYmIGNsb3NlID09PSA0LypDTE9TRV9CUkFDRSovCisJCXx8IG9wZW4gPT09IDUvKk9QRU5fQlJB
Q0tFVCovICYmIGNsb3NlID09PSA2LypDTE9TRV9CUkFDS0VUKi87CisJfTsKKwl2YXIgcmVzID0g
bnVsbDsKKworCXdoaWxlICh0cnVlKSB7CisJICAgIHZhciB0b2tlbiA9IHRva2VuaXplci5wZWVr
VG9rZW4oKTsKKwkgICAgCisJICAgIHN3aXRjaCAodG9rZW4udHlwZSkgeworCSAgICBjYXNlIDIv
KkNMT1NFX1BBUiovOgorCSAgICBjYXNlIDQvKkNMT1NFX0JSQUNFKi86CisJICAgIGNhc2UgNi8q
Q0xPU0VfQlJBQ0tFVCovOgorCQlpZiAobWF0Y2hlc1BlZXIobGlzdEJlZ2luVHlwZSwgdG9rZW4u
dHlwZSkpIHsKKwkJICAgIHRva2VuaXplci5yZWFkVG9rZW4oKTsgLy8gY29uc3VtZSB0b2tlbgor
CQkgICAgcmV0dXJuIHNjX3JldmVyc2VCYW5nKHJlcyk7CisJCX0gZWxzZQorCQkgICAgdGhyb3cg
ImNsb3NpbmcgcGFyIGRvZXNuJ3QgbWF0Y2g6ICIgKyBsaXN0QmVnaW5UeXBlCisJCQkrICIgIiAr
IGxpc3RFbmRUeXBlOworCisJICAgIGNhc2UgMC8qRU9GKi86CisJCXRocm93ICJ1bmV4cGVjdGVk
IGVuZCBvZiBmaWxlIjsKKworCSAgICBjYXNlIDEwLypET1QqLzoKKwkJdG9rZW5pemVyLnJlYWRU
b2tlbigpOyAvLyBjb25zdW1lIHRva2VuCisJCXZhciBjZHIgPSB0aGlzLnJlYWQoKTsKKwkJdmFy
IHBhciA9IHRva2VuaXplci5yZWFkVG9rZW4oKTsKKwkJaWYgKCFtYXRjaGVzUGVlcihsaXN0QmVn
aW5UeXBlLCBwYXIudHlwZSkpCisJCSAgICB0aHJvdyAiY2xvc2luZyBwYXIgZG9lc24ndCBtYXRj
aDogIiArIGxpc3RCZWdpblR5cGUKKwkJCSsgIiAiICsgcGFyLnR5cGU7CisJCWVsc2UKKwkJICAg
IHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXMsIGNkcik7CisJCQorCisJICAgIGRlZmF1
bHQ6CisJCXJlcyA9IHNjX2NvbnModGhpcy5yZWFkKCksIHJlcyk7CisJICAgIH0KKwl9CisgICAg
fTsKKyAgICBmdW5jdGlvbiByZWFkUXVvdGUoKSB7CisJcmV0dXJuIHNjX2NvbnMoInF1b3RlIiwg
c2NfY29ucyh0aGlzLnJlYWQoKSwgbnVsbCkpOworICAgIH07CisgICAgZnVuY3Rpb24gcmVhZFZl
Y3RvcigpIHsKKwkvLyBvcGVuaW5nLXBhcmVudGhlc2lzIGlzIGFscmVhZHkgY29uc3VtZWQKKwl2
YXIgYSA9IG5ldyBBcnJheSgpOworCXdoaWxlICh0cnVlKSB7CisJICAgIHZhciB0b2tlbiA9IHRv
a2VuaXplci5wZWVrVG9rZW4oKTsKKwkgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7CisJICAgIGNh
c2UgMi8qQ0xPU0VfUEFSKi86CisJCXRva2VuaXplci5yZWFkVG9rZW4oKTsKKwkJcmV0dXJuIGE7
CisJCQorCSAgICBkZWZhdWx0OgorCQlhLnB1c2godGhpcy5yZWFkKCkpOworCSAgICB9CisJfQor
ICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZVJlZmVuY2UobmIpIHsKKwl2YXIgdG1wID0gdGhp
cy5yZWFkKCk7CisJdGhpcy5iYWNrcmVmW25iXSA9IHRtcDsKKwlyZXR1cm4gdG1wOworICAgIH07
CisJCisgICAgZnVuY3Rpb24gcmVhZFJlZmVyZW5jZShuYikgeworCWlmIChuYiBpbiB0aGlzLmJh
Y2tyZWYpCisJICAgIHJldHVybiB0aGlzLmJhY2tyZWZbbmJdOworCWVsc2UKKwkgICAgdGhyb3cg
ImJhZCByZWZlcmVuY2U6ICIgKyBuYjsKKyAgICB9OworICAgIAorICAgIHZhciB0b2tlbml6ZXIg
PSB0aGlzLnRva2VuaXplcjsKKworICAgIHZhciB0b2tlbiA9IHRva2VuaXplci5yZWFkVG9rZW4o
KTsKKworICAgIC8vIGhhbmRsZSBlcnJvcgorICAgIGlmICh0b2tlbi50eXBlID09PSAxMy8qRVJS
T1IqLykKKwl0aHJvdyB0b2tlbi52YWw7CisgICAgCisgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7
CisgICAgY2FzZSAxLypPUEVOX1BBUiovOgorICAgIGNhc2UgMy8qT1BFTl9CUkFDRSovOgorICAg
IGNhc2UgNS8qT1BFTl9CUkFDS0VUKi86CisJcmV0dXJuIHJlYWRMaXN0LmNhbGwodGhpcywgdG9r
ZW4udHlwZSk7CisgICAgY2FzZSA4LypRVU9URSovOgorCXJldHVybiByZWFkUXVvdGUuY2FsbCh0
aGlzKTsKKyAgICBjYXNlIDExLypTVFJJTkcqLzoKKwlyZXR1cm4gc2NfanNzdHJpbmcyc3RyaW5n
KHRva2VuLnZhbCk7CisgICAgY2FzZSAyMC8qQ0hBUiovOgorCXJldHVybiBuZXcgc2NfQ2hhcih0
b2tlbi52YWwpOworICAgIGNhc2UgMTQvKlZFQ1RPUl9CRUdJTiovOgorCXJldHVybiByZWFkVmVj
dG9yLmNhbGwodGhpcyk7CisgICAgY2FzZSAxOC8qUkVGRVJFTkNFKi86CisJcmV0dXJuIHJlYWRS
ZWZlcmVuY2UuY2FsbCh0aGlzLCB0b2tlbi52YWwpOworICAgIGNhc2UgMTkvKlNUT1JFKi86CisJ
cmV0dXJuIHN0b3JlUmVmZW5jZS5jYWxsKHRoaXMsIHRva2VuLnZhbCk7CisgICAgY2FzZSA5LypJ
RCovOgorCXJldHVybiBzY19qc3N0cmluZzJzeW1ib2wodG9rZW4udmFsKTsKKyAgICBjYXNlIDAv
KkVPRiovOgorICAgIGNhc2UgMTIvKk5VTUJFUiovOgorICAgIGNhc2UgMTUvKlRSVUUqLzoKKyAg
ICBjYXNlIDE2LypGQUxTRSovOgorICAgIGNhc2UgMTcvKlVOU1BFQ0lGSUVEKi86CisJcmV0dXJu
IHRva2VuLnZhbDsKKyAgICBkZWZhdWx0OgorCXRocm93ICJ1bmV4cGVjdGVkIHRva2VuICIgKyB0
b2tlbi50eXBlICsgIiAiICsgdG9rZW4udmFsOworICAgIH0KK307CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZWFkKHBvcnQpIHsKKyAgICBpZiAocG9ydCA9PT0g
dW5kZWZpbmVkKSAvLyB3ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4uCisJcG9y
dCA9IFNDX0RFRkFVTFRfSU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAgIHZhciByZWFk
ZXIgPSBuZXcgc2NfUmVhZGVyKG5ldyBzY19Ub2tlbml6ZXIocG9ydCkpOworICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNj
X3JlYWRDaGFyKHBvcnQpIHsKKyAgICBpZiAocG9ydCA9PT0gdW5kZWZpbmVkKSAvLyB3ZSBhc3N1
bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4uCisJcG9ydCA9IFNDX0RFRkFVTFRfSU47IC8v
IFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAgIHZhciB0ID0gcG9ydC5yZWFkQ2hhcigpOworICAg
IHJldHVybiB0ID09PSBTQ19FT0ZfT0JKRUNUPyB0OiBuZXcgc2NfQ2hhcih0KTsKK30KKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19wZWVrQ2hhcihwb3J0KSB7CisgICAg
aWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBwb3J0IGhhc24ndCBiZWVu
IGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuLi4K
KyAgICB2YXIgdCA9IHBvcnQucGVla0NoYXIoKTsKKyAgICByZXR1cm4gdCA9PT0gU0NfRU9GX09C
SkVDVD8gdDogbmV3IHNjX0NoYXIodCk7Cit9ICAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJSZWFkeShwb3J0
KSB7CisgICAgaWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBwb3J0IGhh
c24ndCBiZWVuIGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJl
ZCB2YXIuLi4KKyAgICByZXR1cm4gcG9ydC5pc0NoYXJSZWFkeSgpOworfQorLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jbG9zZSgpIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2Nsb3NlSW5wdXRQb3J0KHApIHsKKyAgICByZXR1cm4gcC5jbG9zZSgp
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisg
ICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfSW5wdXRQb3J0Iikp
KQorKi8KK2Z1bmN0aW9uIHNjX2lzSW5wdXRQb3J0KG8pIHsKKyAgICByZXR1cm4gKG8gaW5zdGFu
Y2VvZiBzY19JbnB1dFBvcnQpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgZW9mLW9iamVjdD8p
CisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAi
ID09PSBTQ19FT0ZfT0JKRUNUIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzRU9GT2JqZWN0KG8pIHsK
KyAgICByZXR1cm4gbyA9PT0gU0NfRU9GX09CSkVDVDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMCAiU0NfREVGQVVMVF9JTiIpKSkKKyov
CitmdW5jdGlvbiBzY19jdXJyZW50SW5wdXRQb3J0KCkgeworICAgIHJldHVybiBTQ19ERUZBVUxU
X0lOOworfQorCisvKiAtLS0tLS0tLS0tLS0gZmlsZSBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9y
dGVkIC0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19jYWxsV2l0aElucHV0RmlsZShzLCBwcm9jKSB7CisgICAgdGhyb3cgImNhbid0IG9wZW4gIiAr
IHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jYWxsV2l0
aE91dHB1dEZpbGUocywgcHJvYykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIgKyBzOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aElucHV0RnJvbUZp
bGUocywgdGh1bmspIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb0ZpbGUocywgdGh1
bmspIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX29wZW5JbnB1dEZpbGUocykgeworICAgIHRocm93ICJj
YW4ndCBvcGVuICIgKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2Nfb3Blbk91dHB1dEZpbGUocykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIgKyBzOwor
fQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICov
CitmdW5jdGlvbiBzY19iYXNlbmFtZShwKSB7CisgICB2YXIgaSA9IHAubGFzdEluZGV4T2YoJy8n
KTsKKworICAgaWYoaSA+PSAwKQorICAgICAgcmV0dXJuIHAuc3Vic3RyaW5nKGkgKyAxLCBwLmxl
bmd0aCk7CisgICBlbHNlCisgICAgICByZXR1cm4gJyc7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19kaXJuYW1lKHApIHsKKyAgIHZhciBpID0gcC5sYXN0SW5k
ZXhPZignLycpOworCisgICBpZihpID49IDApCisgICAgICByZXR1cm4gcC5zdWJzdHJpbmcoMCwg
aSk7CisgICBlbHNlCisgICAgICByZXR1cm4gJyc7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aElucHV0
RnJvbVBvcnQocCwgdGh1bmspIHsKKyAgICB0cnkgeworCXZhciB0bXAgPSBTQ19ERUZBVUxUX0lO
OyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuCisJU0NfREVGQVVMVF9JTiA9IHA7CisJcmV0dXJuIHRo
dW5rKCk7CisgICAgfSBmaW5hbGx5IHsKKwlTQ19ERUZBVUxUX0lOID0gdG1wOworICAgIH0KK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhJbnB1dEZyb21T
dHJpbmcocywgdGh1bmspIHsKKyAgICByZXR1cm4gc2Nfd2l0aElucHV0RnJvbVBvcnQobmV3IHNj
X1N0cmluZ0lucHV0UG9ydChzY19zdHJpbmcyanNzdHJpbmcocykpLCB0aHVuayk7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoT3V0cHV0VG9Qb3J0KHAs
IHRodW5rKSB7CisgICAgdHJ5IHsKKwl2YXIgdG1wID0gU0NfREVGQVVMVF9PVVQ7IC8vIFRIUkVB
RDogc2hhcmVkIHZhci4KKwlTQ19ERUZBVUxUX09VVCA9IHA7CisJcmV0dXJuIHRodW5rKCk7Cisg
ICAgfSBmaW5hbGx5IHsKKwlTQ19ERUZBVUxUX09VVCA9IHRtcDsKKyAgICB9Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoT3V0cHV0VG9TdHJpbmcodGh1
bmspIHsKKyAgICB2YXIgcCA9IG5ldyBzY19TdHJpbmdPdXRwdXRQb3J0KCk7CisgICAgc2Nfd2l0
aE91dHB1dFRvUG9ydChwLCB0aHVuayk7CisgICAgcmV0dXJuIHAuY2xvc2UoKTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb1Byb2NlZHVy
ZShwcm9jLCB0aHVuaykgeworICAgIHZhciB0ID0gZnVuY3Rpb24ocykgeyBwcm9jKHNjX2pzc3Ry
aW5nMnN0cmluZyhzKSk7IH07CisgICAgcmV0dXJuIHNjX3dpdGhPdXRwdXRUb1BvcnQobmV3IHNj
X0dlbmVyaWNPdXRwdXRQb3J0KHQpLCB0aHVuayk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDAgIm5ldyBzY19TdHJpbmdPdXRwdXRQb3J0
KCkiKSkpCisqLworZnVuY3Rpb24gc2Nfb3Blbk91dHB1dFN0cmluZygpIHsKKyAgICByZXR1cm4g
bmV3IHNjX1N0cmluZ091dHB1dFBvcnQoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX29wZW5JbnB1dFN0cmluZyhzdHIpIHsKKyAgICByZXR1cm4gbmV3IHNj
X1N0cmluZ0lucHV0UG9ydChzY19zdHJpbmcyanNzdHJpbmcoc3RyKSk7Cit9CisKKy8qIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLworCitmdW5jdGlvbiBzY19PdXRwdXRQb3J0KCkgeworfQorc2NfT3V0
cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfUG9ydCgpOworc2NfT3V0cHV0UG9ydC5wcm90b3R5
cGUuYXBwZW5kSlNTdHJpbmcgPSBmdW5jdGlvbihvYmopIHsKKyAgICAvKiBkbyBub3RoaW5nICov
Cit9CitzY19PdXRwdXRQb3J0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgIC8q
IGRvIG5vdGhpbmcgKi8KK30KKworZnVuY3Rpb24gc2NfU3RyaW5nT3V0cHV0UG9ydCgpIHsKKyAg
ICB0aGlzLnJlcyA9ICIiOworfQorc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcg
c2NfT3V0cHV0UG9ydCgpOworc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUuYXBwZW5kSlNT
dHJpbmcgPSBmdW5jdGlvbihzKSB7CisgICAgdGhpcy5yZXMgKz0gczsKK30KK3NjX1N0cmluZ091
dHB1dFBvcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNjX2pz
c3RyaW5nMnN0cmluZyh0aGlzLnJlcyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICov
CitmdW5jdGlvbiBzY19nZXRPdXRwdXRTdHJpbmcoc3ApIHsKKyAgICByZXR1cm4gc2NfanNzdHJp
bmcyc3RyaW5nKHNwLnJlcyk7Cit9CisgICAgCisKK2Z1bmN0aW9uIHNjX0Vycm9yT3V0cHV0UG9y
dCgpIHsKK30KK3NjX0Vycm9yT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfT3V0cHV0UG9y
dCgpOworc2NfRXJyb3JPdXRwdXRQb3J0LnByb3RvdHlwZS5hcHBlbmRKU1N0cmluZyA9IGZ1bmN0
aW9uKHMpIHsKKyAgICB0aHJvdyAiZG9uJ3Qgd3JpdGUgb24gRXJyb3JQb3J0ISI7Cit9CitzY19F
cnJvck91dHB1dFBvcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgLyogZG8g
bm90aGluZyAqLworfQorCitmdW5jdGlvbiBzY19HZW5lcmljT3V0cHV0UG9ydChhcHBlbmRKU1N0
cmluZywgY2xvc2UpIHsKKyAgICB0aGlzLmFwcGVuZEpTU3RyaW5nID0gYXBwZW5kSlNTdHJpbmc7
CisgICAgaWYgKGNsb3NlKQorCXRoaXMuY2xvc2UgPSBjbG9zZTsKK30KK3NjX0dlbmVyaWNPdXRw
dXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19PdXRwdXRQb3J0KCk7CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChw
b3N0Zml4ICIgaW5zdGFuY2VvZiBzY19PdXRwdXRQb3J0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lz
T3V0cHV0UG9ydChvKSB7CisgICAgcmV0dXJuIChvIGluc3RhbmNlb2Ygc2NfT3V0cHV0UG9ydCk7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0
Zml4ICIuY2xvc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19jbG9zZU91dHB1dFBvcnQocCkgewor
ICAgIHJldHVybiBwLmNsb3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSB3cml0ZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd3JpdGUobywgcCkgeworICAg
IGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0NfREVG
QVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlU3RyaW5nKG8pKTsKK30K
KworZnVuY3Rpb24gc2NfdG9Xcml0ZVN0cmluZyhvKSB7CisgICAgaWYgKG8gPT09IG51bGwpCisJ
cmV0dXJuICIoKSI7CisgICAgZWxzZSBpZiAobyA9PT0gdHJ1ZSkKKwlyZXR1cm4gIiN0IjsKKyAg
ICBlbHNlIGlmIChvID09PSBmYWxzZSkKKwlyZXR1cm4gIiNmIjsKKyAgICBlbHNlIGlmIChvID09
PSB1bmRlZmluZWQpCisJcmV0dXJuICIjdW5zcGVjaWZpZWQiOworICAgIGVsc2UgaWYgKHR5cGVv
ZiBvID09PSAnZnVuY3Rpb24nKQorCXJldHVybiAiIzxwcm9jZWR1cmUgIiArIHNjX2hhc2gobykg
KyAiPiI7CisgICAgZWxzZSBpZiAoby5zY190b1dyaXRlU3RyaW5nKQorCXJldHVybiBvLnNjX3Rv
V3JpdGVTdHJpbmcoKTsKKyAgICBlbHNlCisJcmV0dXJuIG8udG9TdHJpbmcoKTsKK30KKworZnVu
Y3Rpb24gc2NfZXNjYXBlV3JpdGVTdHJpbmcocykgeworICAgIHZhciByZXMgPSAiIjsKKyAgICB2
YXIgaiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKwlzd2l0Y2gg
KHMuY2hhckF0KGkpKSB7CisJY2FzZSAiXDAiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAi
XFwwIjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNlICJcYiI6IHJlcyArPSBzLnN1YnN0cmluZyhq
LCBpKSArICJcXGIiOyBqID0gaSArIDE7IGJyZWFrOworCWNhc2UgIlxmIjogcmVzICs9IHMuc3Vi
c3RyaW5nKGosIGkpICsgIlxcZiI7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXG4iOiByZXMg
Kz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFxuIjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNlICJc
ciI6IHJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJcXHIiOyBqID0gaSArIDE7IGJyZWFrOwor
CWNhc2UgIlx0IjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcdCI7IGogPSBpICsgMTsg
YnJlYWs7CisJY2FzZSAiXHYiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFx2IjsgaiA9
IGkgKyAxOyBicmVhazsKKwljYXNlICciJzogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgJ1xc
Iic7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXFwiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwg
aSkgKyAiXFxcXCI7IGogPSBpICsgMTsgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdmFyIGMgPSBz
LmNoYXJBdChpKTsKKwkgICAgaWYgKCJcYSIgIT09ICJhIiAmJiBjID09ICJcYSIpIHsKKwkJcmVz
ICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcYSI7IGogPSBpICsgMTsgY29udGludWU7CisJICAg
IH0KKwkgICAgaWYgKCJcdiIgIT09ICJ2IiAmJiBjID09ICJcdiIpIHsKKwkJcmVzICs9IHMuc3Vi
c3RyaW5nKGosIGkpICsgIlxcdiI7IGogPSBpICsgMTsgY29udGludWU7CisJICAgIH0KKwkgICAg
Ly9pZiAocy5jaGFyQXQoaSkgPCAnICcgfHwgcy5jaGFyQ29kZUF0KGkpID4gMTI3KSB7CisJICAg
IC8vIENBUkU6IE1hbnVlbCBpcyB0aGlzIE9LIHdpdGggSE9QPworCSAgICBpZiAocy5jaGFyQXQo
aSkgPCAnICcpIHsKKwkJLyogbm9uIHByaW50YWJsZSBjaGFyYWN0ZXIgYW5kIHNwZWNpYWwgY2hh
cnMgKi8KKwkJcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxceCIgKyBzLmNoYXJDb2RlQXQo
aSkudG9TdHJpbmcoMTYpOworCQlqID0gaSArIDE7CisJICAgIH0KKwkgICAgLy8gZWxzZSBqdXN0
IGxldCBpIGluY3JlYXNlLi4uCisJfQorICAgIH0KKyAgICByZXMgKz0gcy5zdWJzdHJpbmcoaiwg
aSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tIGRpc3BsYXkg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Rpc3BsYXkobywgcCkgewor
ICAgIGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0Nf
REVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b0Rpc3BsYXlTdHJpbmcobykp
OworfQorCitmdW5jdGlvbiBzY190b0Rpc3BsYXlTdHJpbmcobykgeworICAgIGlmIChvID09PSBu
dWxsKQorCXJldHVybiAiKCkiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisJcmV0dXJuICIj
dCI7CisgICAgZWxzZSBpZiAobyA9PT0gZmFsc2UpCisJcmV0dXJuICIjZiI7CisgICAgZWxzZSBp
ZiAobyA9PT0gdW5kZWZpbmVkKQorCXJldHVybiAiI3Vuc3BlY2lmaWVkIjsKKyAgICBlbHNlIGlm
ICh0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJykKKwlyZXR1cm4gIiM8cHJvY2VkdXJlICIgKyBzY19o
YXNoKG8pICsgIj4iOworICAgIGVsc2UgaWYgKG8uc2NfdG9EaXNwbGF5U3RyaW5nKQorCXJldHVy
biBvLnNjX3RvRGlzcGxheVN0cmluZygpOworICAgIGVsc2UKKwlyZXR1cm4gby50b1N0cmluZygp
OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gbmV3bGluZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2NfbmV3bGluZShwKSB7CisgICAgaWYgKHAgPT09IHVuZGVmaW5l
ZCkgLy8gd2UgYXNzdW1lIG5vdCBnaXZlbgorCXAgPSBTQ19ERUZBVUxUX09VVDsKKyAgICBwLmFw
cGVuZEpTU3RyaW5nKCJcbiIpOworfQorICAgIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tIHdyaXRl
LWNoYXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dyaXRlQ2hhcihj
LCBwKSB7CisgICAgaWYgKHAgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIG5vdCBnaXZlbgor
CXAgPSBTQ19ERUZBVUxUX09VVDsKKyAgICBwLmFwcGVuZEpTU3RyaW5nKGMudmFsKTsKK30KKwor
LyogLS0tLS0tLS0tLS0tLS0tLS0tIHdyaXRlLWNpcmNsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
KSAqLworZnVuY3Rpb24gc2Nfd3JpdGVDaXJjbGUobywgcCkgeworICAgIGlmIChwID09PSB1bmRl
ZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0NfREVGQVVMVF9PVVQ7CisgICAg
cC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlQ2lyY2xlU3RyaW5nKG8pKTsKK30KKworZnVuY3Rp
b24gc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyhvKSB7CisgICAgdmFyIHN5bWIgPSBzY19nZW5zeW0o
IndyaXRlQ2lyY2xlIik7CisgICAgdmFyIG5iUG9pbnRlciA9IG5ldyBPYmplY3QoKTsKKyAgICBu
YlBvaW50ZXIubmIgPSAwOworICAgIHNjX3ByZXBXcml0ZUNpcmNsZShvLCBzeW1iLCBuYlBvaW50
ZXIpOworICAgIHJldHVybiBzY19nZW5Ub1dyaXRlQ2lyY2xlU3RyaW5nKG8sIHN5bWIpOworfQor
CitmdW5jdGlvbiBzY19wcmVwV3JpdGVDaXJjbGUobywgc3ltYiwgbmJQb2ludGVyKSB7CisgICAg
Ly8gVE9ETyBzY19TdHJ1Y3QKKyAgICBpZiAobyBpbnN0YW5jZW9mIHNjX1BhaXIgfHwKKwlvIGlu
c3RhbmNlb2Ygc2NfVmVjdG9yKSB7CisJaWYgKG9bc3ltYl0gIT09IHVuZGVmaW5lZCkgeworCSAg
ICAvLyBub3QgdGhlIGZpcnN0IHZpc2l0LgorCSAgICBvW3N5bWJdKys7CisJICAgIC8vIHVubGVz
cyB0aGVyZSBpcyBhbHJlYWR5IGEgbnVtYmVyLCBhc3NpZ24gb25lLgorCSAgICBpZiAoIW9bc3lt
YiArICJuYiJdKSBvW3N5bWIgKyAibmIiXSA9IG5iUG9pbnRlci5uYisrOworCSAgICByZXR1cm47
CisJfQorCW9bc3ltYl0gPSAwOworCWlmIChvIGluc3RhbmNlb2Ygc2NfUGFpcikgeworCSAgICBz
Y19wcmVwV3JpdGVDaXJjbGUoby5jYXIsIHN5bWIsIG5iUG9pbnRlcik7CisJICAgIHNjX3ByZXBX
cml0ZUNpcmNsZShvLmNkciwgc3ltYiwgbmJQb2ludGVyKTsKKwl9IGVsc2UgeworCSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyBpKyspCisJCXNjX3ByZXBXcml0ZUNpcmNsZShvW2ld
LCBzeW1iLCBuYlBvaW50ZXIpOworCX0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNjX2dlblRvV3Jp
dGVDaXJjbGVTdHJpbmcobywgc3ltYikgeworICAgIGlmICghKG8gaW5zdGFuY2VvZiBzY19QYWly
IHx8CisJICBvIGluc3RhbmNlb2Ygc2NfVmVjdG9yKSkKKwlyZXR1cm4gc2NfdG9Xcml0ZVN0cmlu
ZyhvKTsKKyAgICByZXR1cm4gby5zY190b1dyaXRlQ2lyY2xlU3RyaW5nKHN5bWIpOworfQorc2Nf
UGFpci5wcm90b3R5cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyA9IGZ1bmN0aW9uKHN5bWIsIGlu
TGlzdCkgeworICAgIGlmICh0aGlzW3N5bWIgKyAidXNlIl0pIHsgLy8gdXNlLWZsYWcgaXMgc2V0
LiBKdXN0IHVzZSBpdC4KKwl2YXIgbmIgPSB0aGlzW3N5bWIgKyAibmIiXTsKKwlpZiAodGhpc1tz
eW1iXS0tID09PSAwKSB7IC8vIGlmIHdlIGFyZSB0aGUgbGFzdCB1c2UuIHJlbW92ZSBhbGwgZmll
bGRzLgorCSAgICBkZWxldGUgdGhpc1tzeW1iXTsKKwkgICAgZGVsZXRlIHRoaXNbc3ltYiArICJu
YiJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgInVzZSJdOworCX0KKwlpZiAoaW5MaXN0KQor
CSAgICByZXR1cm4gJy4gIycgKyBuYiArICcjJzsKKwllbHNlCisJICAgIHJldHVybiAnIycgKyBu
YiArICcjJzsKKyAgICB9CisgICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBpZiB3ZSBh
cmUgdGhlIGxhc3QgdXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwlkZWxldGUgdGhpc1tzeW1iXTsK
KwlkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJ1c2UiXTsK
KyAgICB9CisKKyAgICB2YXIgcmVzID0gIiI7CisgICAgCisgICAgaWYgKHRoaXNbc3ltYl0gIT09
IHVuZGVmaW5lZCkgeyAvLyBpbXBsaWVzID4gMAorCXRoaXNbc3ltYiArICJ1c2UiXSA9IHRydWU7
CisJaWYgKGluTGlzdCkKKwkgICAgcmVzICs9ICcuICMnICsgdGhpc1tzeW1iICsgIm5iIl0gKyAn
PSc7CisJZWxzZQorCSAgICByZXMgKz0gJyMnICsgdGhpc1tzeW1iICsgIm5iIl0gKyAnPSc7CisJ
aW5MaXN0ID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFpbkxpc3QpCisJcmVzICs9ICIoIjsK
KyAgICAKKyAgICAvLyBwcmludCBjYXIKKyAgICByZXMgKz0gc2NfZ2VuVG9Xcml0ZUNpcmNsZVN0
cmluZyh0aGlzLmNhciwgc3ltYik7CisgICAgCisgICAgaWYgKHNjX2lzUGFpcih0aGlzLmNkcikp
IHsKKwlyZXMgKz0gIiAiICsgdGhpcy5jZHIuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyhzeW1iLCB0
cnVlKTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuY2RyICE9PSBudWxsKSB7CisJcmVzICs9ICIgLiAi
ICsgc2NfZ2VuVG9Xcml0ZUNpcmNsZVN0cmluZyh0aGlzLmNkciwgc3ltYik7CisgICAgfQorICAg
IGlmICghaW5MaXN0KQorCXJlcyArPSAiKSI7CisgICAgcmV0dXJuIHJlczsKK307CitzY19WZWN0
b3IucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcgPSBmdW5jdGlvbihzeW1iKSB7Cisg
ICAgaWYgKHRoaXNbc3ltYiArICJ1c2UiXSkgeyAvLyB1c2UtZmxhZyBpcyBzZXQuIEp1c3QgdXNl
IGl0LgorCXZhciBuYiA9IHRoaXNbc3ltYiArICJuYiJdOworCWlmICh0aGlzW3N5bWJdLS0gPT09
IDApIHsgLy8gaWYgd2UgYXJlIHRoZSBsYXN0IHVzZS4gcmVtb3ZlIGFsbCBmaWVsZHMuCisJICAg
IGRlbGV0ZSB0aGlzW3N5bWJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisJICAg
IGRlbGV0ZSB0aGlzW3N5bWIgKyAidXNlIl07CisJfQorCXJldHVybiAnIycgKyBuYiArICcjJzsK
KyAgICB9CisgICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBpZiB3ZSBhcmUgdGhlIGxh
c3QgdXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwlkZWxldGUgdGhpc1tzeW1iXTsKKwlkZWxldGUg
dGhpc1tzeW1iICsgIm5iIl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJ1c2UiXTsKKyAgICB9CisK
KyAgICB2YXIgcmVzID0gIiI7CisgICAgaWYgKHRoaXNbc3ltYl0gIT09IHVuZGVmaW5lZCkgeyAv
LyBpbXBsaWVzID4gMAorCXRoaXNbc3ltYiArICJ1c2UiXSA9IHRydWU7CisJcmVzICs9ICcjJyAr
IHRoaXNbc3ltYiArICJuYiJdICsgJz0nOworICAgIH0KKyAgICByZXMgKz0gIiMoIjsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsKKwlyZXMgKz0gc2NfZ2VuVG9X
cml0ZUNpcmNsZVN0cmluZyh0aGlzW2ldLCBzeW1iKTsKKwlpZiAoaSA8IHRoaXMubGVuZ3RoIC0g
MSkgcmVzICs9ICIgIjsKKyAgICB9CisgICAgcmVzICs9ICIpIjsKKyAgICByZXR1cm4gcmVzOwor
fTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gcHJpbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KSkgKi8KK2Z1bmN0aW9uIHNjX3ByaW50KHMpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMSkgeworCXNjX2Rpc3BsYXkocyk7CisJc2NfbmV3bGluZSgpOworICAgIH0KKyAgICBlbHNl
IHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwkgICAgc2Nf
ZGlzcGxheShhcmd1bWVudHNbaV0pOworCXNjX25ld2xpbmUoKTsKKyAgICB9Cit9CisKKy8qIC0t
LS0tLS0tLS0tLS0tLS0tLSBmb3JtYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlv
biBzY19mb3JtYXQocywgYXJncykgeworICAgdmFyIGxlbiA9IHMubGVuZ3RoOworICAgdmFyIHAg
PSBuZXcgc2NfU3RyaW5nT3V0cHV0UG9ydCgpOworICAgdmFyIGkgPSAwLCBqID0gMTsKKworICAg
d2hpbGUoIGkgPCBsZW4gKSB7CisgICAgICB2YXIgaTIgPSBzLmluZGV4T2YoIn4iLCBpKTsKKwor
ICAgICAgaWYgKGkyID09IC0xKSB7CisJICBwLmFwcGVuZEpTU3RyaW5nKCBzLnN1YnN0cmluZygg
aSwgbGVuICkgKTsKKwkgIHJldHVybiBwLmNsb3NlKCk7CisgICAgICB9IGVsc2UgeworCSBpZiAo
aTIgPiBpKSB7CisJICAgIGlmIChpMiA9PSAobGVuIC0gMSkpIHsKKwkJcC5hcHBlbmRKU1N0cmlu
ZyhzLnN1YnN0cmluZyhpLCBsZW4pKTsKKwkJcmV0dXJuIHAuY2xvc2UoKTsKKwkgICAgfSBlbHNl
IHsKKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZyhzLnN1YnN0cmluZyhpLCBpMikpOworCSAgICAg
ICBpID0gaTI7CisJICAgIH0KKwkgfQorCisJIHN3aXRjaChzLmNoYXJDb2RlQXQoaTIgKyAxKSkg
eworCSAgICBjYXNlIDY1OgorCSAgICBjYXNlIDk3OgorCSAgICAgICAvLyBhCisJICAgICAgIHNj
X2Rpc3BsYXkoYXJndW1lbnRzW2pdLCBwKTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAg
IGJyZWFrOworCisJICAgIGNhc2UgODM6CisJICAgIGNhc2UgMTE1OgorCSAgICAgICAvLyBzCisJ
ICAgICAgIHNjX3dyaXRlKGFyZ3VtZW50c1tqXSwgcCk7CisJICAgICAgIGkgKz0gMjsgaisrOwor
CSAgICAgICBicmVhazsKKworCSAgICBjYXNlIDg2OgorCSAgICBjYXNlIDExODoKKwkgICAgICAg
Ly8gdgorCSAgICAgICBzY19kaXNwbGF5KGFyZ3VtZW50c1tqXSwgcCk7CisJICAgICAgIHAuYXBw
ZW5kSlNTdHJpbmcoIlxuIik7CisJICAgICAgIGkgKz0gMjsgaisrOworCSAgICAgICBicmVhazsK
KworCSAgICBjYXNlIDY3OgorCSAgICBjYXNlIDk5OgorCSAgICAgICAvLyBjCisJICAgICAgIHAu
YXBwZW5kSlNTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZShhcmd1bWVudHNbal0pKTsKKwkgICAg
ICAgaSArPSAyOyBqKys7CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgODg6CisJICAgIGNh
c2UgMTIwOgorCSAgICAgICAvLyB4CisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoYXJndW1lbnRz
W2pdLnRvU3RyaW5nKDYpKTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAgIGJyZWFrOwor
CisJICAgIGNhc2UgNzk6CisJICAgIGNhc2UgMTExOgorCSAgICAgICAvLyBvCisJICAgICAgIHAu
YXBwZW5kSlNTdHJpbmcoYXJndW1lbnRzW2pdLnRvU3RyaW5nKDgpKTsKKwkgICAgICAgaSArPSAy
OyBqKys7CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgNjY6CisJICAgIGNhc2UgOTg6CisJ
ICAgICAgIC8vIGIKKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZyhhcmd1bWVudHNbal0udG9TdHJp
bmcoMikpOworCSAgICAgICBpICs9IDI7IGorKzsKKwkgICAgICAgYnJlYWs7CisJICAgICAgIAor
CSAgICBjYXNlIDM3OgorCSAgICBjYXNlIDExMDoKKwkgICAgICAgLy8gJSwgbgorCSAgICAgICBw
LmFwcGVuZEpTU3RyaW5nKCJcbiIpOworCSAgICAgICBpICs9IDI7IGJyZWFrOworCisJICAgIGNh
c2UgMTE0OgorCSAgICAgICAvLyByCisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoIlxyIik7CisJ
ICAgICAgIGkgKz0gMjsgYnJlYWs7CisKKwkgICAgY2FzZSAxMjY6CisJICAgICAgIC8vIH4KKwkg
ICAgICAgcC5hcHBlbmRKU1N0cmluZygifiIpOworCSAgICAgICBpICs9IDI7IGJyZWFrOworCisJ
ICAgIGRlZmF1bHQ6CisJICAgICAgIHNjX2Vycm9yKCAiZm9ybWF0OiBpbGxlZ2FsIH4iCisJCQkg
KyBTdHJpbmcuZnJvbUNoYXJDb2RlKHMuY2hhckNvZGVBdChpMiArIDEpKQorCQkJICsgIiBzZXF1
ZW5jZSIgKTsKKwkgICAgICAgcmV0dXJuICIiOworCSB9CisgICAgICB9CisgICB9CisKKyAgIHJl
dHVybiBwLmNsb3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSBnbG9iYWwgcG9ydHMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwor
dmFyIFNDX0RFRkFVTFRfSU4gPSBuZXcgc2NfRXJyb3JJbnB1dFBvcnQoKTsKK3ZhciBTQ19ERUZB
VUxUX09VVCA9IG5ldyBzY19FcnJvck91dHB1dFBvcnQoKTsKK3ZhciBTQ19FUlJPUl9PVVQgPSBu
ZXcgc2NfRXJyb3JPdXRwdXRQb3J0KCk7CisKK3ZhciBzY19TWU1CT0xfUFJFRklYID0gIlx1MUU5
QyI7Cit2YXIgc2NfS0VZV09SRF9QUkVGSVggPSAiXHUxRTlEIjsKKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGlkKSkpICovCitmdW5jdGlvbiBzY19qc3N0
cmluZzJzdHJpbmcocykgeworICAgIHJldHVybiBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocHJlZml4ICInXFx1MUU5QycgKyIpKSkKKyovCitm
dW5jdGlvbiBzY19qc3N0cmluZzJzeW1ib2wocykgeworICAgIHJldHVybiBzY19TWU1CT0xfUFJF
RklYICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGlkKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmpzc3RyaW5nKHMpIHsKKyAgICByZXR1
cm4gczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KHN5bWJvbDJqc3N0cmluZ19pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19zeW1ib2wyanNz
dHJpbmcocykgeworICAgIHJldHVybiBzLnNsaWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnNsaWNlKDEpIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2tleXdvcmQyanNzdHJpbmcoaykgeworICAgIHJldHVybiBrLnNsaWNlKDEp
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocHJl
Zml4ICInXFx1MUU5RCcgKyIpKSkKKyovCitmdW5jdGlvbiBzY19qc3N0cmluZzJrZXl3b3JkKHMp
IHsKKyAgICByZXR1cm4gc2NfS0VZV09SRF9QUkVGSVggKyBzOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzS2V5
d29yZChzKSB7CisgICAgcmV0dXJuICh0eXBlb2YgcyA9PT0gInN0cmluZyIpICYmCisJKHMuY2hh
ckF0KDApID09PSBzY19LRVlXT1JEX1BSRUZJWCk7Cit9CisKKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KSkgKi8KK3ZhciBzY19nZW5zeW0gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY291bnRlciA9
IDEwMDA7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHN5bSkgeworCWNvdW50ZXIrKzsKKwlpZiAoIXN5
bSkgc3ltID0gc2NfU1lNQk9MX1BSRUZJWDsKKwlyZXR1cm4gc3ltICsgInMiICsgY291bnRlciAr
ICJ+IiArICJec0MtR2VOc1ltICI7CisgICAgfTsKK30oKTsKKworCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzRXF1YWwo
bzEsIG8yKSB7CisgICAgcmV0dXJuICgobzEgPT09IG8yKSB8fAorCSAgICAoc2NfaXNQYWlyKG8x
KSAmJiBzY19pc1BhaXIobzIpCisJICAgICAmJiBzY19pc1BhaXJFcXVhbChvMSwgbzIsIHNjX2lz
RXF1YWwpKSB8fAorCSAgICAoc2NfaXNWZWN0b3IobzEpICYmIHNjX2lzVmVjdG9yKG8yKQorCSAg
ICAgJiYgc2NfaXNWZWN0b3JFcXVhbChvMSwgbzIsIHNjX2lzRXF1YWwpKSk7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCBudW1iZXItPnN5bWJvbCBpbnRlZ2VyLT5zeW1ib2wpKSAqLworZnVuY3Rp
b24gc2NfbnVtYmVyMnN5bWJvbCh4LCByYWRpeCkgeworICAgIHJldHVybiBzY19TWU1CT0xfUFJF
RklYICsgc2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4KTsKK30KKyAgICAKKy8qKiogTUVUQSAo
KGV4cG9ydCBudW1iZXItPnN0cmluZyBpbnRlZ2VyLT5zdHJpbmcpKSAqLwordmFyIHNjX251bWJl
cjJzdHJpbmcgPSBzY19udW1iZXIyanNzdHJpbmc7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCitmdW5jdGlvbiBzY19zeW1ib2wybnVtYmVyKHMsIHJhZGl4KSB7CisgICAgcmV0dXJuIHNj
X2pzc3RyaW5nMm51bWJlcihzLnNsaWNlKDEpLCByYWRpeCk7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCit2YXIgc2Nfc3RyaW5nMm51bWJlciA9IHNjX2pzc3RyaW5nMm51bWJlcjsK
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAi
KyIgcykpKQorICAgICAgICAgICA7OyBwZWVwaG9sZSB3aWxsIG9ubHkgYXBwbHkgaWYgbm8gcmFk
aXggaXMgZ2l2ZW4uCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmludGVnZXIocywgcmFkaXgpIHsK
KyAgICBpZiAoIXJhZGl4KSByZXR1cm4gK3M7CisgICAgcmV0dXJuIHBhcnNlSW50KHMsIHJhZGl4
KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBy
ZWZpeCAiKyIpKSkKKyovCitmdW5jdGlvbiBzY19zdHJpbmcycmVhbChzKSB7CisgICAgcmV0dXJu
ICtzOworfQorCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9v
bCkpCisqLworZnVuY3Rpb24gc2NfaXNTeW1ib2wocykgeworICAgIHJldHVybiAodHlwZW9mIHMg
PT09ICJzdHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSA9PT0gc2NfU1lNQk9MX1BSRUZJWCk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChzeW1ib2wy
c3RyaW5nX2ltbXV0YWJsZSkpKQorKi8KK2Z1bmN0aW9uIHNjX3N5bWJvbDJzdHJpbmcocykgewor
ICAgIHJldHVybiBzLnNsaWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgIChwZWVwaG9sZSAocHJlZml4ICInXFx1MUU5QycgKyIpKSkKKyovCitmdW5jdGlvbiBz
Y19zdHJpbmcyc3ltYm9sKHMpIHsKKyAgICByZXR1cm4gc2NfU1lNQk9MX1BSRUZJWCArIHM7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCBzeW1ib2wtYXBwZW5kKQorICAgICAgICAgICAocGVlcGhv
bGUgKHN5bWJvbEFwcGVuZF9pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19zeW1ib2xBcHBl
bmQoKSB7CisgICAgdmFyIHJlcyA9IHNjX1NZTUJPTF9QUkVGSVg7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcmVzICs9IGFyZ3VtZW50c1tpXS5zbGlj
ZSgxKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnZhbCIpKSkKKyovCitmdW5jdGlvbiBzY19jaGFy
MnN0cmluZyhjKSB7IHJldHVybiBjLnZhbDsgfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICInXFx1MUU5QycgKyAiIGMgIi52YWwiKSkpCisq
LworZnVuY3Rpb24gc2NfY2hhcjJzeW1ib2woYykgeyByZXR1cm4gc2NfU1lNQk9MX1BSRUZJWCAr
IGMudmFsOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9v
bCkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmcocykgeworICAgIHJldHVybiAodHlwZW9mIHMg
PT09ICJzdHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSAhPT0gc2NfU1lNQk9MX1BSRUZJWCk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWFrZVN0cmluZyA9IHNjX21h
a2Vqc1N0cmluZzsKKworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
c3RyaW5nKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KQorCWFyZ3VtZW50c1tpXSA9IGFyZ3VtZW50c1tpXS52YWw7CisgICAgcmV0dXJuICIiLmNvbmNh
dC5hcHBseSgiIiwgYXJndW1lbnRzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5sZW5ndGgiKSkpCisqLworZnVuY3Rpb24gc2Nf
c3RyaW5nTGVuZ3RoKHMpIHsgcmV0dXJuIHMubGVuZ3RoOyB9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19zdHJpbmdSZWYocywgaykgeworICAgIHJldHVybiBuZXcg
c2NfQ2hhcihzLmNoYXJBdChrKSk7Cit9CisKKy8qIHRoZXJlJ3Mgbm8gc3RyaW5nU2V0IGluIHRo
ZSBpbW11dGFibGUgdmVyc2lvbgorZnVuY3Rpb24gc2Nfc3RyaW5nU2V0KHMsIGssIGMpCisqLwor
CisKKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJpbmc9PykKKwkgICAodHlwZSBib29sKQorICAgICAg
ICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPT09ICIgc3RyMikpKQorKi8KK2Z1bmN0aW9u
IHNjX2lzU3RyaW5nRXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxID09PSBzMjsKK30KKy8q
KiogTUVUQSAoKGV4cG9ydCBzdHJpbmc8PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPCAiIHN0cjIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0
cmluZ0xlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxIDwgczI7Cit9CisvKioqIE1FVEEgKChl
eHBvcnQgc3RyaW5nPj8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlICho
b2xlIDIgc3RyMSAiID4gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdHcmVhdGVy
KHMxLCBzMikgeworICAgIHJldHVybiBzMSA+IHMyOworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0
cmluZzw9PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBz
dHIxICIgPD0gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdMZXNzRXF1YWwoczEs
IHMyKSB7CisgICAgcmV0dXJuIHMxIDw9IHMyOworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0cmlu
Zz49PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIx
ICIgPj0gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdHcmVhdGVyRXF1YWwoczEs
IHMyKSB7CisgICAgcmV0dXJuIHMxID49IHMyOworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0cmlu
Zy1jaT0/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0
cjEgIi50b0xvd2VyQ2FzZSgpID09PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2lzU3RyaW5nQ0lFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4gczEudG9Mb3dl
ckNhc2UoKSA9PT0gczIudG9Mb3dlckNhc2UoKTsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJp
bmctY2k8PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBz
dHIxICIudG9Mb3dlckNhc2UoKSA8ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkpCisqLworZnVu
Y3Rpb24gc2NfaXNTdHJpbmdDSUxlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxLnRvTG93ZXJD
YXNlKCkgPCBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0cmluZy1j
aT4/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEg
Ii50b0xvd2VyQ2FzZSgpID4gIiBzdHIyICIudG9Mb3dlckNhc2UoKSIpKSkKKyovCitmdW5jdGlv
biBzY19pc1N0cmluZ0NJR3JlYXRlcihzMSwgczIpIHsKKyAgICByZXR1cm4gczEudG9Mb3dlckNh
c2UoKSA+IHMyLnRvTG93ZXJDYXNlKCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgc3RyaW5nLWNp
PD0/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEg
Ii50b0xvd2VyQ2FzZSgpIDw9ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkpCisqLworZnVuY3Rp
b24gc2NfaXNTdHJpbmdDSUxlc3NFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4gczEudG9Mb3dl
ckNhc2UoKSA8PSBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0cmlu
Zy1jaT49PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBz
dHIxICIudG9Mb3dlckNhc2UoKSA+PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2lzU3RyaW5nQ0lHcmVhdGVyRXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMx
LnRvTG93ZXJDYXNlKCkgPj0gczIudG9Mb3dlckNhc2UoKTsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMyBzICIuc3Vic3RyaW5nKCIgc3Rh
cnQgIiwgIiBlbmQgIikiKSkpCisqLworZnVuY3Rpb24gc2Nfc3Vic3RyaW5nKHMsIHN0YXJ0LCBl
bmQpIHsKKyAgICByZXR1cm4gcy5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpCisqLworZnVuY3Rpb24gc2NfaXNTdWJzdHJpbmdfYXQoczEsIHMyLCBp
KSB7CisgICAgcmV0dXJuIHMyID09IHMxLnN1YnN0cmluZyhpLCBpKyBzMi5sZW5ndGgpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMCAj
ZiAiKyIgIicnIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0FwcGVuZCgpIHsKKyAgICByZXR1
cm4gIiIuY29uY2F0LmFwcGx5KCIiLCBhcmd1bWVudHMpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLwordmFyIHNjX3N0cmluZzJsaXN0ID0gc2NfanNzdHJpbmcybGlzdDsKKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19saXN0MnN0cmluZyA9IHNjX2xpc3QyanNz
dHJpbmc7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChp
ZCkpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0NvcHkocykgeworICAgIHJldHVybiBzOworfQor
CisvKiB0aGVyZSdzIG5vIHN0cmluZy1maWxsIGluIHRoZSBpbW11dGFibGUgdmVyc2lvbgorZnVu
Y3Rpb24gc2Nfc3RyaW5nRmlsbChzLCBjKQorKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5zbGljZSgxKSIpKSkKKyovCitmdW5jdGlv
biBzY19rZXl3b3JkMnN0cmluZyhvKSB7CisgICAgcmV0dXJuIG8uc2xpY2UoMSk7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVmaXggIidcXHUx
RTlEJyArIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZzJrZXl3b3JkKG8pIHsKKyAgICByZXR1
cm4gc2NfS0VZV09SRF9QUkVGSVggKyBvOworfQorCitTdHJpbmcucHJvdG90eXBlLnNjX3RvRGlz
cGxheVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmNoYXJBdCgwKSA9PT0gc2Nf
U1lNQk9MX1BSRUZJWCkKKwkvLyBUT0RPOiBjYXJlIGZvciBzeW1ib2xzIHdpdGggc3BhY2VzIChl
c2NhcGUtY2hhcnMgc3ltYm9scykuCisJcmV0dXJuIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZSBp
ZiAodGhpcy5jaGFyQXQoMCkgPT09IHNjX0tFWVdPUkRfUFJFRklYKQorCXJldHVybiAiOiIgKyB0
aGlzLnNsaWNlKDEpOworICAgIGVsc2UKKwlyZXR1cm4gdGhpcy50b1N0cmluZygpOworfTsKKwor
U3RyaW5nLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgaWYg
KHRoaXMuY2hhckF0KDApID09PSBzY19TWU1CT0xfUFJFRklYKQorCS8vIFRPRE86IGNhcmUgZm9y
IHN5bWJvbHMgd2l0aCBzcGFjZXMgKGVzY2FwZS1jaGFycyBzeW1ib2xzKS4KKwlyZXR1cm4gdGhp
cy5zbGljZSgxKTsKKyAgICBlbHNlIGlmICh0aGlzLmNoYXJBdCgwKSA9PT0gc2NfS0VZV09SRF9Q
UkVGSVgpCisJcmV0dXJuICI6IiArIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZQorCXJldHVybiAn
IicgKyBzY19lc2NhcGVXcml0ZVN0cmluZyh0aGlzKSArICciJzsKK307CisvKiBFeHBvcnRlZCBW
YXJpYWJsZXMgKi8KK3ZhciBCZ0xfdGVzdHpkMmJveWVyemQyOwordmFyIEJnTF9uYm95ZXJ6ZDJi
ZW5jaG1hcmt6ZDI7Cit2YXIgQmdMX3NldHVwemQyYm95ZXJ6ZDI7CisvKiBFbmQgRXhwb3J0cyAq
LworCit2YXIgdHJhbnNsYXRlX3Rlcm1fbmJveWVyOwordmFyIHRyYW5zbGF0ZV9hcmdzX25ib3ll
cjsKK3ZhciB1bnRyYW5zbGF0ZV90ZXJtX25ib3llcjsKK3ZhciBCZ0xfc2Nfc3ltYm9semQyemUz
c3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyOwordmFyIEJnTF9zY196YTJzeW1ib2x6ZDJyZWNv
cmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXI7Cit2YXIgdHJhbnNsYXRlX2FsaXN0X25ib3llcjsK
K3ZhciBhcHBseV9zdWJzdF9uYm95ZXI7Cit2YXIgYXBwbHlfc3Vic3RfbHN0X25ib3llcjsKK3Zh
ciB0YXV0b2xvZ3lwX25ib3llcjsKK3ZhciBpZl9jb25zdHJ1Y3Rvcl9uYm95ZXI7Cit2YXIgcmV3
cml0ZV9jb3VudF9uYm95ZXI7Cit2YXIgcmV3cml0ZV9uYm95ZXI7Cit2YXIgcmV3cml0ZV9hcmdz
X25ib3llcjsKK3ZhciB1bmlmeV9zdWJzdF9uYm95ZXI7Cit2YXIgb25lX3dheV91bmlmeTFfbmJv
eWVyOwordmFyIGZhbHNlX3Rlcm1fbmJveWVyOwordmFyIHRydWVfdGVybV9uYm95ZXI7Cit2YXIg
dHJhbnNfb2ZfaW1wbGllczFfbmJveWVyOwordmFyIGlzX3Rlcm1fZXF1YWxfbmJveWVyOwordmFy
IGlzX3Rlcm1fbWVtYmVyX25ib3llcjsKK3ZhciBjb25zdF9uYm95ZXI7Cit2YXIgc2NfY29uc3Rf
M19uYm95ZXI7Cit2YXIgc2NfY29uc3RfNF9uYm95ZXI7Cit7CisgICAgKHNjX2NvbnN0XzRfbmJv
eWVyID0gKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ltcGxpZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigiXHUxRTlDdSIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3UiLChu
ZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxudWxsKSkp
KSkpKTsKKyAgICAoc2NfY29uc3RfM19uYm95ZXIgPSBzY19saXN0KChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbXBpbGUiLChuZXcg
c2NfUGFpcigiXHUxRTlDZm9ybSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29kZWdlbiIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3B0aW1pemUiLChuZXcgc2NfUGFpcigi
XHUxRTlDZm9ybSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmls
IixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXAiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzZXFwIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVyZXFwIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNib29sZWFuIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29yIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmZiIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2V2ZW4xIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDb2RkIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNjb3VudHBzLSIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3ByZWQiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnRw
cy1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLChuZXcgc2NfUGFpcigiXHUxRTlDcHJlZCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmYWN0LSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWN0LWxvb3AiLChuZXcgc2NfUGFpcigi
XHUxRTlDaSIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVy
c2UtIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3JldmVyc2UtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2RpdmlkZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIiLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2Fzc3VtZS10cnVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNjb25zIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3ZhciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVs
bCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNhc3N1bWUtZmFsc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDdmFyIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2FsaXN0IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2NvbnMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcg
c2NfUGFpcigiXHUxRTlDdmFyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixu
dWxsKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2FsaXN0IixudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3RhdXRvbG9neS1jaGVja2VyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RhdXRvbG9neXAiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZhbHNpZnkiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFsc2lmeTEiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51
bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm8iLG51bGwpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDcSIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3
IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNv
ciIsKG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUx
RTlDcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsbnVsbCkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3QiLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIs
KG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlD
cCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUx
RTlDcSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q251
bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkp
KSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcg
c2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDZCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNlIixudWxsKSkpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFF
OUNkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2UiLG51bGwpKSkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2QiLChuZXcgc2NfUGFpcigiXHUxRTlDZSIsbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNu
dW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJc
dTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6
ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSxudWxs
KSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIs
bnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ei
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChu
ZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzLXRy
ZWUiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNh
IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzLWZyaW5nZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxu
dWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNt
ZWFuaW5nIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVs
bCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIs
bnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBl
bmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFp
cigiXHUxRTlDYiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2
ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSks
IChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUx
RTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZXhlYyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5k
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoIlx1MUU5Q3BkcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNlbnZybiIsbnVs
bCkpKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4ZWMiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXhlYyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3BkcyIsKG5ldyBzY19QYWly
KCJcdTFFOUNlbnZybiIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDZW52cm4iLG51
bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtYy1mbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Zs
YXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFF
OUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFp
cigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVt
YmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSks
bnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbnRlcnNlY3Qi
LChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkp
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIs
KG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1MUU5
Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVs
bCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcg
c2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
eHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNleHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWly
KCJcdTFFOUNrIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNleHAiLChuZXcg
c2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlLWxvb3Ai
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkp
KSwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJz
ZS1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNjb3VudC1saXN0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3NvcnQtbHAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnQt
bGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnQtbGlzdCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkp
KSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcg
c2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSks
IChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMxIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2wiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxs
KSkpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3Bvd2VyLWV2YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDbCIsKG5ldyBzY19QYWlyKCJcdTFF
OUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNi
aWctcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChu
ZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkp
KSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dl
ci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIs
bnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVy
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVy
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3F1b3RpZW50Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2ki
LG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29yIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFF
OUNqIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oi
LChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3JlbWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3Ai
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1yZXAiLChuZXcgc2NfUGFpcigiXHUxRTlD
aSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUx
RTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgi
LChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bvd2VyLXJlcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcG93ZXItcmVwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFp
cigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUN6ZXJvIixudWxsKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpKSkpKSwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNnY2QiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q250aCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFp
cigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNudGgiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWly
KCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q250
aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSxudWxs
KSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUx
RTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2MiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN3IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3oi
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkp
LG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJc
dTFFOUNiIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKCJc
dTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6
IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkp
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpLG51bGwpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNnY2QiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNnY2QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdmFsdWUiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdmFsdWUiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmlsIixu
dWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmxpc3RwIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNnb3BoZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSks
bnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc2FtZWZyaW5nZSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0b3IiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxs
KSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2dyZWF0ZXN0LWZhY3RvciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCgxKSxudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1i
ZXJwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0b3IiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51
bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMt
bGlzdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDdGltZXMtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcy1saXN0IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcHJpbWUtbGlz
dCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3ByaW1lLWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcHJpbWUtbGlzdCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3ciLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIs
KG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNncmVhdGVyZXFwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3Qi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIs
bnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcg
c2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigoMSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoc2NfbGlzdCgiXHUxRTlDYW5kIiwg
KG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVs
bCkpLG51bGwpKSkpKSksbnVsbCkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJw
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8i
LG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkp
KSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkZWxldGUiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSkpLG51bGwp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWly
KCJcdTFFOUNsIixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2wiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc29ydDIiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2wiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZGVsZXRlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3NvcnQyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLG51bGwpKSkpLG51bGwp
KSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZHNvcnQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc29ydDIiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gxIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gyIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gz
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3g0IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3g1IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3g2IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3g3IixudWxsKSkpKSkpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
KDYpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4NyIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNl
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51
bGwpKSkpLChuZXcgc2NfUGFpcigoMiksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1
cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzaWdt
YSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLChuZXcgc2Nf
UGFpcigiXHUxRTlDaSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNxdW90aWVudCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcg
c2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIs
KG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
MiksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNh
ZGQxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN6IixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWly
KCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcg
c2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksbnVsbCkp
KSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGVsZXRl
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkp
KSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigi
XHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJl
ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ei
LG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVy
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbnRoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNu
aWwiLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGFzdCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ei
LChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbGFzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDY2FyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsYXN0IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYiIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSkpKSxudWxsKSkpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xl
c3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIs
bnVsbCkpKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXNzaWdubWVudCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQi
LChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkp
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbmVkcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDYXNzaWdubWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YXNzaWdubWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ii
LG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NhciIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZ29waGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwp
KSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsaXN0cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjYXIiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVs
bCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNjZHIiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2dv
cGhlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY2RyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3
IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNx
dW90aWVudCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVy
byIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2V0Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Nl
dCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNtZW0iLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXAiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigiXHUxRTlDdmFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNnZXQiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWlyKCJcdTFFOUNtZW0i
LG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKTsKKyAgICAoY29uc3RfbmJveWVy
ID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUNmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2Nf
UGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1
cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2QiLG51bGwpKSkp
KSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3oiLChuZXcgc2NfUGFpcigiXHUxRTlDZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigiXHUxRTlD
YSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN1IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdyIsKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwp
KSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKSkpKTsKKyAgICBCZ0xfbmJv
eWVyemQyYmVuY2htYXJremQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBhcmdzID0gbnVs
bDsKKyAgICAgICAgZm9yICh2YXIgc2NfdG1wID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IHNjX3Rt
cCA+PSAwOyBzY190bXAtLSkgeworICAgICAgICAgICAgYXJncyA9IHNjX2NvbnMoYXJndW1lbnRz
W3NjX3RtcF0sIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIHZhciBuOworICAgICAgICByZXR1
cm4gKChuID0gKChhcmdzID09PSBudWxsKT8oMCk6KGFyZ3MuY2FyKSkpLCAoQmdMX3NldHVwemQy
Ym95ZXJ6ZDIoKSksIChCZ0xfcnVuemQyYmVuY2htYXJremQyKCgibmJveWVyIisoc2NfbnVtYmVy
MnN0cmluZyhuKSkpLCAoMSksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIChCZ0xf
dGVzdHpkMmJveWVyemQyKG4pKTsKKyAgICAgICAgfSwgZnVuY3Rpb24ocmV3cml0ZXMpIHsKKyAg
ICAgICAgICAgIGlmICgoc2NfaXNOdW1iZXIocmV3cml0ZXMpKSkKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKG4pIHsKKyAgICAgICAgICAgICAgICBjYXNlICgwKToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChyZXdyaXRlcz09PSg5NTAyNCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlICgxKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChyZXdyaXRlcz09PSg1OTE3NzcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAoMik6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAocmV3cml0
ZXM9PT0oMTgxMzk3NSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlICgzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRlcz09PSg1
Mzc1Njc4KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgKDQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVzPT09KDE2NDQ1NDA2
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgKDUp
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVzPT09KDUxNTA3NzM5KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9KSkpOworICAgIH07CisgICAgQmdMX3NldHVwemQyYm95ZXJ6
ZDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKyAgICBCZ0xf
dGVzdHpkMmJveWVyemQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH07CisgICAgdHJhbnNsYXRlX3Rlcm1fbmJveWVyID0gZnVuY3Rpb24odGVybSkgeworICAgICAg
ICB2YXIgbHN0OworICAgICAgICByZXR1cm4gKCEodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpP3Rl
cm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNf
bmJveWVyKCh0ZXJtLmNhcikpKSwgKChsc3QgPSAodGVybS5jZHIpKSwgKChsc3QgPT09IG51bGwp
P251bGw6KG5ldyBzY19QYWlyKCh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKGxzdC5jYXIpKSksICh0
cmFuc2xhdGVfYXJnc19uYm95ZXIoKGxzdC5jZHIpKSkpKSkpKSkpOworICAgIH07CisgICAgdHJh
bnNsYXRlX2FyZ3NfbmJveWVyID0gZnVuY3Rpb24obHN0KSB7CisgICAgICAgIHZhciBzY19sc3Rf
NTsKKyAgICAgICAgdmFyIHRlcm07CisgICAgICAgIHJldHVybiAoKGxzdCA9PT0gbnVsbCk/bnVs
bDoobmV3IHNjX1BhaXIoKCh0ZXJtID0gKGxzdC5jYXIpKSwgKCEodGVybSBpbnN0YW5jZW9mIHNj
X1BhaXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVj
b3JkXzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigodGVy
bS5jZHIpKSkpKSkpLCAoKHNjX2xzdF81ID0gKGxzdC5jZHIpKSwgKChzY19sc3RfNSA9PT0gbnVs
bCk/bnVsbDoobmV3IHNjX1BhaXIoKHRyYW5zbGF0ZV90ZXJtX25ib3llcigoc2NfbHN0XzUuY2Fy
KSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY19sc3RfNS5jZHIpKSkpKSkpKSkpOworICAg
IH07CisgICAgdW50cmFuc2xhdGVfdGVybV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJtKSB7CisgICAg
ICAgIHZhciBvcHRyT3BuZDsKKyAgICAgICAgdmFyIHRhaWwxMTMxOworICAgICAgICB2YXIgTDEx
Mjc7CisgICAgICAgIHZhciBmYWxzZUhlYWQxMTMwOworICAgICAgICB2YXIgc3ltYm9sX3JlY29y
ZDsKKyAgICAgICAgaWYgKCEodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAg
cmV0dXJuIHRlcm07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAoZmFsc2VIZWFkMTEzMCA9IChuZXcgc2NfUGFpcihudWxsLCBudWxsKSkpOworICAgICAgICAg
ICAgICAgIChMMTEyNyA9ICh0ZXJtLmNkcikpOworICAgICAgICAgICAgICAgICh0YWlsMTEzMSA9
IGZhbHNlSGVhZDExMzApOworICAgICAgICAgICAgICAgIHdoaWxlICghKEwxMTI3ID09PSBudWxs
KSkgeworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAodGFp
bDExMzEuY2RyID0gKG5ldyBzY19QYWlyKCh1bnRyYW5zbGF0ZV90ZXJtX25ib3llcigoTDExMjcu
Y2FyKSkpLCBudWxsKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTMxID0gKHRh
aWwxMTMxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgKEwxMTI3ID0gKEwxMTI3LmNk
cikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIChvcHRyT3BuZCA9IChmYWxzZUhlYWQxMTMwLmNkcikpOworICAgICAgICAgICAgICAg
IHJldHVybiAobmV3IHNjX1BhaXIoKChzeW1ib2xfcmVjb3JkID0gKHRlcm0uY2FyKSksIChzeW1i
b2xfcmVjb3JkWygwKV0pKSwgb3B0ck9wbmQpKTsKKyAgICAgICAgICAgIH0KKyAgICB9OworICAg
IEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIgPSBmdW5jdGlv
bihzeW0pIHsKKyAgICAgICAgdmFyIHI7CisgICAgICAgIHZhciB4OworICAgICAgICByZXR1cm4g
KCh4ID0gKHNjX2Fzc3Eoc3ltLCBCZ0xfc2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFsaXN0emEy
XzJ6MDBfbmJveWVyKSkpLCAoKHghPT0gZmFsc2UpPyh4LmNkcik6KChyID0gW3N5bSwgbnVsbF0p
LCAoQmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3llciA9IChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoc3ltLCByKSksIEJnTF9zY196YTJzeW1ib2x6ZDJyZWNv
cmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXIpKSksIHIpKSk7CisgICAgfTsKKyAgICAoQmdMX3Nj
X3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3llciA9IG51bGwpOworICAg
IHRyYW5zbGF0ZV9hbGlzdF9uYm95ZXIgPSBmdW5jdGlvbihhbGlzdCkgeworICAgICAgICB2YXIg
c2NfYWxpc3RfNjsKKyAgICAgICAgdmFyIHRlcm07CisgICAgICAgIHJldHVybiAoKGFsaXN0ID09
PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoKGFsaXN0LmNhci5jYXIpLCAo
KHRlcm0gPSAoYWxpc3QuY2FyLmNkcikpLCAoISh0ZXJtIGluc3RhbmNlb2Ygc2NfUGFpcik/dGVy
bToobmV3IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19u
Ym95ZXIoKHRlcm0uY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKCh0ZXJtLmNkcikpKSkp
KSkpKSwgKChzY19hbGlzdF82ID0gKGFsaXN0LmNkcikpLCAoKHNjX2FsaXN0XzYgPT09IG51bGwp
P251bGw6KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigoc2NfYWxpc3RfNi5jYXIuY2FyKSwgKHRy
YW5zbGF0ZV90ZXJtX25ib3llcigoc2NfYWxpc3RfNi5jYXIuY2RyKSkpKSksICh0cmFuc2xhdGVf
YWxpc3RfbmJveWVyKChzY19hbGlzdF82LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAgICBhcHBs
eV9zdWJzdF9uYm95ZXIgPSBmdW5jdGlvbihhbGlzdCwgdGVybSkgeworICAgICAgICB2YXIgbHN0
OworICAgICAgICB2YXIgdGVtcF90ZW1wOworICAgICAgICByZXR1cm4gKCEodGVybSBpbnN0YW5j
ZW9mIHNjX1BhaXIpPygodGVtcF90ZW1wID0gKHNjX2Fzc3EodGVybSwgYWxpc3QpKSksICgodGVt
cF90ZW1wIT09IGZhbHNlKT8odGVtcF90ZW1wLmNkcik6dGVybSkpOihuZXcgc2NfUGFpcigodGVy
bS5jYXIpLCAoKGxzdCA9ICh0ZXJtLmNkcikpLCAoKGxzdCA9PT0gbnVsbCk/bnVsbDoobmV3IHNj
X1BhaXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKGxzdC5jYXIpKSksIChhcHBseV9zdWJz
dF9sc3RfbmJveWVyKGFsaXN0LCAobHN0LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAgICBhcHBs
eV9zdWJzdF9sc3RfbmJveWVyID0gZnVuY3Rpb24oYWxpc3QsIGxzdCkgeworICAgICAgICB2YXIg
c2NfbHN0Xzc7CisgICAgICAgIHJldHVybiAoKGxzdCA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1Bh
aXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKGxzdC5jYXIpKSksICgoc2NfbHN0XzcgPSAo
bHN0LmNkcikpLCAoKHNjX2xzdF83ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigoYXBwbHlf
c3Vic3RfbmJveWVyKGFsaXN0LCAoc2NfbHN0XzcuY2FyKSkpLCAoYXBwbHlfc3Vic3RfbHN0X25i
b3llcihhbGlzdCwgKHNjX2xzdF83LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAgICB0YXV0b2xv
Z3lwX25ib3llciA9IGZ1bmN0aW9uKHNjX3hfMTEsIHRydWVfbHN0LCBmYWxzZV9sc3QpIHsKKyAg
ICAgICAgdmFyIHRtcDExMjU7CisgICAgICAgIHZhciB4OworICAgICAgICB2YXIgdG1wMTEyNjsK
KyAgICAgICAgdmFyIHNjX3hfODsKKyAgICAgICAgdmFyIHNjX3RtcDExMjVfOTsKKyAgICAgICAg
dmFyIHNjX3RtcDExMjZfMTA7CisgICAgICAgIHZhciBzY194XzExOworICAgICAgICB2YXIgdHJ1
ZV9sc3Q7CisgICAgICAgIHZhciBmYWxzZV9sc3Q7CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICBpZiAoKCgoc2NfdG1wMTEyNl8xMCA9IChpc190ZXJtX2VxdWFsX25ib3llcihz
Y194XzExLCB0cnVlX3Rlcm1fbmJveWVyKSkpLCAoKHNjX3RtcDExMjZfMTAhPT0gZmFsc2UpP3Nj
X3RtcDExMjZfMTA6KGlzX3Rlcm1fbWVtYmVyX25ib3llcihzY194XzExLCB0cnVlX2xzdCkpKSkh
PT0gZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGlmICgoKChzY190bXAxMTI1XzkgPSAoaXNfdGVybV9lcXVhbF9u
Ym95ZXIoc2NfeF8xMSwgZmFsc2VfdGVybV9uYm95ZXIpKSksICgoc2NfdG1wMTEyNV85IT09IGZh
bHNlKT9zY190bXAxMTI1Xzk6KGlzX3Rlcm1fbWVtYmVyX25ib3llcihzY194XzExLCBmYWxzZV9s
c3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoc2NfeF8xMSBpbnN0
YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChz
Y194XzExLmNhcik9PT1pZl9jb25zdHJ1Y3Rvcl9uYm95ZXIpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgoKChzY194XzggPSAoc2NfeF8xMS5jZHIuY2FyKSksICh0bXAxMTI2ID0g
KGlzX3Rlcm1fZXF1YWxfbmJveWVyKHNjX3hfOCwgdHJ1ZV90ZXJtX25ib3llcikpKSwgKCh0bXAx
MTI2IT09IGZhbHNlKT90bXAxMTI2Oihpc190ZXJtX21lbWJlcl9uYm95ZXIoc2NfeF84LCB0cnVl
X2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nf
eF8xMSA9IChzY194XzExLmNkci5jZHIuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoeCA9IChzY194
XzExLmNkci5jYXIpKSwgKHRtcDExMjUgPSAoaXNfdGVybV9lcXVhbF9uYm95ZXIoeCwgZmFsc2Vf
dGVybV9uYm95ZXIpKSksICgodG1wMTEyNSE9PSBmYWxzZSk/dG1wMTEyNTooaXNfdGVybV9tZW1i
ZXJfbmJveWVyKHgsIGZhbHNlX2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNjX3hfMTEgPSAoc2NfeF8xMS5jZHIuY2RyLmNkci5jYXIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCgodGF1dG9sb2d5cF9uYm95ZXIoKHNjX3hfMTEuY2RyLmNk
ci5jYXIpLCAobmV3IHNjX1BhaXIoKHNjX3hfMTEuY2RyLmNhciksIHRydWVfbHN0KSksIGZhbHNl
X2xzdCkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmYWxzZV9s
c3QgPSAobmV3IHNjX1BhaXIoKHNjX3hfMTEuY2RyLmNhciksIGZhbHNlX2xzdCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX3hfMTEgPSAoc2NfeF8x
MS5jZHIuY2RyLmNkci5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgKGlmX2NvbnN0cnVjdG9yX25ib3llciA9ICJc
dTFFOUMqIik7CisgICAgKHJld3JpdGVfY291bnRfbmJveWVyID0gKDApKTsKKyAgICByZXdyaXRl
X25ib3llciA9IGZ1bmN0aW9uKHRlcm0pIHsKKyAgICAgICAgdmFyIHRlcm0yOworICAgICAgICB2
YXIgc2NfdGVybV8xMjsKKyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgdmFyIHN5bWJvbF9yZWNv
cmQ7CisgICAgICAgIHZhciBzY19sc3RfMTM7CisgICAgICAgIHsKKyAgICAgICAgICAgICgrK3Jl
d3JpdGVfY291bnRfbmJveWVyKTsKKyAgICAgICAgICAgIGlmICghKHRlcm0gaW5zdGFuY2VvZiBz
Y19QYWlyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVybTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIChzY190ZXJtXzEyID0gKG5l
dyBzY19QYWlyKCh0ZXJtLmNhciksICgoc2NfbHN0XzEzID0gKHRlcm0uY2RyKSksICgoc2NfbHN0
XzEzID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigocmV3cml0ZV9uYm95ZXIoKHNjX2xzdF8x
My5jYXIpKSksIChyZXdyaXRlX2FyZ3NfbmJveWVyKChzY19sc3RfMTMuY2RyKSkpKSkpKSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgKGxzdCA9ICgoc3ltYm9sX3JlY29yZCA9ICh0ZXJtLmNhcikp
LCAoc3ltYm9sX3JlY29yZFsoMSldKSkpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsc3QgPT09IG51bGwpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY190ZXJtXzEyOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKCh0ZXJtMiA9
ICgobHN0LmNhcikuY2RyLmNhcikpLCAodW5pZnlfc3Vic3RfbmJveWVyID0gbnVsbCksIChvbmVf
d2F5X3VuaWZ5MV9uYm95ZXIoc2NfdGVybV8xMiwgdGVybTIpKSkhPT0gZmFsc2UpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVfbmJveWVyKChhcHBseV9z
dWJzdF9uYm95ZXIodW5pZnlfc3Vic3RfbmJveWVyLCAoKGxzdC5jYXIpLmNkci5jZHIuY2FyKSkp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgcmV3cml0ZV9hcmdzX25i
b3llciA9IGZ1bmN0aW9uKGxzdCkgeworICAgICAgICB2YXIgc2NfbHN0XzE0OworICAgICAgICBy
ZXR1cm4gKChsc3QgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChyZXdyaXRlX25ib3llcigo
bHN0LmNhcikpKSwgKChzY19sc3RfMTQgPSAobHN0LmNkcikpLCAoKHNjX2xzdF8xNCA9PT0gbnVs
bCk/bnVsbDoobmV3IHNjX1BhaXIoKHJld3JpdGVfbmJveWVyKChzY19sc3RfMTQuY2FyKSkpLCAo
cmV3cml0ZV9hcmdzX25ib3llcigoc2NfbHN0XzE0LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAg
ICAodW5pZnlfc3Vic3RfbmJveWVyID0gIlx1MUU5QyoiKTsKKyAgICBvbmVfd2F5X3VuaWZ5MV9u
Ym95ZXIgPSBmdW5jdGlvbih0ZXJtMSwgdGVybTIpIHsKKyAgICAgICAgdmFyIGxzdDE7CisgICAg
ICAgIHZhciBsc3QyOworICAgICAgICB2YXIgdGVtcF90ZW1wOworICAgICAgICBpZiAoISh0ZXJt
MiBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICh0
ZW1wX3RlbXAgPSAoc2NfYXNzcSh0ZXJtMiwgdW5pZnlfc3Vic3RfbmJveWVyKSkpOworICAgICAg
ICAgICAgICAgIGlmICgodGVtcF90ZW1wIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIChpc190ZXJtX2VxdWFsX25ib3llcih0ZXJtMSwgKHRlbXBfdGVtcC5jZHIpKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpZiAoKHNjX2lzTnVtYmVy
KHRlcm0yKSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2lzRXF1YWwodGVy
bTEsIHRlcm0yKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pZnlfc3Vic3RfbmJveWVy
ID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcih0ZXJtMiwgdGVybTEpKSwgdW5pZnlfc3Vic3Rf
bmJveWVyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpZiAoISh0ZXJtMSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoKCh0
ZXJtMS5jYXIpPT09KHRlcm0yLmNhcikpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAobHN0MSA9ICh0ZXJtMS5jZHIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChsc3QyID0gKHRlcm0yLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxzdDEgPT09IG51
bGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxzdDIgPT09IG51
bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChsc3QyID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgob25l
X3dheV91bmlmeTFfbmJveWVyKChsc3QxLmNhciksIChsc3QyLmNhcikpKSE9PSBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0MSA9IChsc3QxLmNkcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0MiA9IChsc3QyLmNkcikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworICAgIChmYWxzZV90ZXJtX25ib3llciA9ICJc
dTFFOUMqIik7CisgICAgKHRydWVfdGVybV9uYm95ZXIgPSAiXHUxRTlDKiIpOworICAgIHRyYW5z
X29mX2ltcGxpZXMxX25ib3llciA9IGZ1bmN0aW9uKG4pIHsKKyAgICAgICAgdmFyIHNjX25fMTU7
CisgICAgICAgIHJldHVybiAoKHNjX2lzRXF1YWwobiwgKDEpKSk/KHNjX2xpc3QoIlx1MUU5Q2lt
cGxpZXMiLCAoMCksICgxKSkpOihzY19saXN0KCJcdTFFOUNhbmQiLCAoc2NfbGlzdCgiXHUxRTlD
aW1wbGllcyIsIChuLSgxKSksIG4pKSwgKChzY19uXzE1ID0gKG4tKDEpKSksICgoc2NfaXNFcXVh
bChzY19uXzE1LCAoMSkpKT8oc2NfbGlzdCgiXHUxRTlDaW1wbGllcyIsICgwKSwgKDEpKSk6KHNj
X2xpc3QoIlx1MUU5Q2FuZCIsIChzY19saXN0KCJcdTFFOUNpbXBsaWVzIiwgKHNjX25fMTUtKDEp
KSwgc2Nfbl8xNSkpLCAodHJhbnNfb2ZfaW1wbGllczFfbmJveWVyKChzY19uXzE1LSgxKSkpKSkp
KSkpKSk7CisgICAgfTsKKyAgICBpc190ZXJtX2VxdWFsX25ib3llciA9IGZ1bmN0aW9uKHgsIHkp
IHsKKyAgICAgICAgdmFyIGxzdDE7CisgICAgICAgIHZhciBsc3QyOworICAgICAgICB2YXIgcjI7
CisgICAgICAgIHZhciByMTsKKyAgICAgICAgaWYgKCh4IGluc3RhbmNlb2Ygc2NfUGFpcikpCisg
ICAgICAgICAgICBpZiAoKHkgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICBp
ZiAoKCgocjEgPSAoeC5jYXIpKSwgKHIyID0gKHkuY2FyKSksIChyMT09PXIyKSkhPT0gZmFsc2Up
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAobHN0MSA9
ICh4LmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDIgPSAoeS5jZHIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKChsc3QxID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChsc3QyID09PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0MiA9PT0gbnVs
bCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgoKGlzX3Rlcm1fZXF1YWxfbmJveWVyKChsc3QxLmNhciksIChs
c3QyLmNhcikpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0
MSA9IChsc3QxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobHN0MiA9IChsc3QyLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJldHVybiAoc2NfaXNFcXVhbCh4LCB5KSk7CisgICAgfTsKKyAgICBpc190ZXJtX21l
bWJlcl9uYm95ZXIgPSBmdW5jdGlvbih4LCBsc3QpIHsKKyAgICAgICAgdmFyIHg7CisgICAgICAg
IHZhciBsc3Q7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoKGxzdCA9
PT0gbnVsbCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGlmICgoKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHgsIChsc3QuY2Fy
KSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIpKTsKKyAg
ICAgICAgfQorICAgIH07CisgICAgQmdMX3NldHVwemQyYm95ZXJ6ZDIgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIHN5bWJvbF9yZWNvcmQ7CisgICAgICAgIHZhciB2YWx1ZTsKKyAgICAgICAg
dmFyIEJnTF9zY19zeW1ib2x6ZDJyZWNvcmRfMTZ6ZDI7CisgICAgICAgIHZhciBzeW07CisgICAg
ICAgIHZhciBzY19zeW1fMTc7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICB2YXIgbHN0Owor
ICAgICAgICB2YXIgc2NfdGVybV8xODsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMTk7CisgICAgICAg
IHsKKyAgICAgICAgICAgIChCZ0xfc2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFsaXN0emEyXzJ6
MDBfbmJveWVyID0gbnVsbCk7CisgICAgICAgICAgICAoaWZfY29uc3RydWN0b3JfbmJveWVyID0g
KEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoIlx1MUU5Q2lm
IikpKTsKKyAgICAgICAgICAgIChmYWxzZV90ZXJtX25ib3llciA9ICgoc2NfdGVybV8xOSA9IChu
ZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpKSwgKCEoc2NfdGVybV8xOSBpbnN0YW5jZW9mIHNj
X1BhaXIpP3NjX3Rlcm1fMTk6KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9s
emQycmVjb3JkXzF6ZTNfbmJveWVyKChzY190ZXJtXzE5LmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdz
X25ib3llcigoc2NfdGVybV8xOS5jZHIpKSkpKSkpKTsKKyAgICAgICAgICAgICh0cnVlX3Rlcm1f
bmJveWVyID0gKChzY190ZXJtXzE4ID0gKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSkpLCAo
IShzY190ZXJtXzE4IGluc3RhbmNlb2Ygc2NfUGFpcik/c2NfdGVybV8xODoobmV3IHNjX1BhaXIo
KEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoKHNjX3Rlcm1f
MTguY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY190ZXJtXzE4LmNkcikpKSkpKSkp
OworICAgICAgICAgICAgKGxzdCA9IHNjX2NvbnN0XzNfbmJveWVyKTsKKyAgICAgICAgICAgIHdo
aWxlICghKGxzdCA9PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICh0ZXJtID0gKGxzdC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgodGVy
bSBpbnN0YW5jZW9mIHNjX1BhaXIpJiYoKCh0ZXJtLmNhcik9PT0iXHUxRTlDZXF1YWwiKSYmKCh0
ZXJtLmNkci5jYXIpIGluc3RhbmNlb2Ygc2NfUGFpcikpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfc3ltXzE3ID0gKCh0ZXJtLmNk
ci5jYXIpLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9IChuZXcg
c2NfUGFpcigoISh0ZXJtIGluc3RhbmNlb2Ygc2NfUGFpcik/dGVybToobmV3IHNjX1BhaXIoKEJn
TF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoKHRlcm0uY2FyKSkp
LCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKCh0ZXJtLmNkcikpKSkpKSwgKChzeW0gPSAoKHRlcm0u
Y2RyLmNhcikuY2FyKSksIChCZ0xfc2Nfc3ltYm9semQycmVjb3JkXzE2emQyID0gKEJnTF9zY19z
eW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoc3ltKSkpLCAoQmdMX3NjX3N5
bWJvbHpkMnJlY29yZF8xNnpkMlsoMSldKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN5bWJvbF9yZWNvcmQgPSAoQmdMX3NjX3N5bWJvbHpkMnplM3N5bWJvbHpkMnJlY29yZF8x
emUzX25ib3llcihzY19zeW1fMTcpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5
bWJvbF9yZWNvcmRbKDEpXSA9IHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2Vycm9y
KCJBREQtTEVNTUEgZGlkIG5vdCBsaWtlIHRlcm06ICAiLCB0ZXJtKSk7CisgICAgICAgICAgICAg
ICAgICAgIChsc3QgPSAobHN0LmNkcikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAgICBCZ0xf
dGVzdHpkMmJveWVyemQyID0gZnVuY3Rpb24obikgeworICAgICAgICB2YXIgb3B0ck9wbmQ7Cisg
ICAgICAgIHZhciB0ZXJtOworICAgICAgICB2YXIgc2Nfbl8yMDsKKyAgICAgICAgdmFyIGFuc3dl
cjsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMjE7CisgICAgICAgIHZhciBzY190ZXJtXzIyOworICAg
ICAgICB7CisgICAgICAgICAgICAocmV3cml0ZV9jb3VudF9uYm95ZXIgPSAoMCkpOworICAgICAg
ICAgICAgKHRlcm0gPSBzY19jb25zdF80X25ib3llcik7CisgICAgICAgICAgICAoc2Nfbl8yMCA9
IG4pOworICAgICAgICAgICAgd2hpbGUgKCEoc2Nfbl8yMD09PSAwKSkgeworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKHRlcm0gPSAoc2NfbGlzdCgiXHUxRTlDb3IiLCB0
ZXJtLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgKC0tc2Nfbl8yMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgKHNjX3Rlcm1fMjIgPSB0ZXJtKTsKKyAgICAgICAgICAgIGlmICghKHNjX3Rlcm1fMjIg
aW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAob3B0ck9wbmQgPSBzY190ZXJt
XzIyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAob3B0ck9wbmQgPSAobmV3
IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIo
KHNjX3Rlcm1fMjIuY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY190ZXJtXzIyLmNk
cikpKSkpKTsKKyAgICAgICAgICAgIChzY190ZXJtXzIxID0gKGFwcGx5X3N1YnN0X25ib3llcigo
KGNvbnN0X25ib3llciA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKChj
b25zdF9uYm95ZXIuY2FyLmNhciksICh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKGNvbnN0X25ib3ll
ci5jYXIuY2RyKSkpKSksICh0cmFuc2xhdGVfYWxpc3RfbmJveWVyKChjb25zdF9uYm95ZXIuY2Ry
KSkpKSkpLCBvcHRyT3BuZCkpKTsKKyAgICAgICAgICAgIChhbnN3ZXIgPSAodGF1dG9sb2d5cF9u
Ym95ZXIoKHJld3JpdGVfbmJveWVyKHNjX3Rlcm1fMjEpKSwgbnVsbCwgbnVsbCkpKTsKKyAgICAg
ICAgICAgIChzY193cml0ZShyZXdyaXRlX2NvdW50X25ib3llcikpOworICAgICAgICAgICAgKHNj
X2Rpc3BsYXkoIiByZXdyaXRlcyIpKTsKKyAgICAgICAgICAgIChzY19uZXdsaW5lKCkpOworICAg
ICAgICAgICAgaWYgKChhbnN3ZXIhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBy
ZXdyaXRlX2NvdW50X25ib3llcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworfQorLyogRXhwb3J0ZWQgVmFyaWFibGVz
ICovCit2YXIgQmdMX3BhcnNlemQyemUzbmJ6ZDJ0cmVlc3plMzsKK3ZhciBCZ0xfZWFybGV5emQy
YmVuY2htYXJremQyOwordmFyIEJnTF9wYXJzZXpkMnplM3BhcnNlZHpmM3pjMjsKK3ZhciB0ZXN0
OwordmFyIEJnTF9wYXJzZXpkMnplM3RyZWVzejMxOwordmFyIEJnTF9tYWtlemQycGFyc2VyemQy
OworLyogRW5kIEV4cG9ydHMgKi8KKwordmFyIGNvbnN0X2VhcmxleTsKK3sKKyAgICAoY29uc3Rf
ZWFybGV5ID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcyIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3MiLChuZXcgc2NfUGFpcigiXHUxRTlDcyIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxs
KSkpOworICAgIEJnTF9tYWtlemQycGFyc2VyemQyID0gZnVuY3Rpb24oZ3JhbW1hciwgbGV4ZXIp
IHsKKyAgICAgICAgdmFyIGk7CisgICAgICAgIHZhciBwYXJzZXJfZGVzY3I7CisgICAgICAgIHZh
ciBkZWZfbG9vcDsKKyAgICAgICAgdmFyIG5iX250czsKKyAgICAgICAgdmFyIG5hbWVzOworICAg
ICAgICB2YXIgc3RlcHM7CisgICAgICAgIHZhciBwcmVkaWN0b3JzOworICAgICAgICB2YXIgZW5k
ZXJzOworICAgICAgICB2YXIgc3RhcnRlcnM7CisgICAgICAgIHZhciBudHM7CisgICAgICAgIHZh
ciBzY19uYW1lc18xOworICAgICAgICB2YXIgc2Nfc3RlcHNfMjsKKyAgICAgICAgdmFyIHNjX3By
ZWRpY3RvcnNfMzsKKyAgICAgICAgdmFyIHNjX2VuZGVyc180OworICAgICAgICB2YXIgc2Nfc3Rh
cnRlcnNfNTsKKyAgICAgICAgdmFyIG5iX2NvbmZzOworICAgICAgICB2YXIgQmdMX3NjX2RlZnpk
Mmxvb3BfNnpkMjsKKyAgICAgICAgdmFyIEJnTF9zY19uYnpkMm50c183emQyOworICAgICAgICB2
YXIgc2NfbnRzXzg7CisgICAgICAgIHZhciBCZ0xfc2NfZGVmemQybG9vcF85emQyOworICAgICAg
ICB2YXIgaW5kOworICAgICAgICB7CisgICAgICAgICAgICBpbmQgPSBmdW5jdGlvbihudCwgc2Nf
bnRzXzEwKSB7CisgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAoaSA9ICgoc2NfbnRzXzEwLmxlbmd0aCktKDEpKSk7CisgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KGk+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19pc0VxdWFsKChz
Y19udHNfMTBbaV0pLCBudCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgtLWkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAoc2Nf
bnRzXzggPSAoKEJnTF9zY19kZWZ6ZDJsb29wXzl6ZDIgPSBmdW5jdGlvbihkZWZzLCBzY19udHNf
MTEpIHsKKyAgICAgICAgICAgICAgICB2YXIgcnVsZV9sb29wOworICAgICAgICAgICAgICAgIHZh
ciBoZWFkOworICAgICAgICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICgoZGVmcyBpbnN0YW5jZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChoZWFkID0g
KGRlZi5jYXIpKSwgKHJ1bGVfbG9vcCA9IGZ1bmN0aW9uKHJ1bGVzLCBzY19udHNfMTIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIG50OworICAgICAgICAgICAgICAgICAgICB2YXIgbDsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHNjX250c18xMzsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIGlmICgocnVsZXMgaW5zdGFuY2VvZiBzY19QYWly
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9
IHJ1bGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfMTMgPSBzY19udHNf
MTIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5jZW9mIHNj
X1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChudCA9IChsLmNhcikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzY19udHNfMTMgPSAoKChzY19tZW1iZXIobnQsIHNjX250c18xMykp
IT09IGZhbHNlKT9zY19udHNfMTM6KG5ldyBzY19QYWlyKG50LCBzY19udHNfMTMpKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocnVsZV9sb29wKChydWxl
cy5jZHIpLCBzY19udHNfMTMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChCZ0xfc2Nf
ZGVmemQybG9vcF85emQyKChkZWZzLmNkciksIHNjX250c18xMikpOworICAgICAgICAgICAgICAg
IH0pLCAocnVsZV9sb29wKChkZWYuY2RyKSwgKCgoc2NfbWVtYmVyKGhlYWQsIHNjX250c18xMSkp
IT09IGZhbHNlKT9zY19udHNfMTE6KG5ldyBzY19QYWlyKGhlYWQsIHNjX250c18xMSkpKSkpKToo
c2NfbGlzdDJ2ZWN0b3IoKHNjX3JldmVyc2Uoc2NfbnRzXzExKSkpKSk7CisgICAgICAgICAgICB9
KSwgKEJnTF9zY19kZWZ6ZDJsb29wXzl6ZDIoZ3JhbW1hciwgbnVsbCkpKSk7CisgICAgICAgICAg
ICAoQmdMX3NjX25iemQybnRzXzd6ZDIgPSAoc2NfbnRzXzgubGVuZ3RoKSk7CisgICAgICAgICAg
ICAobmJfY29uZnMgPSAoKChCZ0xfc2NfZGVmemQybG9vcF82emQyID0gZnVuY3Rpb24oZGVmcywg
QmdMX3NjX25iemQyY29uZnNfMTR6ZDIpIHsKKyAgICAgICAgICAgICAgICB2YXIgcnVsZV9sb29w
OworICAgICAgICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoZGVm
cyBpbnN0YW5jZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChydWxlX2xvb3AgPSBm
dW5jdGlvbihydWxlcywgQmdMX3NjX25iemQyY29uZnNfMTV6ZDIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJjb25mc18x
NnpkMjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAgICAgICAg
IGlmICgocnVsZXMgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IHJ1bGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18xNnpkMiA9IEJnTF9zY19uYnpkMmNvbmZzXzE1
emQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBz
Y19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCsrQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocnVsZV9sb29wKChydWxlcy5j
ZHIpLCAoQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIrKDEpKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKEJnTF9zY19kZWZ6ZDJsb29wXzZ6ZDIoKGRlZnMuY2RyKSwgQmdMX3NjX25iemQy
Y29uZnNfMTV6ZDIpKTsKKyAgICAgICAgICAgICAgICB9KSwgKHJ1bGVfbG9vcCgoZGVmLmNkciks
IEJnTF9zY19uYnpkMmNvbmZzXzE0emQyKSkpOkJnTF9zY19uYnpkMmNvbmZzXzE0emQyKTsKKyAg
ICAgICAgICAgIH0pLCAoQmdMX3NjX2RlZnpkMmxvb3BfNnpkMihncmFtbWFyLCAoMCkpKSkrQmdM
X3NjX25iemQybnRzXzd6ZDIpKTsKKyAgICAgICAgICAgIChzY19zdGFydGVyc181ID0gKHNjX21h
a2VWZWN0b3IoQmdMX3NjX25iemQybnRzXzd6ZDIsIG51bGwpKSk7CisgICAgICAgICAgICAoc2Nf
ZW5kZXJzXzQgPSAoc2NfbWFrZVZlY3RvcihCZ0xfc2NfbmJ6ZDJudHNfN3pkMiwgbnVsbCkpKTsK
KyAgICAgICAgICAgIChzY19wcmVkaWN0b3JzXzMgPSAoc2NfbWFrZVZlY3RvcihCZ0xfc2NfbmJ6
ZDJudHNfN3pkMiwgbnVsbCkpKTsKKyAgICAgICAgICAgIChzY19zdGVwc18yID0gKHNjX21ha2VW
ZWN0b3IobmJfY29uZnMsIGZhbHNlKSkpOworICAgICAgICAgICAgKHNjX25hbWVzXzEgPSAoc2Nf
bWFrZVZlY3RvcihuYl9jb25mcywgZmFsc2UpKSk7CisgICAgICAgICAgICAobnRzID0gc2NfbnRz
XzgpOworICAgICAgICAgICAgKHN0YXJ0ZXJzID0gc2Nfc3RhcnRlcnNfNSk7CisgICAgICAgICAg
ICAoZW5kZXJzID0gc2NfZW5kZXJzXzQpOworICAgICAgICAgICAgKHByZWRpY3RvcnMgPSBzY19w
cmVkaWN0b3JzXzMpOworICAgICAgICAgICAgKHN0ZXBzID0gc2Nfc3RlcHNfMik7CisgICAgICAg
ICAgICAobmFtZXMgPSBzY19uYW1lc18xKTsKKyAgICAgICAgICAgIChuYl9udHMgPSAoc2NfbnRz
XzgubGVuZ3RoKSk7CisgICAgICAgICAgICAoaSA9IChuYl9udHMtKDEpKSk7CisgICAgICAgICAg
ICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIChzY19zdGVwc18yW2ldID0gKGktbmJfbnRzKSk7CisgICAgICAgICAgICAgICAgICAgIChz
Y19uYW1lc18xW2ldID0gKHNjX2xpc3QoKHNjX250c184W2ldKSwgKDApKSkpOworICAgICAgICAg
ICAgICAgICAgICAoc2NfZW5kZXJzXzRbaV0gPSAoc2NfbGlzdChpKSkpOworICAgICAgICAgICAg
ICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBkZWZfbG9vcCA9IGZ1bmN0aW9uKGRlZnMsIGNvbmYpIHsKKyAgICAgICAgICAgICAgICB2
YXIgcnVsZV9sb29wOworICAgICAgICAgICAgICAgIHZhciBoZWFkOworICAgICAgICAgICAgICAg
IHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoZGVmcyBpbnN0YW5jZW9mIHNjX1Bh
aXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChoZWFkID0gKGRlZi5jYXIpKSwgKHJ1bGVfbG9vcCA9
IGZ1bmN0aW9uKHJ1bGVzLCBjb25mLCBydWxlX251bSkgeworICAgICAgICAgICAgICAgICAgICB2
YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2lfMTc7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBudDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBzY19jb25mXzE4OworICAgICAgICAgICAgICAgICAgICB2YXIgc2NfaV8xOTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIGlmICgocnVs
ZXMgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobmFtZXNbY29uZl0gPSAoc2NfbGlzdChoZWFkLCBydWxlX251bSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfaV8xOSA9IChpbmQoaGVhZCwgbnRz
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGFydGVyc1tzY19pXzE5XSA9IChu
ZXcgc2NfUGFpcihjb25mLCAoc3RhcnRlcnNbc2NfaV8xOV0pKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsID0gcnVsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X2NvbmZfMTggPSBjb25mKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwg
aW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnQgPSAobC5jYXIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwc1tzY19jb25mXzE4XSA9IChp
bmQobnQsIG50cykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19p
XzE3ID0gKGluZChudCwgbnRzKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHByZWRpY3RvcnNbc2NfaV8xN10gPSAobmV3IHNjX1BhaXIoc2NfY29uZl8xOCwgKHByZWRp
Y3RvcnNbc2NfaV8xN10pKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrK3Nj
X2NvbmZfMTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwc1tz
Y19jb25mXzE4XSA9ICgoaW5kKGhlYWQsIG50cykpLW5iX250cykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpID0gKGluZChoZWFkLCBudHMpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGVuZGVyc1tpXSA9IChuZXcgc2NfUGFpcihzY19jb25mXzE4LCAoZW5kZXJzW2ld
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJ1bGVfbG9vcCgocnVs
ZXMuY2RyKSwgKHNjX2NvbmZfMTgrKDEpKSwgKHJ1bGVfbnVtKygxKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChkZWZfbG9vcCgoZGVmcy5jZHIpLCBjb25mKSk7CisgICAgICAgICAg
ICAgICAgfSksIChydWxlX2xvb3AoKGRlZi5jZHIpLCBjb25mLCAoMSkpKSk6dW5kZWZpbmVkKTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICAoZGVmX2xvb3AoZ3JhbW1hciwgKHNjX250c184
Lmxlbmd0aCkpKTsKKyAgICAgICAgICAgIChwYXJzZXJfZGVzY3IgPSBbbGV4ZXIsIHNjX250c184
LCBzY19zdGFydGVyc181LCBzY19lbmRlcnNfNCwgc2NfcHJlZGljdG9yc18zLCBzY19zdGVwc18y
LCBzY19uYW1lc18xXSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oaW5wdXQpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgb3B0ck9wbmQ7CisgICAgICAgICAgICAgICAgdmFyIHNjX29wdHJP
cG5kXzIwOworICAgICAgICAgICAgICAgIHZhciBzY19vcHRyT3BuZF8yMTsKKyAgICAgICAgICAg
ICAgICB2YXIgc2Nfb3B0ck9wbmRfMjI7CisgICAgICAgICAgICAgICAgdmFyIGxvb3AxOworICAg
ICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGV6YTJfMjN6YTI7CisgICAgICAgICAgICAgICAg
dmFyIHRva3M7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpkMm50c18yNHpkMjsKKyAg
ICAgICAgICAgICAgICB2YXIgc2Nfc3RlcHNfMjU7CisgICAgICAgICAgICAgICAgdmFyIHNjX2Vu
ZGVyc18yNjsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdGVfbnVtOworICAgICAgICAgICAgICAg
IHZhciBCZ0xfc2Nfc3RhdGVzemEyXzI3emEyOworICAgICAgICAgICAgICAgIHZhciBzdGF0ZXM7
CisgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgdmFyIGNvbmY7CisgICAg
ICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgdmFyIHRva19udHM7CisgICAgICAg
ICAgICAgICAgdmFyIHNjX2lfMjg7CisgICAgICAgICAgICAgICAgdmFyIHNjX2lfMjk7CisgICAg
ICAgICAgICAgICAgdmFyIGwxOworICAgICAgICAgICAgICAgIHZhciBsMjsKKyAgICAgICAgICAg
ICAgICB2YXIgdG9rOworICAgICAgICAgICAgICAgIHZhciB0YWlsMTEyOTsKKyAgICAgICAgICAg
ICAgICB2YXIgTDExMjU7CisgICAgICAgICAgICAgICAgdmFyIGdvYWxfZW5kZXJzOworICAgICAg
ICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyOworICAgICAgICAgICAgICAgIHZh
ciBCZ0xfc2NfbmJ6ZDJudHNfMzF6ZDI7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpk
MmNvbmZzXzMyemQyOworICAgICAgICAgICAgICAgIHZhciBuYl90b2tzOworICAgICAgICAgICAg
ICAgIHZhciBnb2FsX3N0YXJ0ZXJzOworICAgICAgICAgICAgICAgIHZhciBzY19zdGF0ZXNfMzM7
CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpkMmNvbmZzXzM0emQyOworICAgICAgICAg
ICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyOworICAgICAgICAgICAgICAgIHZhciBz
Y190b2tzXzM2OworICAgICAgICAgICAgICAgIHZhciBmYWxzZUhlYWQxMTI4OworICAgICAgICAg
ICAgICAgIHZhciBzY19uYW1lc18zNzsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3RlcHNfMzg7
CisgICAgICAgICAgICAgICAgdmFyIHNjX3ByZWRpY3RvcnNfMzk7CisgICAgICAgICAgICAgICAg
dmFyIHNjX2VuZGVyc180MDsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3RhcnRlcnNfNDE7Cisg
ICAgICAgICAgICAgICAgdmFyIHNjX250c180MjsKKyAgICAgICAgICAgICAgICB2YXIgbGV4ZXI7
CisgICAgICAgICAgICAgICAgdmFyIHNjX2luZF80MzsKKyAgICAgICAgICAgICAgICB2YXIgbWFr
ZV9zdGF0ZXM7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQyc2V0emQyZ2V0emEy
XzQ0emEyOworICAgICAgICAgICAgICAgIHZhciBjb25mX3NldF9tZXJnZV9uZXdfYmFuZzsKKyAg
ICAgICAgICAgICAgICB2YXIgY29uZl9zZXRfYWRqb2luOworICAgICAgICAgICAgICAgIHZhciBC
Z0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMl80NXphMjsKKyAgICAgICAgICAgICAgICB2YXIg
QmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6MDA7CisgICAgICAgICAgICAgICAg
dmFyIGNvbmZfc2V0X3VuaW9uOworICAgICAgICAgICAgICAgIHZhciBmb3J3OworICAgICAgICAg
ICAgICAgIHZhciBpc19wYXJzZWQ7CisgICAgICAgICAgICAgICAgdmFyIGRlcml2X3RyZWVzOwor
ICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl80N3o3MDsKKyAgICAg
ICAgICAgICAgICB2YXIgbmJfZGVyaXZfdHJlZXM7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9z
Y19uYnpkMmRlcml2emQydHJlZXN6YTJfNDh6YTI7CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzY19pbmRfNDMgPSBmdW5jdGlvbihudCwgc2NfbnRzXzQ5KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9ICgoc2NfbnRzXzQ5Lmxlbmd0aCktKDEpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKChpPj0oMCkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChzY19pc0VxdWFsKChzY19udHNfNDlbaV0pLCBudCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgtLWkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBtYWtlX3N0YXRlcyA9
IGZ1bmN0aW9uKEJnTF9zY19uYnpkMnRva3NfNTB6ZDIsIEJnTF9zY19uYnpkMmNvbmZzXzUxemQy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlc181MjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nf
c3RhdGVzXzUyID0gKHNjX21ha2VWZWN0b3IoKEJnTF9zY19uYnpkMnRva3NfNTB6ZDIrKDEpKSwg
ZmFsc2UpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBCZ0xfc2NfbmJ6ZDJ0
b2tzXzUwemQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGk+PSgwKSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHYgPSAoc2NfbWFrZVZlY3RvcigoQmdMX3NjX25iemQyY29uZnNf
NTF6ZDIrKDEpKSwgZmFsc2UpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodlsoMCldID0gKC0xKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2Nfc3RhdGVzXzUyW2ldID0gdik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Nf
c3RhdGVzXzUyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29uZnpkMnNldHpkMmdldHphMl80NHph
MiA9IGZ1bmN0aW9uKHN0YXRlLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNTN6ZDIsIHNjX2NvbmZfNTQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldF81NXpkMjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoKEJnTF9zY19jb25memQyc2V0XzU1emQyID0gKHN0YXRlWyhzY19jb25m
XzU0KygxKSldKSksICgoQmdMX3NjX2NvbmZ6ZDJzZXRfNTV6ZDIhPT0gZmFsc2UpP0JnTF9zY19j
b25memQyc2V0XzU1emQyOigoY29uZl9zZXQgPSAoc2NfbWFrZVZlY3RvcigoQmdMX3NjX3N0YXRl
emQybnVtXzUzemQyKyg2KSksIGZhbHNlKSkpLCAoY29uZl9zZXRbKDEpXSA9ICgtMykpLCAoY29u
Zl9zZXRbKDIpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDMpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDQp
XSA9ICgtMSkpLCAoc3RhdGVbKHNjX2NvbmZfNTQrKDEpKV0gPSBjb25mX3NldCksIGNvbmZfc2V0
KSkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb25mX3Nl
dF9tZXJnZV9uZXdfYmFuZyA9IGZ1bmN0aW9uKGNvbmZfc2V0KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKChjb25mX3NldFsoKGNvbmZfc2V0WygxKV0pKyg1KSldID0gKGNvbmZf
c2V0Wyg0KV0pKSwgKGNvbmZfc2V0WygxKV0gPSAoY29uZl9zZXRbKDMpXSkpLCAoY29uZl9zZXRb
KDMpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDQpXSA9ICgtMSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgY29uZl9zZXRfYWRqb2luID0gZnVuY3Rpb24oc3Rh
dGUsIGNvbmZfc2V0LCBzY19jb25mXzU2LCBpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgdGFpbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRhaWwgPSAoY29uZl9z
ZXRbKDMpXSkpLCAoY29uZl9zZXRbKGkrKDUpKV0gPSAoLTEpKSwgKGNvbmZfc2V0Wyh0YWlsKyg1
KSldID0gaSksIChjb25mX3NldFsoMyldID0gaSksICgodGFpbDwoMCkpPygoY29uZl9zZXRbKDAp
XSA9IChzdGF0ZVsoMCldKSksIChzdGF0ZVsoMCldID0gc2NfY29uZl81NikpOnVuZGVmaW5lZCkp
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29u
ZnpkMnNldHpkMmFkam9pbnphMl80NXphMiA9IGZ1bmN0aW9uKHNjX3N0YXRlc181NywgQmdMX3Nj
X3N0YXRlemQybnVtXzU4emQyLCBsLCBpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
Y29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl81OTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBz
dGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3RhdGUgPSAoc2Nfc3RhdGVzXzU3W0JnTF9zY19zdGF0ZXpkMm51bV81OHpkMl0pKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSBsKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNjX2NvbmZfNTkgPSAobDEuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoY29uZl9zZXQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc3Rh
dGUsIEJnTF9zY19zdGF0ZXpkMm51bV81OHpkMiwgc2NfY29uZl81OSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGNvbmZfc2V0WyhpKyg1KSldKT09PSBmYWxz
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXRfYWRqb2luKHN0YXRl
LCBjb25mX3NldCwgc2NfY29uZl81OSwgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMSA9IChsMS5j
ZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZp
bmVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80Nnow
MCA9IGZ1bmN0aW9uKHNjX3N0YXRlc182MCwgQmdMX3NjX3N0YXRlc3phMl82MXphMiwgQmdMX3Nj
X3N0YXRlemQybnVtXzYyemQyLCBzY19jb25mXzYzLCBpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzA7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgQmdMX3NjX3N0YXRlemEyXzY1emEyOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICgoc3RhdGUgPSAoc2Nfc3RhdGVzXzYwW0JnTF9zY19z
dGF0ZXpkMm51bV82MnpkMl0pKSwgKCgoKGNvbmZfc2V0ID0gKHN0YXRlWyhzY19jb25mXzYzKygx
KSldKSksICgoY29uZl9zZXQhPT0gZmFsc2UpPyhjb25mX3NldFsoaSsoNSkpXSk6ZmFsc2UpKSE9
PSBmYWxzZSk/KChCZ0xfc2Nfc3RhdGV6YTJfNjV6YTIgPSAoQmdMX3NjX3N0YXRlc3phMl82MXph
MltCZ0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDJdKSksIChCZ0xfc2NfY29uZnpkMnNldHphMl82NHo3
MCA9IChCZ0xfc2NfY29uZnpkMnNldHpkMmdldHphMl80NHphMihCZ0xfc2Nfc3RhdGV6YTJfNjV6
YTIsIEJnTF9zY19zdGF0ZXpkMm51bV82MnpkMiwgc2NfY29uZl82MykpKSwgKCgoQmdMX3NjX2Nv
bmZ6ZDJzZXR6YTJfNjR6NzBbKGkrKDUpKV0pPT09IGZhbHNlKT8oY29uZl9zZXRfYWRqb2luKEJn
TF9zY19zdGF0ZXphMl82NXphMiwgQmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzAsIHNjX2NvbmZf
NjMsIGkpKTp1bmRlZmluZWQpLCB0cnVlKTpmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICBjb25mX3NldF91bmlvbiA9IGZ1bmN0aW9uKHN0YXRlLCBj
b25mX3NldCwgc2NfY29uZl82Niwgb3RoZXJfc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoaSA9IChvdGhlcl9zZXRbKDIpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICgoaT49KDApKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKChjb25mX3NldFsoaSsoNSkpXSk9PT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb25mX3NldF9hZGpvaW4oc3RhdGUsIGNvbmZfc2V0LCBzY19jb25mXzY2LCBpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSAob3RoZXJfc2V0WyhpKyg1
KSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpID0gKG90aGVyX3NldFsoaSsoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICBmb3J3ID0gZnVuY3Rpb24oc2Nfc3RhdGVzXzY3LCBCZ0xfc2Nfc3RhdGV6
ZDJudW1fNjh6ZDIsIHNjX3N0YXJ0ZXJzXzY5LCBzY19lbmRlcnNfNzAsIHNjX3ByZWRpY3RvcnNf
NzEsIHNjX3N0ZXBzXzcyLCBzY19udHNfNzMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBuZXh0X3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0OworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IGVuZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgc3RhcnRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3Rh
cnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sXzc0OworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzc1OworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IGhlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXRfNzZ6
ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemQybnVtXzc3emQy
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHNjX3N0YXRlc183ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmVk
czsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldF83OXpkMjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGVwOworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHNjX2NvbmZfODA7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25i
emQybnRzXzgxemQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlXzgyOwor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
Y19zdGF0ZV84MiA9IChzY19zdGF0ZXNfNjdbQmdMX3NjX3N0YXRlemQybnVtXzY4emQyXSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJudHNfODF6ZDIgPSAoc2Nf
bnRzXzczLmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzY19jb25mXzgwID0gKHNjX3N0YXRlXzgyWygwKV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfY29uZl84MD49KDApKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwID0gKHNjX3N0ZXBzXzcyW3NjX2Nv
bmZfODBdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChC
Z0xfc2NfY29uZnpkMnNldF83OXpkMiA9IChzY19zdGF0ZV84Mlsoc2NfY29uZl84MCsoMSkpXSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVhZCA9IChC
Z0xfc2NfY29uZnpkMnNldF83OXpkMlsoNCldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzY19zdGF0ZV84MlsoMCldID0gKEJnTF9zY19jb25memQyc2V0
Xzc5emQyWygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNvbmZfc2V0X21lcmdlX25ld19iYW5nKEJnTF9zY19jb25memQyc2V0Xzc5emQyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3RlcD49KDAp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfbF83
NCA9IChzY19zdGFydGVyc182OVtzdGVwXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoc2NfbF83NCBpbnN0YW5jZW9mIHNjX1Bh
aXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzdGFydGVyID0gKHNjX2xfNzQuY2FyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhcnRlcl9zZXQg
PSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc2Nfc3RhdGVfODIsIEJnTF9zY19z
dGF0ZXpkMm51bV82OHpkMiwgc3RhcnRlcikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKHN0YXJ0ZXJfc2V0WyhCZ0xf
c2Nfc3RhdGV6ZDJudW1fNjh6ZDIrKDUpKV0pPT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjb25mX3NldF9hZGpvaW4oc2Nfc3RhdGVfODIsIHN0YXJ0ZXJfc2V0LCBzdGFydGVyLCBC
Z0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xfNzQgPSAoc2NfbF83
NC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xfNzQgPSAoc2NfbF83NC5j
ZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobCA9IChzY19lbmRlcnNfNzBbc3RlcF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZW5kZXIgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKChjb25mX3NldCA9IChzY19zdGF0
ZV84MlsoZW5kZXIrKDEpKV0pKSwgKChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZfc2V0WyhCZ0xf
c2Nfc3RhdGV6ZDJudW1fNjh6ZDIrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG5leHQgPSAoc2NfY29uZl84MCsoMSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5leHRf
c2V0ID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKHNjX3N0YXRlXzgyLCBCZ0xf
c2Nfc3RhdGV6ZDJudW1fNjh6ZDIsIG5leHQpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25mX3NldF91bmlv
bihzY19zdGF0ZV84MiwgbmV4dF9zZXQsIG5leHQsIEJnTF9zY19jb25memQyc2V0Xzc5emQyKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
ID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlZHMgPSAo
c2NfcHJlZGljdG9yc183MVsoc3RlcCtCZ0xfc2NfbmJ6ZDJudHNfODF6ZDIpXSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19zdGF0ZXNf
NzggPSBzY19zdGF0ZXNfNjcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdGF0ZSA9IHNjX3N0YXRlXzgyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX3N0YXRlemQybnVtXzc3
emQyID0gQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzZ6ZDIgPSBC
Z0xfc2NfY29uZnpkMnNldF83OXpkMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2NfbG9vcDFfNzUgPSBmdW5jdGlvbihsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19z
dGF0ZV84MzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIEJnTF9zY19uZXh0emQyc2V0Xzg0emQyOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbmV4dF84NTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHByZWRfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHByZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChwcmVkID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBoZWFkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRf
c2V0ID0gKChzY19zdGF0ZV84MyA9IChzY19zdGF0ZXNfNzhbaV0pKSwgKHNjX3N0YXRlXzgzWyhw
cmVkKygxKSldKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVkX3NldCE9PSBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfbmV4dF84NSA9
IChwcmVkKygxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25leHR6ZDJzZXRf
ODR6ZDIgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc3RhdGUsIEJnTF9zY19z
dGF0ZXpkMm51bV83N3pkMiwgc2NfbmV4dF84NSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNvbmZfc2V0X3VuaW9uKHN0YXRlLCBCZ0xfc2NfbmV4dHpkMnNldF84NHpkMiwgc2NfbmV4dF84
NSwgcHJlZF9zZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9
IChCZ0xfc2NfY29uZnpkMnNldF83NnpkMlsoaSsoNSkpXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfNzUoKGwuY2RyKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNjX2xvb3AxXzc1KHByZWRzKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIGlzX3BhcnNlZCA9IGZ1bmN0aW9uKG50LCBpLCBq
LCBzY19udHNfODYsIHNjX2VuZGVyc184Nywgc2Nfc3RhdGVzXzg4KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3Rh
dGU7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl84OTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19u
dHphMl85MHphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoQmdMX3NjX250emEyXzkwemEyID0gKHNjX2luZF80MyhudCwgc2NfbnRzXzg2
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoQmdMX3NjX250emEyXzkwemEy
IT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX250c184Ni5sZW5ndGgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzg3W0JnTF9zY19udHph
Ml85MHphMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIGlu
c3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzY19jb25mXzg5ID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKCgoc3RhdGUgPSAoc2Nfc3RhdGVzXzg4W2pdKSksIChjb25m
X3NldCA9IChzdGF0ZVsoc2NfY29uZl84OSsoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8o
Y29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBkZXJpdl90cmVlcyA9IGZ1bmN0aW9u
KHNjX2NvbmZfOTEsIGksIGosIHNjX2VuZGVyc185Miwgc2Nfc3RlcHNfOTMsIHNjX25hbWVzXzk0
LCBzY190b2tzXzk1LCBzY19zdGF0ZXNfOTYsIEJnTF9zY19uYnpkMm50c185N3pkMikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzk4OworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHByZXY7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoKG5hbWUgPSAoc2NfbmFtZXNfOTRbc2NfY29uZl85
MV0pKSwgKChuYW1lIT09IGZhbHNlKT8oKHNjX2NvbmZfOTE8QmdMX3NjX25iemQybnRzXzk3emQy
KT8oc2NfbGlzdCgoc2NfbGlzdChuYW1lLCAoKHNjX3Rva3NfOTVbaV0pLmNhcikpKSkpOihzY19s
aXN0KChzY19saXN0KG5hbWUpKSkpKTooKHByZXYgPSAoc2NfY29uZl85MS0oMSkpKSwgKHNjX2xv
b3AxXzk4ID0gZnVuY3Rpb24obDEsIGwyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGxvb3AyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcl9zZXQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwyOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgobDEgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5k
ZXIgPSAobDEuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGVuZGVyX3NldCA9ICgoc3RhdGUgPSAoc2Nfc3RhdGVzXzk2W2pdKSksIChzdGF0ZVsoZW5kZXIr
KDEpKV0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChl
bmRlcl9zZXQhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb29wMiA9IGZ1bmN0aW9uKGssIGwyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvb3AzOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcl90cmVlczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldl90cmVl
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHNjX3N0YXRlXzk5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGs+PSgwKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKChrPj1pKSYmKCgoc2Nfc3RhdGVfOTkgPSAoc2Nfc3RhdGVzXzk2W2tdKSksIChj
b25mX3NldCA9IChzY19zdGF0ZV85OVsocHJldisoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNl
KT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChwcmV2X3RyZWVzID0gKGRlcml2X3RyZWVzKHByZXYsIGksIGssIHNjX2VuZGVyc185
Miwgc2Nfc3RlcHNfOTMsIHNjX25hbWVzXzk0LCBzY190b2tzXzk1LCBzY19zdGF0ZXNfOTYsIEJn
TF9zY19uYnpkMm50c185N3pkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZGVyX3RyZWVzID0gKGRlcml2
X3RyZWVzKGVuZGVyLCBrLCBqLCBzY19lbmRlcnNfOTIsIHNjX3N0ZXBzXzkzLCBzY19uYW1lc185
NCwgc2NfdG9rc185NSwgc2Nfc3RhdGVzXzk2LCBCZ0xfc2NfbmJ6ZDJudHNfOTd6ZDIpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvb3AzID0gZnVuY3Rpb24obDMsIGwyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
bDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbDJfMTAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVu
ZGVyX3RyZWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwzIGluc3RhbmNlb2Ygc2NfUGFpcikpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXJfdHJlZSA9
IChzY19saXN0KChsMy5jYXIpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDQgPSBwcmV2
X3RyZWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2wyXzEwMCA9IGwyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKChsNCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNjX2wyXzEwMCA9IChuZXcgc2NfUGFpcigoc2NfYXBwZW5kKChsNC5jYXIpLCBlbmRlcl90cmVl
KSksIHNjX2wyXzEwMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDQgPSAo
bDQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsb29wMygobDMuY2RyKSwg
c2NfbDJfMTAwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDIoKGVuZGVyX3NldFsoaysoNSkpXSksIGwy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDMoZW5kZXJfdHJlZXMs
IGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVuZGVyX3NldFsoaysoNSkp
XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzk4KChsMS5jZHIpLCBsMikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3AyKChlbmRlcl9z
ZXRbKDIpXSksIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMSA9IChsMS5jZHIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGwyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0pLCAoc2NfbG9vcDFfOTgoKHNjX2VuZGVyc185Mlsoc2Nfc3RlcHNfOTNbcHJl
dl0pXSksIG51bGwpKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfNDd6NzAgPSBmdW5jdGlvbihudCwgaSwgaiwg
c2NfbnRzXzEwMSwgc2NfZW5kZXJzXzEwMiwgc2Nfc3RlcHNfMTAzLCBzY19uYW1lc18xMDQsIHNj
X3Rva3NfMTA1LCBzY19zdGF0ZXNfMTA2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
Y29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGU7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xMDc7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmVlczsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfMTA4emQyOworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIEJnTF9zY19udHphMl8xMDl6YTI7CisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19udHphMl8xMDl6YTIgPSAoc2Nf
aW5kXzQzKG50LCBzY19udHNfMTAxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgoQmdMX3NjX250emEyXzEwOXphMiE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nf
bmJ6ZDJudHNfMTA4emQyID0gKHNjX250c18xMDEubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobCA9IChzY19lbmRlcnNfMTAyW0JnTF9zY19udHphMl8xMDl6
YTJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXMgPSBudWxs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5j
ZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl8x
MDcgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCgoKHN0YXRlID0gKHNjX3N0YXRlc18xMDZbal0pKSwgKGNvbmZfc2V0ID0gKHN0YXRl
WyhzY19jb25mXzEwNysoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkr
KDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzID0gKHNjX2FwcGVuZCgoZGVyaXZfdHJl
ZXMoc2NfY29uZl8xMDcsIGksIGosIHNjX2VuZGVyc18xMDIsIHNjX3N0ZXBzXzEwMywgc2NfbmFt
ZXNfMTA0LCBzY190b2tzXzEwNSwgc2Nfc3RhdGVzXzEwNiwgQmdMX3NjX25iemQybnRzXzEwOHpk
MikpLCB0cmVlcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAo
bC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbmJfZGVyaXZfdHJl
ZXMgPSBmdW5jdGlvbihzY19jb25mXzExMCwgaSwgaiwgc2NfZW5kZXJzXzExMSwgc2Nfc3RlcHNf
MTEyLCBzY190b2tzXzExMywgc2Nfc3RhdGVzXzExNCwgQmdMX3NjX25iemQybnRzXzExNXpkMikg
eworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzExNjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciB0bXAxMTI0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBy
ZXY7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChwcmV2ID0gKHNjX2NvbmZfMTEw
LSgxKSkpLCAoKCgodG1wMTEyNCA9IChzY19jb25mXzExMDxCZ0xfc2NfbmJ6ZDJudHNfMTE1emQy
KSksICgodG1wMTEyNCE9PSBmYWxzZSk/dG1wMTEyNDooKHNjX3N0ZXBzXzExMltwcmV2XSk8KDAp
KSkpIT09IGZhbHNlKT8oMSk6KChzY19sb29wMV8xMTYgPSBmdW5jdGlvbihsLCBzY19uXzExOCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYl9lbmRlcl90cmVlczsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmJfcHJldl90cmVlczsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBlbmRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlXzEx
NzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kZXI7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNj
X25fMTE4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChlbmRlciA9IChsLmNhcikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlcl9zZXQgPSAoKHNjX3N0YXRlXzExNyA9IChz
Y19zdGF0ZXNfMTE0W2pdKSksIChzY19zdGF0ZV8xMTdbKGVuZGVyKygxKSldKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZW5kZXJfc2V0IT09IGZhbHNl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGsgPSAoZW5kZXJfc2V0
WygyKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChuID0gc2Nfbl8xMTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKChrPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoaz49aSkmJigoKHN0YXRlID0gKHNjX3N0YXRl
c18xMTRba10pKSwgKGNvbmZfc2V0ID0gKHN0YXRlWyhwcmV2KygxKSldKSksICgoY29uZl9zZXQh
PT0gZmFsc2UpPyhjb25mX3NldFsoaSsoNSkpXSk6ZmFsc2UpKSE9PSBmYWxzZSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bmJfcHJldl90cmVlcyA9IChuYl9kZXJpdl90cmVlcyhwcmV2LCBpLCBrLCBzY19lbmRlcnNfMTEx
LCBzY19zdGVwc18xMTIsIHNjX3Rva3NfMTEzLCBzY19zdGF0ZXNfMTE0LCBCZ0xfc2NfbmJ6ZDJu
dHNfMTE1emQyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG5iX2VuZGVyX3RyZWVzID0gKG5iX2Rlcml2X3RyZWVzKGVuZGVy
LCBrLCBqLCBzY19lbmRlcnNfMTExLCBzY19zdGVwc18xMTIsIHNjX3Rva3NfMTEzLCBzY19zdGF0
ZXNfMTE0LCBCZ0xfc2NfbmJ6ZDJudHNfMTE1emQyKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGsgPSAoZW5kZXJfc2V0Wyhr
Kyg1KSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobiArPShuYl9wcmV2X3RyZWVzKm5iX2VuZGVyX3RyZWVzKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChr
ID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIChzY19sb29wMV8xMTYoKGwuY2RyKSwgbikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Nfbl8xMTg7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSksIChzY19sb29w
MV8xMTYoKHNjX2VuZGVyc18xMTFbKHNjX3N0ZXBzXzExMltwcmV2XSldKSwgKDApKSkpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIEJnTF9zY19uYnpkMmRl
cml2emQydHJlZXN6YTJfNDh6YTIgPSBmdW5jdGlvbihudCwgaSwgaiwgc2NfbnRzXzExOSwgc2Nf
ZW5kZXJzXzEyMCwgc2Nfc3RlcHNfMTIxLCBzY190b2tzXzEyMiwgc2Nfc3RhdGVzXzEyMykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfMTI0
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgbmJfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQy
bnRzXzEyNXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbnR6YTJfMTI2
emEyOworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChCZ0xfc2NfbnR6YTJfMTI2emEyID0gKHNjX2luZF80MyhudCwgc2NfbnRzXzExOSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEJnTF9zY19udHphMl8xMjZ6YTIhPT0g
ZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzEyNXpkMiA9IChzY19udHNf
MTE5Lmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAo
c2NfZW5kZXJzXzEyMFtCZ0xfc2NfbnR6YTJfMTI2emEyXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG5iX3RyZWVzID0gKDApKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl8xMjQgPSAobC5jYXIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHN0YXRlID0gKHNjX3N0
YXRlc18xMjNbal0pKSwgKGNvbmZfc2V0ID0gKHN0YXRlWyhzY19jb25mXzEyNCsoMSkpXSkpLCAo
KGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2Up
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwu
Y2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG5iX3RyZWVzID0gKChuYl9kZXJpdl90cmVlcyhzY19jb25mXzEyNCwgaSwgaiwgc2NfZW5k
ZXJzXzEyMCwgc2Nfc3RlcHNfMTIxLCBzY190b2tzXzEyMiwgc2Nfc3RhdGVzXzEyMywgQmdMX3Nj
X25iemQybnRzXzEyNXpkMikpK25iX3RyZWVzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5iX3RyZWVzOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgIChsZXhlciA9IChwYXJzZXJfZGVzY3JbKDApXSkpOworICAgICAgICAgICAgICAgICAg
ICAoc2NfbnRzXzQyID0gKHBhcnNlcl9kZXNjclsoMSldKSk7CisgICAgICAgICAgICAgICAgICAg
IChzY19zdGFydGVyc180MSA9IChwYXJzZXJfZGVzY3JbKDIpXSkpOworICAgICAgICAgICAgICAg
ICAgICAoc2NfZW5kZXJzXzQwID0gKHBhcnNlcl9kZXNjclsoMyldKSk7CisgICAgICAgICAgICAg
ICAgICAgIChzY19wcmVkaWN0b3JzXzM5ID0gKHBhcnNlcl9kZXNjclsoNCldKSk7CisgICAgICAg
ICAgICAgICAgICAgIChzY19zdGVwc18zOCA9IChwYXJzZXJfZGVzY3JbKDUpXSkpOworICAgICAg
ICAgICAgICAgICAgICAoc2NfbmFtZXNfMzcgPSAocGFyc2VyX2Rlc2NyWyg2KV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgKGZhbHNlSGVhZDExMjggPSAobmV3IHNjX1BhaXIobnVsbCwgbnVsbCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgKEwxMTI1ID0gKGxleGVyKGlucHV0KSkpOworICAgICAg
ICAgICAgICAgICAgICAodGFpbDExMjkgPSBmYWxzZUhlYWQxMTI4KTsKKyAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCEoTDExMjUgPT09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvayA9IChMMTEyNS5jYXIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAodG9rLmNkcikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsMiA9IG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlICgobDEgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfaV8y
OSA9IChzY19pbmRfNDMoKGwxLmNhciksIHNjX250c180MikpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoc2NfaV8yOSE9PSBmYWxzZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsMiA9IChuZXcgc2NfUGFpcihzY19pXzI5LCBsMikpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzY19vcHRyT3BuZF8yMiA9IChuZXcgc2NfUGFpcigodG9rLmNhciksIChzY19y
ZXZlcnNlKGwyKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX29wdHJPcG5k
XzIxID0gKG5ldyBzY19QYWlyKHNjX29wdHJPcG5kXzIyLCBudWxsKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh0YWlsMTEyOS5jZHIgPSBzY19vcHRyT3BuZF8yMSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTI5ID0gKHRhaWwxMTI5LmNkcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChMMTEyNSA9IChMMTEyNS5jZHIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAoc2Nfb3B0ck9wbmRfMjAgPSAoZmFsc2VIZWFkMTEyOC5jZHIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgKHNjX3Rva3NfMzYgPSAoc2NfbGlzdDJ2ZWN0b3Ioc2Nfb3B0ck9wbmRfMjApKSk7Cisg
ICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyID0gKHNjX3Rva3NfMzYu
bGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18zNHpkMiA9
IChzY19zdGVwc18zOC5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX3N0YXRlc18z
MyA9IChtYWtlX3N0YXRlcyhCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyLCBCZ0xfc2NfbmJ6ZDJjb25m
c18zNHpkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgKGdvYWxfc3RhcnRlcnMgPSAoc2Nfc3Rh
cnRlcnNfNDFbKDApXSkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXR6
ZDJhZGpvaW56YTJfNDV6YTIoc2Nfc3RhdGVzXzMzLCAoMCksIGdvYWxfc3RhcnRlcnMsICgwKSkp
OworICAgICAgICAgICAgICAgICAgICAoZm9ydyhzY19zdGF0ZXNfMzMsICgwKSwgc2Nfc3RhcnRl
cnNfNDEsIHNjX2VuZGVyc180MCwgc2NfcHJlZGljdG9yc18zOSwgc2Nfc3RlcHNfMzgsIHNjX250
c180MikpOworICAgICAgICAgICAgICAgICAgICAoc2NfaV8yOCA9ICgwKSk7CisgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICgoc2NfaV8yODxCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tf
bnRzID0gKChzY190b2tzXzM2W3NjX2lfMjhdKS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIoc2Nfc3RhdGVzXzMz
LCAoc2NfaV8yOCsoMSkpLCB0b2tfbnRzLCBzY19pXzI4KSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGZvcncoc2Nfc3RhdGVzXzMzLCAoc2NfaV8yOCsoMSkpLCBzY19zdGFydGVyc180
MSwgc2NfZW5kZXJzXzQwLCBzY19wcmVkaWN0b3JzXzM5LCBzY19zdGVwc18zOCwgc2NfbnRzXzQy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsrc2NfaV8yOCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgKG5iX3Rva3MgPSAoc2NfdG9rc18zNi5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAg
KEJnTF9zY19uYnpkMmNvbmZzXzMyemQyID0gKHNjX3N0ZXBzXzM4Lmxlbmd0aCkpOworICAgICAg
ICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzMxemQyID0gKHNjX250c180Mi5sZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXN6YTJfMzB6YTIgPSAobWFrZV9z
dGF0ZXMobmJfdG9rcywgQmdMX3NjX25iemQyY29uZnNfMzJ6ZDIpKSk7CisgICAgICAgICAgICAg
ICAgICAgIChnb2FsX2VuZGVycyA9IChzY19lbmRlcnNfNDBbKDApXSkpOworICAgICAgICAgICAg
ICAgICAgICAobCA9IGdvYWxfZW5kZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChs
IGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uZiA9IChsLmNhcikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80NnowMChzY19z
dGF0ZXNfMzMsIEJnTF9zY19zdGF0ZXN6YTJfMzB6YTIsIG5iX3Rva3MsIGNvbmYsICgwKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
KGkgPSBuYl90b2tzKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChpPj0oMCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0
YXRlcyA9IHNjX3N0YXRlc18zMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9z
Y19zdGF0ZXN6YTJfMjd6YTIgPSBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3RhdGVfbnVtID0gaSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNjX2VuZGVyc18yNiA9IHNjX2VuZGVyc180MCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNjX3N0ZXBzXzI1ID0gc2Nfc3RlcHNfMzgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJudHNfMjR6ZDIgPSBCZ0xfc2NfbmJ6ZDJudHNfMzF6ZDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tzID0gc2NfdG9rc18zNik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXphMl8yM3phMiA9IChCZ0xfc2Nf
c3RhdGVzemEyXzMwemEyW2ldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcDEg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xv
b3AxXzEyNzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXY7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzEyOHphMjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlc18xMjk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNj
X2lfMTMwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xMzE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19jb25m
XzEzMSA9IChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTJbKDApXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChzY19jb25mXzEzMT49KDApKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjb25mX3NldCA9IChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTJbKHNjX2Nv
bmZfMTMxKygxKSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChoZWFkID0gKGNvbmZfc2V0Wyg0KV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXphMl8yM3phMlsoMCldID0gKGNvbmZfc2V0
WygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv
bmZfc2V0X21lcmdlX25ld19iYW5nKGNvbmZfc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzY19pXzEzMCA9IGhlYWQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2lfMTMwPj0oMCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBzY19pXzEz
MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGogPSBzdGF0ZV9udW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzY19zdGF0ZXNfMTI5ID0gc3RhdGVzKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX3N0YXRlc3phMl8xMjh6
YTIgPSBCZ0xfc2Nfc3RhdGVzemEyXzI3emEyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldiA9IChzY19jb25mXzEzMS0oMSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChz
Y19jb25mXzEzMT49QmdMX3NjX25iemQybnRzXzI0emQyKSYmKChzY19zdGVwc18yNVtwcmV2XSk+
PSgwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY19sb29wMV8xMjcgPSBmdW5jdGlvbihsKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGs7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGVuZGVyX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVu
ZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChlbmRlciA9IChsLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlcl9zZXQg
PSAoKHN0YXRlID0gKHNjX3N0YXRlc18xMjlbal0pKSwgKHN0YXRlWyhlbmRlcisoMSkpXSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKGVuZGVyX3NldCE9PSBmYWxzZSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVuZGVyX3Nl
dFsoMildKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGs+PSgwKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgoaz49aSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKChCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80NnowMChzY19z
dGF0ZXNfMTI5LCBCZ0xfc2Nfc3RhdGVzemEyXzEyOHphMiwgaywgcHJldiwgaSkpIT09IGZhbHNl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2Nv
bmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6MDAoc2Nfc3RhdGVzXzEyOSwgQmdMX3NjX3N0YXRl
c3phMl8xMjh6YTIsIGosIGVuZGVyLCBrKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChrID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfMTI3KChsLmNkcikpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X2xvb3AxXzEyNygoc2NfZW5kZXJzXzI2WyhzY19zdGVwc18yNVtwcmV2XSldKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2lfMTMw
ID0gKGNvbmZfc2V0WyhzY19pXzEzMCsoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAobG9vcDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29wMSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAob3B0ck9wbmQgPSBCZ0xfc2Nf
c3RhdGVzemEyXzMwemEyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzY19udHNfNDIs
IHNjX3N0YXJ0ZXJzXzQxLCBzY19lbmRlcnNfNDAsIHNjX3ByZWRpY3RvcnNfMzksIHNjX3N0ZXBz
XzM4LCBzY19uYW1lc18zNywgc2NfdG9rc18zNiwgb3B0ck9wbmQsIGlzX3BhcnNlZCwgQmdMX3Nj
X2Rlcml2emQydHJlZXN6YTJfNDd6NzAsIEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfNDh6
YTJdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICB9
OworICAgIEJnTF9wYXJzZXpkMnplM3BhcnNlZHpmM3pjMiA9IGZ1bmN0aW9uKHBhcnNlLCBudCwg
aSwgaikgeworICAgICAgICB2YXIgaXNfcGFyc2VkOworICAgICAgICB2YXIgc3RhdGVzOworICAg
ICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4gKChudHMg
PSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0YXRlcyA9IChwYXJz
ZVsoNyldKSksIChpc19wYXJzZWQgPSAocGFyc2VbKDgpXSkpLCAoaXNfcGFyc2VkKG50LCBpLCBq
LCBudHMsIGVuZGVycywgc3RhdGVzKSkpOworICAgIH07CisgICAgQmdMX3BhcnNlemQyemUzdHJl
ZXN6MzEgPSBmdW5jdGlvbihwYXJzZSwgbnQsIGksIGopIHsKKyAgICAgICAgdmFyIEJnTF9zY19k
ZXJpdnpkMnRyZWVzemEyXzEzMno3MDsKKyAgICAgICAgdmFyIHN0YXRlczsKKyAgICAgICAgdmFy
IHRva3M7CisgICAgICAgIHZhciBuYW1lczsKKyAgICAgICAgdmFyIHN0ZXBzOworICAgICAgICB2
YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4gKChudHMgPSAocGFy
c2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0ZXBzID0gKHBhcnNlWyg0KV0p
KSwgKG5hbWVzID0gKHBhcnNlWyg1KV0pKSwgKHRva3MgPSAocGFyc2VbKDYpXSkpLCAoc3RhdGVz
ID0gKHBhcnNlWyg3KV0pKSwgKEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzEzMno3MCA9IChwYXJz
ZVsoOSldKSksIChCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl8xMzJ6NzAobnQsIGksIGosIG50cywg
ZW5kZXJzLCBzdGVwcywgbmFtZXMsIHRva3MsIHN0YXRlcykpKTsKKyAgICB9OworICAgIEJnTF9w
YXJzZXpkMnplM25iemQydHJlZXN6ZTMgPSBmdW5jdGlvbihwYXJzZSwgbnQsIGksIGopIHsKKyAg
ICAgICAgdmFyIEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfMTMzemEyOworICAgICAgICB2
YXIgc3RhdGVzOworICAgICAgICB2YXIgdG9rczsKKyAgICAgICAgdmFyIHN0ZXBzOworICAgICAg
ICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4gKChudHMgPSAo
cGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0ZXBzID0gKHBhcnNlWyg0
KV0pKSwgKHRva3MgPSAocGFyc2VbKDYpXSkpLCAoc3RhdGVzID0gKHBhcnNlWyg3KV0pKSwgKEJn
TF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfMTMzemEyID0gKHBhcnNlWygxMCldKSksIChCZ0xf
c2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzEzM3phMihudCwgaSwgaiwgbnRzLCBlbmRlcnMsIHN0
ZXBzLCB0b2tzLCBzdGF0ZXMpKSk7CisgICAgfTsKKyAgICB0ZXN0ID0gZnVuY3Rpb24oaykgewor
ICAgICAgICB2YXIgeDsKKyAgICAgICAgdmFyIHA7CisgICAgICAgIHJldHVybiAoKHAgPSAoQmdM
X21ha2V6ZDJwYXJzZXJ6ZDIoY29uc3RfZWFybGV5LCBmdW5jdGlvbihsKSB7CisgICAgICAgICAg
ICB2YXIgc2NfeF8xMzQ7CisgICAgICAgICAgICB2YXIgdGFpbDExMzQ7CisgICAgICAgICAgICB2
YXIgTDExMzA7CisgICAgICAgICAgICB2YXIgZmFsc2VIZWFkMTEzMzsKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAoZmFsc2VIZWFkMTEzMyA9IChuZXcgc2NfUGFpcihudWxsLCBudWxs
KSkpOworICAgICAgICAgICAgICAgICh0YWlsMTEzNCA9IGZhbHNlSGVhZDExMzMpOworICAgICAg
ICAgICAgICAgIChMMTEzMCA9IGwpOworICAgICAgICAgICAgICAgIHdoaWxlICghKEwxMTMwID09
PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAodGFpbDExMzQuY2RyID0gKG5ldyBzY19QYWlyKCgoc2NfeF8xMzQgPSAoTDExMzAuY2FyKSks
IChzY19saXN0KHNjX3hfMTM0LCBzY194XzEzNCkpKSwgbnVsbCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICh0YWlsMTEzNCA9ICh0YWlsMTEzNC5jZHIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChMMTEzMCA9IChMMTEzMC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gKGZhbHNlSGVhZDExMzMuY2Ry
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkpKSwgKHggPSAocCgoc2NfdmVjdG9yMmxpc3Qo
KHNjX21ha2VWZWN0b3IoaywgIlx1MUU5Q2EiKSkpKSkpKSwgKHNjX2xlbmd0aCgoQmdMX3BhcnNl
emQyemUzdHJlZXN6MzEoeCwgIlx1MUU5Q3MiLCAoMCksIGspKSkpKTsKKyAgICB9OworICAgIEJn
TF9lYXJsZXl6ZDJiZW5jaG1hcmt6ZDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGFyZ3Mg
PSBudWxsOworICAgICAgICBmb3IgKHZhciBzY190bXAgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsg
c2NfdG1wID49IDA7IHNjX3RtcC0tKSB7CisgICAgICAgICAgICBhcmdzID0gc2NfY29ucyhhcmd1
bWVudHNbc2NfdG1wXSwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGs7CisgICAgICAg
IHJldHVybiAoKGsgPSAoKGFyZ3MgPT09IG51bGwpPyg3KTooYXJncy5jYXIpKSksIChCZ0xfcnVu
emQyYmVuY2htYXJremQyKCJlYXJsZXkiLCAoMSksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
cmV0dXJuICh0ZXN0KGspKTsKKyAgICAgICAgfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAg
ICAgICByZXR1cm4gKChzY19kaXNwbGF5KHJlc3VsdCkpLCAoc2NfbmV3bGluZSgpKSwgcmVzdWx0
ID09IDEzMik7CisgICAgICAgIH0pKSk7CisgICAgfTsKK30KKworCisvKioqKioqKioqKioqKiBF
TkQgT0YgR0VORVJBVEVEIENPREUgKioqKioqKioqKioqKi8KKy8vIEludm9rZSB0aGlzIGZ1bmN0
aW9uIHRvIHJ1biBhIGJlbmNobWFyay4KKy8vIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHN0cmlu
ZyBpZGVudGlmeWluZyB0aGUgYmVuY2htYXJrLgorLy8gVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0
aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgYmVuY2htYXJrLgorLy8gVGhlIHRoaXJkIGFy
Z3VtZW50IGlzIGEgZnVuY3Rpb24gdGhhdCBydW5zIHRoZSBiZW5jaG1hcmsuCisvLyBUaGUgZm91
cnRoIGFyZ3VtZW50IGlzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCB3YXJucyBpZiB0aGUgcmVzdWx0
CisvLyByZXR1cm5lZCBieSB0aGUgYmVuY2htYXJrIGlzIGluY29ycmVjdC4KKy8vCisvLyBFeGFt
cGxlOgorLy8gUnVuQmVuY2htYXJrKCJuZXcgQXJyYXkoKSIsCisvLyAgICAgICAgICAgICAgMSwK
Ky8vICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IG5ldyBBcnJheSgxMDAwMDAwKTsgfQorLy8g
ICAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7CisvLyAgICAgICAgICAgICAgICByZXR1cm4gKHYg
aW5zdGFuY2VvZiBBcnJheSkgJiYgKHYubGVuZ3RoID09IDEwMDAwMDApOworLy8gICAgICAgICAg
ICAgIH0pOworCitTQ19ERUZBVUxUX09VVCA9IG5ldyBzY19HZW5lcmljT3V0cHV0UG9ydChmdW5j
dGlvbihzKSB7fSk7CitTQ19FUlJPUl9PVVQgPSBTQ19ERUZBVUxUX09VVDsKKworZnVuY3Rpb24g
UnVuQmVuY2htYXJrKG5hbWUsIGNvdW50LCBydW4sIHdhcm4pIHsKKyAgZm9yICh2YXIgbiA9IDA7
IG4gPCBjb3VudDsgKytuKSB7CisgICAgcmVzdWx0ID0gcnVuKCk7CisgICAgaWYgKCF3YXJuKHJl
c3VsdCkpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcigiRWFybGV5IG9yIEJveWVyIGRpZCBpbmNv
cnJlY3QgbnVtYmVyIG9mIHJld3JpdGVzIik7CisgICAgfQorICB9Cit9CisKK3ZhciBCZ0xfcnVu
emQyYmVuY2htYXJremQyID0gUnVuQmVuY2htYXJrOworCitmb3IgKHZhciBpID0gMDsgaSA8IDQ7
ICsraSkgeworICBCZ0xfZWFybGV5emQyYmVuY2htYXJremQyKCk7CisgIEJnTF9uYm95ZXJ6ZDJi
ZW5jaG1hcmt6ZDIoKTsKK30KSW5kZXg6IFN1blNwaWRlci90ZXN0cy92OC12NS92OC1yYXl0cmFj
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTdW5TcGlkZXIvdGVzdHMvdjgtdjUvdjgtcmF5dHJhY2UuanMJ
KHJldmlzaW9uIDApCisrKyBTdW5TcGlkZXIvdGVzdHMvdjgtdjUvdjgtcmF5dHJhY2UuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTMzIEBACisvLyBUaGUgcmF5IHRyYWNlciBjb2RlIGluIHRo
aXMgZmlsZSBpcyB3cml0dGVuIGJ5IEFkYW0gQnVybWlzdGVyLiBJdAorLy8gaXMgYXZhaWxhYmxl
IGluIGl0cyBvcmlnaW5hbCBmb3JtIGZyb206CisvLworLy8gICBodHRwOi8vbGFicy5mbG9nLm56
LmNvL3JheXRyYWNlci8KKy8vCisvLyBJdCBoYXMgYmVlbiBtb2RpZmllZCBzbGlnaHRseSBieSBH
b29nbGUgdG8gd29yayBhcyBhIHN0YW5kYWxvbmUKKy8vIGJlbmNobWFyaywgYnV0IHRoZSBhbGwg
dGhlIGNvbXB1dGF0aW9uYWwgY29kZSByZW1haW5zCisvLyB1bnRvdWNoZWQuIFRoaXMgZmlsZSBh
bHNvIGNvbnRhaW5zIGEgY29weSBvZiBwYXJ0cyBvZiB0aGUgUHJvdG90eXBlCisvLyBKYXZhU2Ny
aXB0IGZyYW1ld29yayB3aGljaCBpcyB1c2VkIGJ5IHRoZSByYXkgdHJhY2VyLgorCisvLyBWYXJp
YWJsZSB1c2VkIHRvIGhvbGQgYSBudW1iZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhh
dAorLy8gdGhlIHNjZW5lIHdhcyByYXkgdHJhY2VkIGNvcnJlY3RseS4KK3ZhciBjaGVja051bWJl
cjsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUaGUg
Zm9sbG93aW5nIGlzIGEgY29weSBvZiBwYXJ0cyBvZiB0aGUgUHJvdG90eXBlIEphdmFTY3JpcHQg
bGlicmFyeToKKworLy8gUHJvdG90eXBlIEphdmFTY3JpcHQgZnJhbWV3b3JrLCB2ZXJzaW9uIDEu
NS4wCisvLyAoYykgMjAwNS0yMDA3IFNhbSBTdGVwaGVuc29uCisvLworLy8gUHJvdG90eXBlIGlz
IGZyZWVseSBkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtc3R5bGUgbGlj
ZW5zZS4KKy8vIEZvciBkZXRhaWxzLCBzZWUgdGhlIFByb3RvdHlwZSB3ZWIgc2l0ZTogaHR0cDov
L3Byb3RvdHlwZS5jb25pby5uZXQvCisKKwordmFyIENsYXNzID0geworICBjcmVhdGU6IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMuaW5pdGlhbGl6ZS5h
cHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH0KKyAgfQorfTsKKworCitPYmplY3QuZXh0ZW5k
ID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJjZSkgeworICBmb3IgKHZhciBwcm9wZXJ0eSBp
biBzb3VyY2UpIHsKKyAgICBkZXN0aW5hdGlvbltwcm9wZXJ0eV0gPSBzb3VyY2VbcHJvcGVydHld
OworICB9CisgIHJldHVybiBkZXN0aW5hdGlvbjsKK307CisKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlzIHRoZSBh
Y3R1YWwgcmF5IHRyYWNlciB3cml0dGVuIGJ5IEFkYW0KKy8vIEJ1cm1pc3Rlci4gSXQncyBhIGNv
bmNhdGVuYXRpb24gb2YgdGhlIGZvbGxvd2luZyBmaWxlczoKKy8vCisvLyAgIGZsb2cvY29sb3Iu
anMKKy8vICAgZmxvZy9saWdodC5qcworLy8gICBmbG9nL3ZlY3Rvci5qcworLy8gICBmbG9nL3Jh
eS5qcworLy8gICBmbG9nL3NjZW5lLmpzCisvLyAgIGZsb2cvbWF0ZXJpYWwvYmFzZW1hdGVyaWFs
LmpzCisvLyAgIGZsb2cvbWF0ZXJpYWwvc29saWQuanMKKy8vICAgZmxvZy9tYXRlcmlhbC9jaGVz
c2JvYXJkLmpzCisvLyAgIGZsb2cvc2hhcGUvYmFzZXNoYXBlLmpzCisvLyAgIGZsb2cvc2hhcGUv
c3BoZXJlLmpzCisvLyAgIGZsb2cvc2hhcGUvcGxhbmUuanMKKy8vICAgZmxvZy9pbnRlcnNlY3Rp
b25pbmZvLmpzCisvLyAgIGZsb2cvY2FtZXJhLmpzCisvLyAgIGZsb2cvYmFja2dyb3VuZC5qcwor
Ly8gICBmbG9nL2VuZ2luZS5qcworCisKKy8qIEZha2UgYSBGbG9nLiogbmFtZXNwYWNlICovCitp
Zih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9nID0ge307CitpZih0eXBlb2Yo
RmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlciA9IHt9OworCitG
bG9nLlJheVRyYWNlci5Db2xvciA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5D
b2xvci5wcm90b3R5cGUgPSB7CisgICAgcmVkIDogMC4wLAorICAgIGdyZWVuIDogMC4wLAorICAg
IGJsdWUgOiAwLjAsCisKKyAgICBpbml0aWFsaXplIDogZnVuY3Rpb24ociwgZywgYikgeworICAg
ICAgICBpZighcikgciA9IDAuMDsKKyAgICAgICAgaWYoIWcpIGcgPSAwLjA7CisgICAgICAgIGlm
KCFiKSBiID0gMC4wOworCisgICAgICAgIHRoaXMucmVkID0gcjsKKyAgICAgICAgdGhpcy5ncmVl
biA9IGc7CisgICAgICAgIHRoaXMuYmx1ZSA9IGI7CisgICAgfSwKKworICAgIGFkZCA6IGZ1bmN0
aW9uKGMxLCBjMil7CisgICAgICAgIHZhciByZXN1bHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29s
b3IoMCwwLDApOworCisgICAgICAgIHJlc3VsdC5yZWQgPSBjMS5yZWQgKyBjMi5yZWQ7CisgICAg
ICAgIHJlc3VsdC5ncmVlbiA9IGMxLmdyZWVuICsgYzIuZ3JlZW47CisgICAgICAgIHJlc3VsdC5i
bHVlID0gYzEuYmx1ZSArIGMyLmJsdWU7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
LAorCisgICAgYWRkU2NhbGFyOiBmdW5jdGlvbihjMSwgcyl7CisgICAgICAgIHZhciByZXN1bHQg
PSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMCwwLDApOworCisgICAgICAgIHJlc3VsdC5yZWQg
PSBjMS5yZWQgKyBzOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiArIHM7CisgICAg
ICAgIHJlc3VsdC5ibHVlID0gYzEuYmx1ZSArIHM7CisKKyAgICAgICAgcmVzdWx0LmxpbWl0KCk7
CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgc3VidHJhY3Q6IGZ1bmN0
aW9uKGMxLCBjMil7CisgICAgICAgIHZhciByZXN1bHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29s
b3IoMCwwLDApOworCisgICAgICAgIHJlc3VsdC5yZWQgPSBjMS5yZWQgLSBjMi5yZWQ7CisgICAg
ICAgIHJlc3VsdC5ncmVlbiA9IGMxLmdyZWVuIC0gYzIuZ3JlZW47CisgICAgICAgIHJlc3VsdC5i
bHVlID0gYzEuYmx1ZSAtIGMyLmJsdWU7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
LAorCisgICAgbXVsdGlwbHkgOiBmdW5jdGlvbihjMSwgYzIpIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLDAsMCk7CisKKyAgICAgICAgcmVzdWx0LnJl
ZCA9IGMxLnJlZCAqIGMyLnJlZDsKKyAgICAgICAgcmVzdWx0LmdyZWVuID0gYzEuZ3JlZW4gKiBj
Mi5ncmVlbjsKKyAgICAgICAgcmVzdWx0LmJsdWUgPSBjMS5ibHVlICogYzIuYmx1ZTsKKworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBtdWx0aXBseVNjYWxhciA6IGZ1bmN0
aW9uKGMxLCBmKSB7CisgICAgICAgIHZhciByZXN1bHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29s
b3IoMCwwLDApOworCisgICAgICAgIHJlc3VsdC5yZWQgPSBjMS5yZWQgKiBmOworICAgICAgICBy
ZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiAqIGY7CisgICAgICAgIHJlc3VsdC5ibHVlID0gYzEuYmx1
ZSAqIGY7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgZGl2aWRlRmFj
dG9yIDogZnVuY3Rpb24oYzEsIGYpIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBGbG9nLlJh
eVRyYWNlci5Db2xvcigwLDAsMCk7CisKKyAgICAgICAgcmVzdWx0LnJlZCA9IGMxLnJlZCAvIGY7
CisgICAgICAgIHJlc3VsdC5ncmVlbiA9IGMxLmdyZWVuIC8gZjsKKyAgICAgICAgcmVzdWx0LmJs
dWUgPSBjMS5ibHVlIC8gZjsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAg
ICBsaW1pdDogZnVuY3Rpb24oKXsKKyAgICAgICAgdGhpcy5yZWQgPSAodGhpcy5yZWQgPiAwLjAp
ID8gKCAodGhpcy5yZWQgPiAxLjApID8gMS4wIDogdGhpcy5yZWQgKSA6IDAuMDsKKyAgICAgICAg
dGhpcy5ncmVlbiA9ICh0aGlzLmdyZWVuID4gMC4wKSA/ICggKHRoaXMuZ3JlZW4gPiAxLjApID8g
MS4wIDogdGhpcy5ncmVlbiApIDogMC4wOworICAgICAgICB0aGlzLmJsdWUgPSAodGhpcy5ibHVl
ID4gMC4wKSA/ICggKHRoaXMuYmx1ZSA+IDEuMCkgPyAxLjAgOiB0aGlzLmJsdWUgKSA6IDAuMDsK
KyAgICB9LAorCisgICAgZGlzdGFuY2UgOiBmdW5jdGlvbihjb2xvcikgeworICAgICAgICB2YXIg
ZCA9IE1hdGguYWJzKHRoaXMucmVkIC0gY29sb3IucmVkKSArIE1hdGguYWJzKHRoaXMuZ3JlZW4g
LSBjb2xvci5ncmVlbikgKyBNYXRoLmFicyh0aGlzLmJsdWUgLSBjb2xvci5ibHVlKTsKKyAgICAg
ICAgcmV0dXJuIGQ7CisgICAgfSwKKworICAgIGJsZW5kOiBmdW5jdGlvbihjMSwgYzIsIHcpewor
ICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKyAg
ICAgICAgcmVzdWx0ID0gRmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLmFkZCgKKyAgICAg
ICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLm11bHRpcGx5U2Nh
bGFyKGMxLCAxIC0gdyksCisgICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLkNvbG9y
LnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcihjMiwgdykKKyAgICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIGJyaWdodG5lc3MgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIHIgPSBNYXRoLmZsb29yKHRoaXMucmVkKjI1NSk7CisgICAgICAg
IHZhciBnID0gTWF0aC5mbG9vcih0aGlzLmdyZWVuKjI1NSk7CisgICAgICAgIHZhciBiID0gTWF0
aC5mbG9vcih0aGlzLmJsdWUqMjU1KTsKKyAgICAgICAgcmV0dXJuIChyICogNzcgKyBnICogMTUw
ICsgYiAqIDI5KSA+PiA4OworICAgIH0sCisKKyAgICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgdmFyIHIgPSBNYXRoLmZsb29yKHRoaXMucmVkKjI1NSk7CisgICAgICAgIHZhciBn
ID0gTWF0aC5mbG9vcih0aGlzLmdyZWVuKjI1NSk7CisgICAgICAgIHZhciBiID0gTWF0aC5mbG9v
cih0aGlzLmJsdWUqMjU1KTsKKworICAgICAgICByZXR1cm4gInJnYigiKyByICsiLCIrIGcgKyIs
IisgYiArIikiOworICAgIH0KK30KKy8qIEZha2UgYSBGbG9nLiogbmFtZXNwYWNlICovCitpZih0
eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9nID0ge307CitpZih0eXBlb2YoRmxv
Zy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlciA9IHt9OworCitGbG9n
LlJheVRyYWNlci5MaWdodCA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5MaWdo
dC5wcm90b3R5cGUgPSB7CisgICAgcG9zaXRpb246IG51bGwsCisgICAgY29sb3I6IG51bGwsCisg
ICAgaW50ZW5zaXR5OiAxMC4wLAorCisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKHBvcywgY29s
b3IsIGludGVuc2l0eSkgeworICAgICAgICB0aGlzLnBvc2l0aW9uID0gcG9zOworICAgICAgICB0
aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAgIHRoaXMuaW50ZW5zaXR5ID0gKGludGVuc2l0eSA/
IGludGVuc2l0eSA6IDEwLjApOworICAgIH0sCisKKyAgICBnZXRJbnRlbnNpdHk6IGZ1bmN0aW9u
KGRpc3RhbmNlKXsKKyAgICAgICAgaWYoZGlzdGFuY2UgPj0gaW50ZW5zaXR5KSByZXR1cm4gMDsK
KworICAgICAgICByZXR1cm4gTWF0aC5wb3coKGludGVuc2l0eSAtIGRpc3RhbmNlKSAvIHN0cmVu
Z3RoLCAwLjIpOworICAgIH0sCisKKyAgICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgcmV0dXJuICdMaWdodCBbJyArIHRoaXMucG9zaXRpb24ueCArICcsJyArIHRoaXMucG9zaXRp
b24ueSArICcsJyArIHRoaXMucG9zaXRpb24ueiArICddJzsKKyAgICB9Cit9CisvKiBGYWtlIGEg
RmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIg
RmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxv
Zy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuVmVjdG9yID0gQ2xhc3MuY3JlYXRl
KCk7CisKK0Zsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUgPSB7CisgICAgeCA6IDAuMCwK
KyAgICB5IDogMC4wLAorICAgIHogOiAwLjAsCisKKyAgICBpbml0aWFsaXplIDogZnVuY3Rpb24o
eCwgeSwgeikgeworICAgICAgICB0aGlzLnggPSAoeCA/IHggOiAwKTsKKyAgICAgICAgdGhpcy55
ID0gKHkgPyB5IDogMCk7CisgICAgICAgIHRoaXMueiA9ICh6ID8geiA6IDApOworICAgIH0sCisK
KyAgICBjb3B5OiBmdW5jdGlvbih2ZWN0b3IpeworICAgICAgICB0aGlzLnggPSB2ZWN0b3IueDsK
KyAgICAgICAgdGhpcy55ID0gdmVjdG9yLnk7CisgICAgICAgIHRoaXMueiA9IHZlY3Rvci56Owor
ICAgIH0sCisKKyAgICBub3JtYWxpemUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG0gPSB0
aGlzLm1hZ25pdHVkZSgpOworICAgICAgICByZXR1cm4gbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3Rv
cih0aGlzLnggLyBtLCB0aGlzLnkgLyBtLCB0aGlzLnogLyBtKTsKKyAgICB9LAorCisgICAgbWFn
bml0dWRlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBNYXRoLnNxcnQoKHRoaXMueCAq
IHRoaXMueCkgKyAodGhpcy55ICogdGhpcy55KSArICh0aGlzLnogKiB0aGlzLnopKTsKKyAgICB9
LAorCisgICAgY3Jvc3MgOiBmdW5jdGlvbih3KSB7CisgICAgICAgIHJldHVybiBuZXcgRmxvZy5S
YXlUcmFjZXIuVmVjdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtdGhpcy56ICogdy55ICsgdGhpcy55ICogdy56LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMueiAqIHcueCAtIHRoaXMueCAqIHcueiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC10aGlzLnkgKiB3LnggKyB0aGlz
LnggKiB3LnkpOworICAgIH0sCisKKyAgICBkb3QgOiBmdW5jdGlvbih3KSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnggKiB3LnggKyB0aGlzLnkgKiB3LnkgKyB0aGlzLnogKiB3Lno7CisgICAgfSwK
KworICAgIGFkZCA6IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGbG9nLlJh
eVRyYWNlci5WZWN0b3Iody54ICsgdi54LCB3LnkgKyB2LnksIHcueiArIHYueik7CisgICAgfSwK
KworICAgIHN1YnRyYWN0IDogZnVuY3Rpb24odiwgdykgeworICAgICAgICBpZighdyB8fCAhdikg
dGhyb3cgJ1ZlY3RvcnMgbXVzdCBiZSBkZWZpbmVkIFsnICsgdiArICcsJyArIHcgKyAnXSc7Cisg
ICAgICAgIHJldHVybiBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKHYueCAtIHcueCwgdi55IC0g
dy55LCB2LnogLSB3LnopOworICAgIH0sCisKKyAgICBtdWx0aXBseVZlY3RvciA6IGZ1bmN0aW9u
KHYsIHcpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3Iodi54ICog
dy54LCB2LnkgKiB3LnksIHYueiAqIHcueik7CisgICAgfSwKKworICAgIG11bHRpcGx5U2NhbGFy
IDogZnVuY3Rpb24odiwgdykgeworICAgICAgICByZXR1cm4gbmV3IEZsb2cuUmF5VHJhY2VyLlZl
Y3Rvcih2LnggKiB3LCB2LnkgKiB3LCB2LnogKiB3KTsKKyAgICB9LAorCisgICAgdG9TdHJpbmcg
OiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAnVmVjdG9yIFsnICsgdGhpcy54ICsgJywn
ICsgdGhpcy55ICsgJywnICsgdGhpcy56ICsgJ10nOworICAgIH0KK30KKy8qIEZha2UgYSBGbG9n
LiogbmFtZXNwYWNlICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9n
ID0ge307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJh
eVRyYWNlciA9IHt9OworCitGbG9nLlJheVRyYWNlci5SYXkgPSBDbGFzcy5jcmVhdGUoKTsKKwor
RmxvZy5SYXlUcmFjZXIuUmF5LnByb3RvdHlwZSA9IHsKKyAgICBwb3NpdGlvbiA6IG51bGwsCisg
ICAgZGlyZWN0aW9uIDogbnVsbCwKKyAgICBpbml0aWFsaXplIDogZnVuY3Rpb24ocG9zLCBkaXIp
IHsKKyAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvczsKKyAgICAgICAgdGhpcy5kaXJlY3Rpb24g
PSBkaXI7CisgICAgfSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICBy
ZXR1cm4gJ1JheSBbJyArIHRoaXMucG9zaXRpb24gKyAnLCcgKyB0aGlzLmRpcmVjdGlvbiArICdd
JzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZs
b2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJh
Y2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFj
ZXIuU2NlbmUgPSBDbGFzcy5jcmVhdGUoKTsKKworRmxvZy5SYXlUcmFjZXIuU2NlbmUucHJvdG90
eXBlID0geworICAgIGNhbWVyYSA6IG51bGwsCisgICAgc2hhcGVzIDogW10sCisgICAgbGlnaHRz
IDogW10sCisgICAgYmFja2dyb3VuZCA6IG51bGwsCisKKyAgICBpbml0aWFsaXplIDogZnVuY3Rp
b24oKSB7CisgICAgICAgIHRoaXMuY2FtZXJhID0gbmV3IEZsb2cuUmF5VHJhY2VyLkNhbWVyYSgK
KyAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoMCwwLC01KSwKKyAgICAgICAg
ICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoMCwwLDEpLAorICAgICAgICAgICAgbmV3IEZs
b2cuUmF5VHJhY2VyLlZlY3RvcigwLDEsMCkKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5zaGFw
ZXMgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgdGhpcy5saWdodHMgPSBuZXcgQXJyYXkoKTsKKyAg
ICAgICAgdGhpcy5iYWNrZ3JvdW5kID0gbmV3IEZsb2cuUmF5VHJhY2VyLkJhY2tncm91bmQobmV3
IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwLjUpLCAwLjIpOworICAgIH0KK30KKy8qIEZha2Ug
YSBGbG9nLiogbmFtZXNwYWNlICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZh
ciBGbG9nID0ge307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBG
bG9nLlJheVRyYWNlciA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyLk1hdGVyaWFsKSA9
PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwgPSB7fTsKKworRmxvZy5SYXlU
cmFjZXIuTWF0ZXJpYWwuQmFzZU1hdGVyaWFsID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5
VHJhY2VyLk1hdGVyaWFsLkJhc2VNYXRlcmlhbC5wcm90b3R5cGUgPSB7CisKKyAgICBnbG9zczog
Mi4wLCAgICAgICAgICAgICAvLyBbMC4uLmluZmluaXR5XSAwID0gbWF0dAorICAgIHRyYW5zcGFy
ZW5jeTogMC4wLCAgICAgIC8vIDA9b3BhcXVlCisgICAgcmVmbGVjdGlvbjogMC4wLCAgICAgICAg
Ly8gWzAuLi5pbmZpbml0eV0gMCA9IG5vIHJlZmxlY3Rpb24KKyAgICByZWZyYWN0aW9uOiAwLjUw
LAorICAgIGhhc1RleHR1cmU6IGZhbHNlLAorCisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKCkg
eworCisgICAgfSwKKworICAgIGdldENvbG9yOiBmdW5jdGlvbih1LCB2KXsKKworICAgIH0sCisK
KyAgICB3cmFwVXA6IGZ1bmN0aW9uKHQpeworICAgICAgICB0ID0gdCAlIDIuMDsKKyAgICAgICAg
aWYodCA8IC0xKSB0ICs9IDIuMDsKKyAgICAgICAgaWYodCA+PSAxKSB0IC09IDIuMDsKKyAgICAg
ICAgcmV0dXJuIHQ7CisgICAgfSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gJ01hdGVyaWFsIFtnbG9zcz0nICsgdGhpcy5nbG9zcyArICcsIHRyYW5zcGFy
ZW5jeT0nICsgdGhpcy50cmFuc3BhcmVuY3kgKyAnLCBoYXNUZXh0dXJlPScgKyB0aGlzLmhhc1Rl
eHR1cmUgKyddJzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYo
dHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZs
b2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxv
Zy5SYXlUcmFjZXIuTWF0ZXJpYWwuU29saWQgPSBDbGFzcy5jcmVhdGUoKTsKKworRmxvZy5SYXlU
cmFjZXIuTWF0ZXJpYWwuU29saWQucHJvdG90eXBlID0gT2JqZWN0LmV4dGVuZCgKKyAgICBuZXcg
RmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwuQmFzZU1hdGVyaWFsKCksIHsKKyAgICAgICAgaW5pdGlh
bGl6ZSA6IGZ1bmN0aW9uKGNvbG9yLCByZWZsZWN0aW9uLCByZWZyYWN0aW9uLCB0cmFuc3BhcmVu
Y3ksIGdsb3NzKSB7CisgICAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAgICAg
ICB0aGlzLnJlZmxlY3Rpb24gPSByZWZsZWN0aW9uOworICAgICAgICAgICAgdGhpcy50cmFuc3Bh
cmVuY3kgPSB0cmFuc3BhcmVuY3k7CisgICAgICAgICAgICB0aGlzLmdsb3NzID0gZ2xvc3M7Cisg
ICAgICAgICAgICB0aGlzLmhhc1RleHR1cmUgPSBmYWxzZTsKKyAgICAgICAgfSwKKworICAgICAg
ICBnZXRDb2xvcjogZnVuY3Rpb24odSwgdil7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xv
cjsKKyAgICAgICAgfSwKKworICAgICAgICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHJldHVybiAnU29saWRNYXRlcmlhbCBbZ2xvc3M9JyArIHRoaXMuZ2xvc3MgKyAnLCB0
cmFuc3BhcmVuY3k9JyArIHRoaXMudHJhbnNwYXJlbmN5ICsgJywgaGFzVGV4dHVyZT0nICsgdGhp
cy5oYXNUZXh0dXJlICsnXSc7CisgICAgICAgIH0KKyAgICB9CispOworLyogRmFrZSBhIEZsb2cu
KiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cg
PSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5
VHJhY2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLkNoZXNzYm9hcmQgPSBDbGFz
cy5jcmVhdGUoKTsKKworRmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwuQ2hlc3Nib2FyZC5wcm90b3R5
cGUgPSBPYmplY3QuZXh0ZW5kKAorICAgIG5ldyBGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5CYXNl
TWF0ZXJpYWwoKSwgeworICAgICAgICBjb2xvckV2ZW46IG51bGwsCisgICAgICAgIGNvbG9yT2Rk
OiBudWxsLAorICAgICAgICBkZW5zaXR5OiAwLjUsCisKKyAgICAgICAgaW5pdGlhbGl6ZSA6IGZ1
bmN0aW9uKGNvbG9yRXZlbiwgY29sb3JPZGQsIHJlZmxlY3Rpb24sIHRyYW5zcGFyZW5jeSwgZ2xv
c3MsIGRlbnNpdHkpIHsKKyAgICAgICAgICAgIHRoaXMuY29sb3JFdmVuID0gY29sb3JFdmVuOwor
ICAgICAgICAgICAgdGhpcy5jb2xvck9kZCA9IGNvbG9yT2RkOworICAgICAgICAgICAgdGhpcy5y
ZWZsZWN0aW9uID0gcmVmbGVjdGlvbjsKKyAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0g
dHJhbnNwYXJlbmN5OworICAgICAgICAgICAgdGhpcy5nbG9zcyA9IGdsb3NzOworICAgICAgICAg
ICAgdGhpcy5kZW5zaXR5ID0gZGVuc2l0eTsKKyAgICAgICAgICAgIHRoaXMuaGFzVGV4dHVyZSA9
IHRydWU7CisgICAgICAgIH0sCisKKyAgICAgICAgZ2V0Q29sb3I6IGZ1bmN0aW9uKHUsIHYpewor
ICAgICAgICAgICAgdmFyIHQgPSB0aGlzLndyYXBVcCh1ICogdGhpcy5kZW5zaXR5KSAqIHRoaXMu
d3JhcFVwKHYgKiB0aGlzLmRlbnNpdHkpOworCisgICAgICAgICAgICBpZih0IDwgMC4wKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbG9yRXZlbjsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xvck9kZDsKKyAgICAgICAgfSwKKworICAgICAg
ICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ2hlc3NNYXRl
cmlhbCBbZ2xvc3M9JyArIHRoaXMuZ2xvc3MgKyAnLCB0cmFuc3BhcmVuY3k9JyArIHRoaXMudHJh
bnNwYXJlbmN5ICsgJywgaGFzVGV4dHVyZT0nICsgdGhpcy5oYXNUZXh0dXJlICsnXSc7CisgICAg
ICAgIH0KKyAgICB9CispOworLyogRmFrZSBhIEZsb2cuKiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVv
ZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJh
eVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyID0ge307CitpZih0eXBlb2Yo
RmxvZy5SYXlUcmFjZXIuU2hhcGUpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlci5TaGFw
ZSA9IHt9OworCitGbG9nLlJheVRyYWNlci5TaGFwZS5CYXNlU2hhcGUgPSBDbGFzcy5jcmVhdGUo
KTsKKworRmxvZy5SYXlUcmFjZXIuU2hhcGUuQmFzZVNoYXBlLnByb3RvdHlwZSA9IHsKKyAgICBw
b3NpdGlvbjogbnVsbCwKKyAgICBtYXRlcmlhbDogbnVsbCwKKworICAgIGluaXRpYWxpemUgOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBWZWN0b3IoMCwwLDApOwor
ICAgICAgICB0aGlzLm1hdGVyaWFsID0gbmV3IEZsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLlNvbGlk
TWF0ZXJpYWwoCisgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMSwwLDEpLAor
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwCisgICAgICAgICk7
CisgICAgfSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4g
J01hdGVyaWFsIFtnbG9zcz0nICsgdGhpcy5nbG9zcyArICcsIHRyYW5zcGFyZW5jeT0nICsgdGhp
cy50cmFuc3BhcmVuY3kgKyAnLCBoYXNUZXh0dXJlPScgKyB0aGlzLmhhc1RleHR1cmUgKyddJzsK
KyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cp
ID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2Vy
KSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJh
eVRyYWNlci5TaGFwZSkgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyLlNoYXBlID0ge307
CisKK0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlNwaGVyZSA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9n
LlJheVRyYWNlci5TaGFwZS5TcGhlcmUucHJvdG90eXBlID0geworICAgIGluaXRpYWxpemUgOiBm
dW5jdGlvbihwb3MsIHJhZGl1cywgbWF0ZXJpYWwpIHsKKyAgICAgICAgdGhpcy5yYWRpdXMgPSBy
YWRpdXM7CisgICAgICAgIHRoaXMucG9zaXRpb24gPSBwb3M7CisgICAgICAgIHRoaXMubWF0ZXJp
YWwgPSBtYXRlcmlhbDsKKyAgICB9LAorCisgICAgaW50ZXJzZWN0OiBmdW5jdGlvbihyYXkpewor
ICAgICAgICB2YXIgaW5mbyA9IG5ldyBGbG9nLlJheVRyYWNlci5JbnRlcnNlY3Rpb25JbmZvKCk7
CisgICAgICAgIGluZm8uc2hhcGUgPSB0aGlzOworCisgICAgICAgIHZhciBkc3QgPSBGbG9nLlJh
eVRyYWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KHJheS5wb3NpdGlvbiwgdGhpcy5wb3Np
dGlvbik7CisKKyAgICAgICAgdmFyIEIgPSBkc3QuZG90KHJheS5kaXJlY3Rpb24pOworICAgICAg
ICB2YXIgQyA9IGRzdC5kb3QoZHN0KSAtICh0aGlzLnJhZGl1cyAqIHRoaXMucmFkaXVzKTsKKyAg
ICAgICAgdmFyIEQgPSAoQiAqIEIpIC0gQzsKKworICAgICAgICBpZihEID4gMCl7IC8vIGludGVy
c2VjdGlvbiEKKyAgICAgICAgICAgIGluZm8uaXNIaXQgPSB0cnVlOworICAgICAgICAgICAgaW5m
by5kaXN0YW5jZSA9ICgtQikgLSBNYXRoLnNxcnQoRCk7CisgICAgICAgICAgICBpbmZvLnBvc2l0
aW9uID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5hZGQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXkucG9zaXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9nLlJheVRyYWNlci5W
ZWN0b3IucHJvdG90eXBlLm11bHRpcGx5U2NhbGFyKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJheS5kaXJlY3Rpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kaXN0YW5jZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgaW5mby5u
b3JtYWwgPSBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnBvc2l0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5ub3JtYWxpemUoKTsKKwor
ICAgICAgICAgICAgaW5mby5jb2xvciA9IHRoaXMubWF0ZXJpYWwuZ2V0Q29sb3IoMCwwKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZm8uaXNIaXQgPSBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gaW5mbzsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiAnU3BoZXJlIFtwb3NpdGlvbj0nICsgdGhpcy5wb3NpdGlv
biArICcsIHJhZGl1cz0nICsgdGhpcy5yYWRpdXMgKyAnXSc7CisgICAgfQorfQorLyogRmFrZSBh
IEZsb2cuKiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFy
IEZsb2cgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZs
b2cuUmF5VHJhY2VyID0ge307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIuU2hhcGUpID09ICd1
bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlci5TaGFwZSA9IHt9OworCitGbG9nLlJheVRyYWNlci5T
aGFwZS5QbGFuZSA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5TaGFwZS5QbGFu
ZS5wcm90b3R5cGUgPSB7CisgICAgZDogMC4wLAorCisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9u
KHBvcywgZCwgbWF0ZXJpYWwpIHsKKyAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvczsKKyAgICAg
ICAgdGhpcy5kID0gZDsKKyAgICAgICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsOworICAgIH0s
CisKKyAgICBpbnRlcnNlY3Q6IGZ1bmN0aW9uKHJheSl7CisgICAgICAgIHZhciBpbmZvID0gbmV3
IEZsb2cuUmF5VHJhY2VyLkludGVyc2VjdGlvbkluZm8oKTsKKworICAgICAgICB2YXIgVmQgPSB0
aGlzLnBvc2l0aW9uLmRvdChyYXkuZGlyZWN0aW9uKTsKKyAgICAgICAgaWYoVmQgPT0gMCkgcmV0
dXJuIGluZm87IC8vIG5vIGludGVyc2VjdGlvbgorCisgICAgICAgIHZhciB0ID0gLSh0aGlzLnBv
c2l0aW9uLmRvdChyYXkucG9zaXRpb24pICsgdGhpcy5kKSAvIFZkOworICAgICAgICBpZih0IDw9
IDApIHJldHVybiBpbmZvOworCisgICAgICAgIGluZm8uc2hhcGUgPSB0aGlzOworICAgICAgICBp
bmZvLmlzSGl0ID0gdHJ1ZTsKKyAgICAgICAgaW5mby5wb3NpdGlvbiA9IEZsb2cuUmF5VHJhY2Vy
LlZlY3Rvci5wcm90b3R5cGUuYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByYXkucG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlwbHlTY2Fs
YXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXku
ZGlyZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgaW5mby5ub3Jt
YWwgPSB0aGlzLnBvc2l0aW9uOworICAgICAgICBpbmZvLmRpc3RhbmNlID0gdDsKKworICAgICAg
ICBpZih0aGlzLm1hdGVyaWFsLmhhc1RleHR1cmUpeworICAgICAgICAgICAgdmFyIHZVID0gbmV3
IEZsb2cuUmF5VHJhY2VyLlZlY3Rvcih0aGlzLnBvc2l0aW9uLnksIHRoaXMucG9zaXRpb24ueiwg
LXRoaXMucG9zaXRpb24ueCk7CisgICAgICAgICAgICB2YXIgdlYgPSB2VS5jcm9zcyh0aGlzLnBv
c2l0aW9uKTsKKyAgICAgICAgICAgIHZhciB1ID0gaW5mby5wb3NpdGlvbi5kb3QodlUpOworICAg
ICAgICAgICAgdmFyIHYgPSBpbmZvLnBvc2l0aW9uLmRvdCh2Vik7CisgICAgICAgICAgICBpbmZv
LmNvbG9yID0gdGhpcy5tYXRlcmlhbC5nZXRDb2xvcih1LHYpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaW5mby5jb2xvciA9IHRoaXMubWF0ZXJpYWwuZ2V0Q29sb3IoMCwwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBpbmZvOworICAgIH0sCisKKyAgICB0b1N0cmluZyA6
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdQbGFuZSBbJyArIHRoaXMucG9zaXRpb24g
KyAnLCBkPScgKyB0aGlzLmQgKyAnXSc7CisgICAgfQorfQorLyogRmFrZSBhIEZsb2cuKiBuYW1l
c3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7fTsK
K2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2Vy
ID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLkludGVyc2VjdGlvbkluZm8gPSBDbGFzcy5jcmVhdGUo
KTsKKworRmxvZy5SYXlUcmFjZXIuSW50ZXJzZWN0aW9uSW5mby5wcm90b3R5cGUgPSB7CisgICAg
aXNIaXQ6IGZhbHNlLAorICAgIGhpdENvdW50OiAwLAorICAgIHNoYXBlOiBudWxsLAorICAgIHBv
c2l0aW9uOiBudWxsLAorICAgIG5vcm1hbDogbnVsbCwKKyAgICBjb2xvcjogbnVsbCwKKyAgICBk
aXN0YW5jZTogbnVsbCwKKworICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
dGhpcy5jb2xvciA9IG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLDAsMCk7CisgICAgfSwKKwor
ICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gJ0ludGVyc2VjdGlv
biBbJyArIHRoaXMucG9zaXRpb24gKyAnXSc7CisgICAgfQorfQorLyogRmFrZSBhIEZsb2cuKiBu
YW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7
fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJh
Y2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLkNhbWVyYSA9IENsYXNzLmNyZWF0ZSgpOworCitG
bG9nLlJheVRyYWNlci5DYW1lcmEucHJvdG90eXBlID0geworICAgIHBvc2l0aW9uOiBudWxsLAor
ICAgIGxvb2tBdDogbnVsbCwKKyAgICBlcXVhdG9yOiBudWxsLAorICAgIHVwOiBudWxsLAorICAg
IHNjcmVlbjogbnVsbCwKKworICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihwb3MsIGxvb2tBdCwg
dXApIHsKKyAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvczsKKyAgICAgICAgdGhpcy5sb29rQXQg
PSBsb29rQXQ7CisgICAgICAgIHRoaXMudXAgPSB1cDsKKyAgICAgICAgdGhpcy5lcXVhdG9yID0g
bG9va0F0Lm5vcm1hbGl6ZSgpLmNyb3NzKHRoaXMudXApOworICAgICAgICB0aGlzLnNjcmVlbiA9
IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUuYWRkKHRoaXMucG9zaXRpb24sIHRoaXMu
bG9va0F0KTsKKyAgICB9LAorCisgICAgZ2V0UmF5OiBmdW5jdGlvbih2eCwgdnkpeworICAgICAg
ICB2YXIgcG9zID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAg
ICAgICAgICAgIHRoaXMuc2NyZWVuLAorICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIuVmVjdG9y
LnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAgICAgICAgICBGbG9nLlJheVRyYWNlci5WZWN0
b3IucHJvdG90eXBlLm11bHRpcGx5U2NhbGFyKHRoaXMuZXF1YXRvciwgdngpLAorICAgICAgICAg
ICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIodGhp
cy51cCwgdnkpCisgICAgICAgICAgICApCisgICAgICAgICk7CisgICAgICAgIHBvcy55ID0gcG9z
LnkgKiAtMTsKKyAgICAgICAgdmFyIGRpciA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5
cGUuc3VidHJhY3QoCisgICAgICAgICAgICBwb3MsCisgICAgICAgICAgICB0aGlzLnBvc2l0aW9u
CisgICAgICAgICk7CisKKyAgICAgICAgdmFyIHJheSA9IG5ldyBGbG9nLlJheVRyYWNlci5SYXko
cG9zLCBkaXIubm9ybWFsaXplKCkpOworCisgICAgICAgIHJldHVybiByYXk7CisgICAgfSwKKwor
ICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gJ1JheSBbXSc7Cisg
ICAgfQorfQorLyogRmFrZSBhIEZsb2cuKiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9
PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikg
PT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLkJh
Y2tncm91bmQgPSBDbGFzcy5jcmVhdGUoKTsKKworRmxvZy5SYXlUcmFjZXIuQmFja2dyb3VuZC5w
cm90b3R5cGUgPSB7CisgICAgY29sb3IgOiBudWxsLAorICAgIGFtYmllbmNlIDogMC4wLAorCisg
ICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKGNvbG9yLCBhbWJpZW5jZSkgeworICAgICAgICB0aGlz
LmNvbG9yID0gY29sb3I7CisgICAgICAgIHRoaXMuYW1iaWVuY2UgPSBhbWJpZW5jZTsKKyAgICB9
Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1
bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAn
dW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuRW5naW5l
ID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLkVuZ2luZS5wcm90b3R5cGUgPSB7
CisgICAgY2FudmFzOiBudWxsLCAvKiAyZCBjb250ZXh0IHdlIGNhbiByZW5kZXIgdG8gKi8KKwor
ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpeworICAgICAgICB0aGlzLm9wdGlvbnMg
PSBPYmplY3QuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgICBjYW52YXNIZWlnaHQ6IDEwMCwKKyAg
ICAgICAgICAgICAgICBjYW52YXNXaWR0aDogMTAwLAorICAgICAgICAgICAgICAgIHBpeGVsV2lk
dGg6IDIsCisgICAgICAgICAgICAgICAgcGl4ZWxIZWlnaHQ6IDIsCisgICAgICAgICAgICAgICAg
cmVuZGVyRGlmZnVzZTogZmFsc2UsCisgICAgICAgICAgICAgICAgcmVuZGVyU2hhZG93czogZmFs
c2UsCisgICAgICAgICAgICAgICAgcmVuZGVySGlnaGxpZ2h0czogZmFsc2UsCisgICAgICAgICAg
ICAgICAgcmVuZGVyUmVmbGVjdGlvbnM6IGZhbHNlLAorICAgICAgICAgICAgICAgIHJheURlcHRo
OiAyCisgICAgICAgICAgICB9LCBvcHRpb25zIHx8IHt9KTsKKworICAgICAgICB0aGlzLm9wdGlv
bnMuY2FudmFzSGVpZ2h0IC89IHRoaXMub3B0aW9ucy5waXhlbEhlaWdodDsKKyAgICAgICAgdGhp
cy5vcHRpb25zLmNhbnZhc1dpZHRoIC89IHRoaXMub3B0aW9ucy5waXhlbFdpZHRoOworCisgICAg
ICAgIC8qIFRPRE86IGR5bmFtaWNhbGx5IGluY2x1ZGUgb3RoZXIgc2NyaXB0cyAqLworICAgIH0s
CisKKyAgICBzZXRQaXhlbDogZnVuY3Rpb24oeCwgeSwgY29sb3IpeworICAgICAgICB2YXIgcHhX
LCBweEg7CisgICAgICAgIHB4VyA9IHRoaXMub3B0aW9ucy5waXhlbFdpZHRoOworICAgICAgICBw
eEggPSB0aGlzLm9wdGlvbnMucGl4ZWxIZWlnaHQ7CisKKyAgICAgICAgaWYgKHRoaXMuY2FudmFz
KSB7CisgICAgICAgICAgdGhpcy5jYW52YXMuZmlsbFN0eWxlID0gY29sb3IudG9TdHJpbmcoKTsK
KyAgICAgICAgICB0aGlzLmNhbnZhcy5maWxsUmVjdCAoeCAqIHB4VywgeSAqIHB4SCwgcHhXLCBw
eEgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICh4ID09PSAgeSkgeworICAgICAg
ICAgICAgY2hlY2tOdW1iZXIgKz0gY29sb3IuYnJpZ2h0bmVzcygpOworICAgICAgICAgIH0KKyAg
ICAgICAgICAvLyBwcmludCh4ICogcHhXLCB5ICogcHhILCBweFcsIHB4SCk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgcmVuZGVyU2NlbmU6IGZ1bmN0aW9uKHNjZW5lLCBjYW52YXMpeworICAg
ICAgICBjaGVja051bWJlciA9IDA7CisgICAgICAgIC8qIEdldCBjYW52YXMgKi8KKyAgICAgICAg
aWYgKGNhbnZhcykgeworICAgICAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzLmdldENvbnRleHQo
IjJkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5jYW52YXMgPSBudWxsOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGNhbnZhc0hlaWdodCA9IHRoaXMub3B0aW9ucy5jYW52
YXNIZWlnaHQ7CisgICAgICAgIHZhciBjYW52YXNXaWR0aCA9IHRoaXMub3B0aW9ucy5jYW52YXNX
aWR0aDsKKworICAgICAgICBmb3IodmFyIHk9MDsgeSA8IGNhbnZhc0hlaWdodDsgeSsrKXsKKyAg
ICAgICAgICAgIGZvcih2YXIgeD0wOyB4IDwgY2FudmFzV2lkdGg7IHgrKyl7CisgICAgICAgICAg
ICAgICAgdmFyIHlwID0geSAqIDEuMCAvIGNhbnZhc0hlaWdodCAqIDIgLSAxOworICAgICAgICAg
IAkJdmFyIHhwID0geCAqIDEuMCAvIGNhbnZhc1dpZHRoICogMiAtIDE7CisKKyAgICAgICAgICAJ
CXZhciByYXkgPSBzY2VuZS5jYW1lcmEuZ2V0UmF5KHhwLCB5cCk7CisKKyAgICAgICAgICAJCXZh
ciBjb2xvciA9IHRoaXMuZ2V0UGl4ZWxDb2xvcihyYXksIHNjZW5lKTsKKworICAgICAgICAgICAg
CXRoaXMuc2V0UGl4ZWwoeCwgeSwgY29sb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGlmIChjaGVja051bWJlciAhPT0gMjMyMSkgeworICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiU2NlbmUgcmVuZGVyZWQgaW5jb3JyZWN0bHkiKTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICBnZXRQaXhlbENvbG9yOiBmdW5jdGlvbihyYXksIHNjZW5lKXsKKyAgICAgICAgdmFyIGlu
Zm8gPSB0aGlzLnRlc3RJbnRlcnNlY3Rpb24ocmF5LCBzY2VuZSwgbnVsbCk7CisgICAgICAgIGlm
KGluZm8uaXNIaXQpeworICAgICAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5yYXlUcmFjZShpbmZv
LCByYXksIHNjZW5lLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBjb2xvcjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gc2NlbmUuYmFja2dyb3VuZC5jb2xvcjsKKyAgICB9LAorCisgICAgdGVz
dEludGVyc2VjdGlvbjogZnVuY3Rpb24ocmF5LCBzY2VuZSwgZXhjbHVkZSl7CisgICAgICAgIHZh
ciBoaXRzID0gMDsKKyAgICAgICAgdmFyIGJlc3QgPSBuZXcgRmxvZy5SYXlUcmFjZXIuSW50ZXJz
ZWN0aW9uSW5mbygpOworICAgICAgICBiZXN0LmRpc3RhbmNlID0gMjAwMDsKKworICAgICAgICBm
b3IodmFyIGk9MDsgaTxzY2VuZS5zaGFwZXMubGVuZ3RoOyBpKyspeworICAgICAgICAgICAgdmFy
IHNoYXBlID0gc2NlbmUuc2hhcGVzW2ldOworCisgICAgICAgICAgICBpZihzaGFwZSAhPSBleGNs
dWRlKXsKKyAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IHNoYXBlLmludGVyc2VjdChyYXkpOwor
ICAgICAgICAgICAgICAgIGlmKGluZm8uaXNIaXQgJiYgaW5mby5kaXN0YW5jZSA+PSAwICYmIGlu
Zm8uZGlzdGFuY2UgPCBiZXN0LmRpc3RhbmNlKXsKKyAgICAgICAgICAgICAgICAgICAgYmVzdCA9
IGluZm87CisgICAgICAgICAgICAgICAgICAgIGhpdHMrKzsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmVzdC5oaXRDb3VudCA9IGhpdHM7Cisg
ICAgICAgIHJldHVybiBiZXN0OworICAgIH0sCisKKyAgICBnZXRSZWZsZWN0aW9uUmF5OiBmdW5j
dGlvbihQLE4sVil7CisgICAgICAgIHZhciBjMSA9IC1OLmRvdChWKTsKKyAgICAgICAgdmFyIFIx
ID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5hZGQoCisgICAgICAgICAgICBGbG9n
LlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLm11bHRpcGx5U2NhbGFyKE4sIDIqYzEpLAorICAg
ICAgICAgICAgVgorICAgICAgICApOworICAgICAgICByZXR1cm4gbmV3IEZsb2cuUmF5VHJhY2Vy
LlJheShQLCBSMSk7CisgICAgfSwKKworICAgIHJheVRyYWNlOiBmdW5jdGlvbihpbmZvLCByYXks
IHNjZW5lLCBkZXB0aCl7CisgICAgICAgIC8vIENhbGMgYW1iaWVudAorICAgICAgICB2YXIgY29s
b3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIoaW5mby5j
b2xvciwgc2NlbmUuYmFja2dyb3VuZC5hbWJpZW5jZSk7CisgICAgICAgIHZhciBvbGRDb2xvciA9
IGNvbG9yOworICAgICAgICB2YXIgc2hpbmluZXNzID0gTWF0aC5wb3coMTAsIGluZm8uc2hhcGUu
bWF0ZXJpYWwuZ2xvc3MgKyAxKTsKKworICAgICAgICBmb3IodmFyIGk9MDsgaTxzY2VuZS5saWdo
dHMubGVuZ3RoOyBpKyspeworICAgICAgICAgICAgdmFyIGxpZ2h0ID0gc2NlbmUubGlnaHRzW2ld
OworCisgICAgICAgICAgICAvLyBDYWxjIGRpZmZ1c2UgbGlnaHRpbmcKKyAgICAgICAgICAgIHZh
ciB2ID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHQucG9zaXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8ucG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApLm5vcm1hbGl6ZSgpOworCisgICAgICAgICAgICBpZih0aGlzLm9wdGlvbnMucmVuZGVyRGlm
ZnVzZSl7CisgICAgICAgICAgICAgICAgdmFyIEwgPSB2LmRvdChpbmZvLm5vcm1hbCk7CisgICAg
ICAgICAgICAgICAgaWYoTCA+IDAuMCl7CisgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gRmxv
Zy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUubXVsdGlwbHkoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uY29sb3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLkNvbG9y
LnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpZ2h0LmNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBncmVhdGVyIHRoZSBkZXB0
aCB0aGUgbW9yZSBhY2N1cmF0ZSB0aGUgY29sb3VycywgYnV0CisgICAgICAgICAgICAvLyB0aGlz
IGlzIGV4cG9uZW50aWFsbHkgKCEpIGV4cGVuc2l2ZQorICAgICAgICAgICAgaWYoZGVwdGggPD0g
dGhpcy5vcHRpb25zLnJheURlcHRoKXsKKyAgICAgICAgICAvLyBjYWxjdWxhdGUgcmVmbGVjdGlv
biByYXkKKyAgICAgICAgICBpZih0aGlzLm9wdGlvbnMucmVuZGVyUmVmbGVjdGlvbnMgJiYgaW5m
by5zaGFwZS5tYXRlcmlhbC5yZWZsZWN0aW9uID4gMCkKKyAgICAgICAgICB7CisgICAgICAgICAg
ICAgIHZhciByZWZsZWN0aW9uUmF5ID0gdGhpcy5nZXRSZWZsZWN0aW9uUmF5KGluZm8ucG9zaXRp
b24sIGluZm8ubm9ybWFsLCByYXkuZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgdmFyIHJlZmwg
PSB0aGlzLnRlc3RJbnRlcnNlY3Rpb24ocmVmbGVjdGlvblJheSwgc2NlbmUsIGluZm8uc2hhcGUp
OworCisgICAgICAgICAgICAgIGlmIChyZWZsLmlzSGl0ICYmIHJlZmwuZGlzdGFuY2UgPiAwKXsK
KyAgICAgICAgICAgICAgICAgIHJlZmwuY29sb3IgPSB0aGlzLnJheVRyYWNlKHJlZmwsIHJlZmxl
Y3Rpb25SYXksIHNjZW5lLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgcmVmbC5jb2xvciA9IHNjZW5lLmJhY2tncm91bmQuY29sb3I7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIGNvbG9yID0gRmxvZy5S
YXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLmJsZW5kKAorICAgICAgICAgICAgICAgICAgICBjb2xv
ciwKKyAgICAgICAgICAgICAgICAgICAgcmVmbC5jb2xvciwKKyAgICAgICAgICAgICAgICAgICAg
aW5mby5zaGFwZS5tYXRlcmlhbC5yZWZsZWN0aW9uCisgICAgICAgICAgICAgICAgICApOworICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJlZnJhY3Rpb24KKyAgICAgICAgICAgICAg
ICAvKiBUT0RPICovCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFJlbmRlciBzaGFk
b3dzIGFuZCBoaWdobGlnaHRzICovCisKKyAgICAgICAgICAgIHZhciBzaGFkb3dJbmZvID0gbmV3
IEZsb2cuUmF5VHJhY2VyLkludGVyc2VjdGlvbkluZm8oKTsKKworICAgICAgICAgICAgaWYodGhp
cy5vcHRpb25zLnJlbmRlclNoYWRvd3MpeworICAgICAgICAgICAgICAgIHZhciBzaGFkb3dSYXkg
PSBuZXcgRmxvZy5SYXlUcmFjZXIuUmF5KGluZm8ucG9zaXRpb24sIHYpOworCisgICAgICAgICAg
ICAgICAgc2hhZG93SW5mbyA9IHRoaXMudGVzdEludGVyc2VjdGlvbihzaGFkb3dSYXksIHNjZW5l
LCBpbmZvLnNoYXBlKTsKKyAgICAgICAgICAgICAgICBpZihzaGFkb3dJbmZvLmlzSGl0ICYmIHNo
YWRvd0luZm8uc2hhcGUgIT0gaW5mby5zaGFwZSAvKiYmIHNoYWRvd0luZm8uc2hhcGUudHlwZSAh
PSAnUExBTkUnKi8peworICAgICAgICAgICAgICAgICAgICB2YXIgdkEgPSBGbG9nLlJheVRyYWNl
ci5Db2xvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIoY29sb3IsIDAuNSk7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBkQiA9ICgwLjUgKiBNYXRoLnBvdyhzaGFkb3dJbmZvLnNoYXBlLm1hdGVy
aWFsLnRyYW5zcGFyZW5jeSwgMC41KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gRmxv
Zy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLmFkZFNjYWxhcih2QSxkQik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAvLyBQaG9uZyBzcGVjdWxhciBoaWdobGln
aHRzCisgICAgICBpZih0aGlzLm9wdGlvbnMucmVuZGVySGlnaGxpZ2h0cyAmJiAhc2hhZG93SW5m
by5pc0hpdCAmJiBpbmZvLnNoYXBlLm1hdGVyaWFsLmdsb3NzID4gMCl7CisgICAgICAgIHZhciBM
diA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mby5zaGFwZS5wb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaWdodC5wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKS5ub3Jt
YWxpemUoKTsKKworICAgICAgICB2YXIgRSA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5
cGUuc3VidHJhY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUuY2FtZXJhLnBv
c2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uc2hhcGUucG9zaXRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICkubm9ybWFsaXplKCk7CisKKyAgICAgICAgdmFyIEgg
PSBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkubm9ybWFsaXplKCk7CisKKyAgICAgICAgdmFyIGdsb3NzV2Vp
Z2h0ID0gTWF0aC5wb3coTWF0aC5tYXgoaW5mby5ub3JtYWwuZG90KEgpLCAwKSwgc2hpbmluZXNz
KTsKKyAgICAgICAgY29sb3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUuYWRkKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlw
ZS5tdWx0aXBseVNjYWxhcihsaWdodC5jb2xvciwgZ2xvc3NXZWlnaHQpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbG9yCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNvbG9yLmxpbWl0KCk7CisgICAgICAgIHJldHVybiBjb2xv
cjsKKyAgICB9Cit9OworCisKK2Z1bmN0aW9uIHJlbmRlclNjZW5lKCl7CisgICAgdmFyIHNjZW5l
ID0gbmV3IEZsb2cuUmF5VHJhY2VyLlNjZW5lKCk7CisKKyAgICBzY2VuZS5jYW1lcmEgPSBuZXcg
RmxvZy5SYXlUcmFjZXIuQ2FtZXJhKAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2cu
UmF5VHJhY2VyLlZlY3RvcigwLCAwLCAtMTUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigtMC4yLCAwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoMCwgMSwgMCkKKyAgICAgICAgICAgICAgICAg
ICAgKTsKKworICAgIHNjZW5lLmJhY2tncm91bmQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQmFja2dy
b3VuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2Vy
LkNvbG9yKDAuNSwgMC41LCAwLjUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgdmFyIHNwaGVyZSA9IG5l
dyBGbG9nLlJheVRyYWNlci5TaGFwZS5TcGhlcmUoCisgICAgICAgIG5ldyBGbG9nLlJheVRyYWNl
ci5WZWN0b3IoLTEuNSwgMS41LCAyKSwKKyAgICAgICAgMS41LAorICAgICAgICBuZXcgRmxvZy5S
YXlUcmFjZXIuTWF0ZXJpYWwuU29saWQoCisgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIu
Q29sb3IoMCwwLjUsMC41KSwKKyAgICAgICAgICAgIDAuMywKKyAgICAgICAgICAgIDAuMCwKKyAg
ICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgIDIuMAorICAgICAgICApCisgICAgKTsKKworICAg
IHZhciBzcGhlcmUxID0gbmV3IEZsb2cuUmF5VHJhY2VyLlNoYXBlLlNwaGVyZSgKKyAgICAgICAg
bmV3IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigxLCAwLjI1LCAxKSwKKyAgICAgICAgMC41LAorICAg
ICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwuU29saWQoCisgICAgICAgICAgICBuZXcg
RmxvZy5SYXlUcmFjZXIuQ29sb3IoMC45LDAuOSwwLjkpLAorICAgICAgICAgICAgMC4xLAorICAg
ICAgICAgICAgMC4wLAorICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgMS41CisgICAgICAg
ICkKKyAgICApOworCisgICAgdmFyIHBsYW5lID0gbmV3IEZsb2cuUmF5VHJhY2VyLlNoYXBlLlBs
YW5lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIu
VmVjdG9yKDAuMSwgMC45LCAtMC41KS5ub3JtYWxpemUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMS4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxv
Zy5SYXlUcmFjZXIuTWF0ZXJpYWwuQ2hlc3Nib2FyZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigxLDEsMSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMCwwLDAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOworCisgICAgc2NlbmUuc2hhcGVzLnB1c2gocGxhbmUpOworICAgIHNjZW5lLnNoYXBl
cy5wdXNoKHNwaGVyZSk7CisgICAgc2NlbmUuc2hhcGVzLnB1c2goc3BoZXJlMSk7CisKKyAgICB2
YXIgbGlnaHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuTGlnaHQoCisgICAgICAgIG5ldyBGbG9nLlJh
eVRyYWNlci5WZWN0b3IoNSwgMTAsIC0xKSwKKyAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLkNv
bG9yKDAuOCwgMC44LCAwLjgpCisgICAgKTsKKworICAgIHZhciBsaWdodDEgPSBuZXcgRmxvZy5S
YXlUcmFjZXIuTGlnaHQoCisgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoLTMsIDUs
IC0xNSksCisgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLjgsIDAuOCwgMC44KSwK
KyAgICAgICAgMTAwCisgICAgKTsKKworICAgIHNjZW5lLmxpZ2h0cy5wdXNoKGxpZ2h0KTsKKyAg
ICBzY2VuZS5saWdodHMucHVzaChsaWdodDEpOworCisgICAgdmFyIGltYWdlV2lkdGggPSAxMDA7
IC8vICRGKCdpbWFnZVdpZHRoJyk7CisgICAgdmFyIGltYWdlSGVpZ2h0ID0gMTAwOyAvLyAkRign
aW1hZ2VIZWlnaHQnKTsKKyAgICB2YXIgcGl4ZWxTaXplID0gIjUsNSIuc3BsaXQoJywnKTsgLy8g
ICRGKCdwaXhlbFNpemUnKS5zcGxpdCgnLCcpOworICAgIHZhciByZW5kZXJEaWZmdXNlID0gdHJ1
ZTsgLy8gJEYoJ3JlbmRlckRpZmZ1c2UnKTsKKyAgICB2YXIgcmVuZGVyU2hhZG93cyA9IHRydWU7
IC8vICRGKCdyZW5kZXJTaGFkb3dzJyk7CisgICAgdmFyIHJlbmRlckhpZ2hsaWdodHMgPSB0cnVl
OyAvLyAkRigncmVuZGVySGlnaGxpZ2h0cycpOworICAgIHZhciByZW5kZXJSZWZsZWN0aW9ucyA9
IHRydWU7IC8vICRGKCdyZW5kZXJSZWZsZWN0aW9ucycpOworICAgIHZhciByYXlEZXB0aCA9IDI7
Ly8kRigncmF5RGVwdGgnKTsKKworICAgIHZhciByYXl0cmFjZXIgPSBuZXcgRmxvZy5SYXlUcmFj
ZXIuRW5naW5lKAorICAgICAgICB7CisgICAgICAgICAgICBjYW52YXNXaWR0aDogaW1hZ2VXaWR0
aCwKKyAgICAgICAgICAgIGNhbnZhc0hlaWdodDogaW1hZ2VIZWlnaHQsCisgICAgICAgICAgICBw
aXhlbFdpZHRoOiBwaXhlbFNpemVbMF0sCisgICAgICAgICAgICBwaXhlbEhlaWdodDogcGl4ZWxT
aXplWzFdLAorICAgICAgICAgICAgInJlbmRlckRpZmZ1c2UiOiByZW5kZXJEaWZmdXNlLAorICAg
ICAgICAgICAgInJlbmRlckhpZ2hsaWdodHMiOiByZW5kZXJIaWdobGlnaHRzLAorICAgICAgICAg
ICAgInJlbmRlclNoYWRvd3MiOiByZW5kZXJTaGFkb3dzLAorICAgICAgICAgICAgInJlbmRlclJl
ZmxlY3Rpb25zIjogcmVuZGVyUmVmbGVjdGlvbnMsCisgICAgICAgICAgICAicmF5RGVwdGgiOiBy
YXlEZXB0aAorICAgICAgICB9CisgICAgKTsKKworICAgIHJheXRyYWNlci5yZW5kZXJTY2VuZShz
Y2VuZSwgbnVsbCwgMCk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQorICByZW5k
ZXJTY2VuZSgpOwpJbmRleDogU3VuU3BpZGVyL3Rlc3RzL3Y4LXY1L3Y4LXJlZ2V4cC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTdW5TcGlkZXIvdGVzdHMvdjgtdjUvdjgtcmVnZXhwLmpzCShyZXZpc2lvbiAw
KQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY1L3Y4LXJlZ2V4cC5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNjEzIEBACisvLyBDb3B5cmlnaHQgMjAwOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAg
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIG9uIDIwMDktMDEtMzAuCisKKy8vIFRoaXMgYmVuY2htYXJrIGlzIGdl
bmVyYXRlZCBieSBsb2FkaW5nIDUwIG9mIHRoZSBtb3N0IHBvcHVsYXIgcGFnZXMKKy8vIG9uIHRo
ZSB3ZWIgYW5kIGxvZ2dpbmcgYWxsIHJlZ2V4cCBvcGVyYXRpb25zIHBlcmZvcm1lZC4gIEVhY2gK
Ky8vIG9wZXJhdGlvbiBpcyBnaXZlbiBhIHdlaWdodCB0aGF0IGlzIGNhbGN1bGF0ZWQgZnJvbSBh
biBlc3RpbWF0ZSBvZgorLy8gdGhlIHBvcHVsYXJpdHkgb2YgdGhlIHBhZ2VzIHdoZXJlIGl0IG9j
Y3VycyBhbmQgdGhlIG51bWJlciBvZiB0aW1lcworLy8gaXQgaXMgZXhlY3V0ZWQgd2hpbGUgbG9h
ZGluZyBlYWNoIHBhZ2UuICBGaW5hbGx5IHRoZSBsaXRlcmFsCisvLyBsZXR0ZXJzIGluIHRoZSBk
YXRhIGFyZSBlbmNvZGVkIHVzaW5nIFJPVDEzIGluIGEgd2F5IHRoYXQgZG9lcyBub3QKKy8vIGFm
ZmVjdCBob3cgdGhlIHJlZ2V4cHMgbWF0Y2ggdGhlaXIgaW5wdXQuCisKK2Z1bmN0aW9uIHJ1blJl
Z0V4cEJlbmNobWFyaygpIHsKKyAgdmFyIHJlMCA9IC9eYmEvOworICB2YXIgcmUxID0gLygoKFx3
Kyk6XC9cLykoW15cLzpdKikoOihcZCspKT8pPyhbXiM/XSopKFw/KFteI10qKSk/KCMoLiopKT8v
OworICB2YXIgcmUyID0gL15ccyp8XHMqJC9nOworICB2YXIgcmUzID0gL1xiUUJaUGJhZ2VieV9j
eW5wcnVieXFyZVxiLzsKKyAgdmFyIHJlNCA9IC8sLzsKKyAgdmFyIHJlNSA9IC9cYlFCWlBiYWdl
YnlfY3lucHJ1YnlxcmVcYi9nOworICB2YXIgcmU2ID0gL15bXHNceGEwXSt8W1xzXHhhMF0rJC9n
OworICB2YXIgcmU3ID0gLyhcZCopKFxEKikvZzsKKyAgdmFyIHJlOCA9IC89LzsKKyAgdmFyIHJl
OSA9IC8oXnxccylsaHZcLWgoXHN8JCkvOworICB2YXIgc3RyMCA9ICdaYm12eXluLzUuMCAoSnZh
cWJqZjsgSDsgSnZhcWJqZiBBRyA1LjE7IHJhLUhGKSBOY2N5ckpyb1h2Zy81MjguOSAoWFVHWlks
IHl2eHIgVHJweGIpIFB1ZWJ6ci8yLjAuMTU3LjAgRm5zbmV2LzUyOC45JzsKKyAgdmFyIHJlMTAg
PSAvXCMvZzsKKyAgdmFyIHJlMTEgPSAvXC4vZzsKKyAgdmFyIHJlMTIgPSAvJy9nOworICB2YXIg
cmUxMyA9IC9cP1tcd1xXXSooc2V2cmFxdnF8cHVuYWFyeXZxfHRlYmhjdnEpPShbXlwmXD8jXSop
L2k7CisgIHZhciBzdHIxID0gJ0Z1YnB4am5pciBTeW5mdSA5LjAgIGUxMTUnOworICB2YXIgcmUx
NCA9IC9ccysvZzsKKyAgdmFyIHJlMTUgPSAvXlxzKihcUyooXHMrXFMrKSopXHMqJC87CisgIHZh
ciByZTE2ID0gLygtW2Etel0pL2k7CisgIGZ1bmN0aW9uIHJ1bkJsb2NrMCgpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDY1MTE7IGkrKykgeworICAgICAgcmUwLmV4ZWMoJ3B5dnB4Jyk7Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTg0NDsgaSsrKSB7CisgICAgICByZTEuZXhl
YygndWdnYzovL2pqai5zbnByb2JieC5wYnoveWJ0dmEuY3VjJyk7CisgICAgfQorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgNzM5OyBpKyspIHsKKyAgICAgICdRQlpQYmFnZWJ5X2N5bnBydWJ5cXJl
Jy5yZXBsYWNlKHJlMiwgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU5ODsg
aSsrKSB7CisgICAgICByZTEuZXhlYygndWdnYzovL2pqai5zbnByb2JieC5wYnovJyk7CisgICAg
fQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDU0OyBpKyspIHsKKyAgICAgIHJlMS5leGVjKCd1
Z2djOi8vampqLnNucHJvYmJ4LnBiei9mZXB1LmN1YycpOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDM1MjsgaSsrKSB7CisgICAgICAvcXFxcXxxcXF8cXF8cXxaWlpafFpaWnxaWnxa
fGxsbGx8bGx8bHx1dXx1fFVVfFV8enp8enxmZnxmfGdnfGd8c3NzfHNzfHN8bW1tfG1tfG0vZy5l
eGVjKCdxcXFxLCBaWlogcSwgbGxsbCcpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDMxMjsgaSsrKSB7CisgICAgICByZTMuZXhlYygndmFjaGdncmtnIFFCWlBiYWdlYnlfY3lucHJ1
YnlxcmUnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyODI7IGkrKykgeworICAg
ICAgcmU0LmV4ZWMoJy9abEZjbnByVWJ6cmNudHIvVmFxcmstRnZnclVienIsMTAwMDAwMDAnKTsK
KyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNzc7IGkrKykgeworICAgICAgJ3ZhY2hn
Z3JrZycucmVwbGFjZShyZTUsICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
NzA7IGkrKykgeworICAgICAgJzUyOC45Jy5yZXBsYWNlKHJlNiwgJycpOworICAgICAgcmU3LmV4
ZWMoJzUyOCcpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE1NjsgaSsrKSB7Cisg
ICAgICByZTguZXhlYygnVkNQaHlnaGVyPXJhLUhGJyk7CisgICAgICByZTguZXhlYygnQ2Vyc3Jl
ZXJxUGh5Z2hlcj1yYS1IRicpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE0NDsg
aSsrKSB7CisgICAgICByZTAuZXhlYygneHJsY2VyZmYnKTsKKyAgICB9CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMzk7IGkrKykgeworICAgICAgJzUyMScucmVwbGFjZShyZTYsICcnKTsKKyAg
ICAgIHJlNy5leGVjKCc1MjEnKTsKKyAgICAgIHJlOS5leGVjKCcnKTsKKyAgICAgIC9Kcm9Ydmdc
LyhcUyspLy5leGVjKHN0cjApOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEzNzsg
aSsrKSB7CisgICAgICAncXZpIC5zb196cmFoJy5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgICdx
dmkgLnNvX3pyYWgnLnJlcGxhY2UoL1xbL2csICcnKTsKKyAgICAgICdxdmkuc29fenJhaCcucmVw
bGFjZShyZTExLCAnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTE3OyBpKysp
IHsKKyAgICAgICd1dnFxcmFfcnlyeicucmVwbGFjZShyZTIsICcnKTsKKyAgICB9CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA5NTsgaSsrKSB7CisgICAgICAvKD86Xnw7KVxzKnNldnJhcWZncmVf
eW5hdD0oW147XSopLy5leGVjKCdzZXZyYXFmZ3JlX25hYmE9bnZxJTNRbjZzczlwODVuODY4cm85
czA1OXBuODU0NzM1OTU2bzMlMjZlcnMlM1ElMjZkZiUzUSUyNnZwZ2wlM1FIRicpOworICAgIH0K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDkzOyBpKyspIHsKKyAgICAgICd1Z2djOi8vdWJ6ci56
bGZjbnByLnBiei92YXFyay5wc3onLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgcmUxMy5leGVj
KCd1Z2djOi8vdWJ6ci56bGZjbnByLnBiei92YXFyay5wc3onKTsKKyAgICB9CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA5MjsgaSsrKSB7CisgICAgICBzdHIxLnJlcGxhY2UoLyhbYS16QS1aXXxc
cykrLywgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg1OyBpKyspIHsKKyAg
ICAgICdzdmVmZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnc3ZlZmcnLnJlcGxhY2UocmUx
NSwgJycpOworICAgICAgJ3VnZ2M6Ly9jZWJzdnlyLnpsZmNucHIucGJ6L3ZhcXJrLnBzeicucmVw
bGFjZShyZTEyLCAnJyk7CisgICAgICAneW5mZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAn
eW5mZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICByZTE2LmV4ZWMoJ3F2ZmN5bmwnKTsKKyAg
ICAgIHJlMTMuZXhlYygndWdnYzovL2NlYnN2eXIuemxmY25wci5wYnovdmFxcmsucHN6Jyk7Cisg
ICAgfQorICB9CisgIHZhciByZTE3ID0gLyhefFteXFxdKVwiXFxcL1FuZ3JcKCgtP1swLTldKylc
KVxcXC9cIi9nOworICB2YXIgc3RyMiA9ICd7ImFuenIiOiIiLCJhaHpvcmVTYmV6bmciOnsiUGhl
ZXJhcGxRcnB2em55UXZ0dmdmIjoyLCJQaGVlcmFwbFFycHZ6bnlGcmNuZW5nYmUiOiIuIiwiVmZF
cm5xQmF5bCI6Z2VociwiUGhlZXJhcGxUZWJoY0Z2bXJmIjpbM10sIkFoem9yZVRlYmhjRnZtcmYi
OlszXSwiQ3JlcHJhZ1RlYmhjRnZtcmYiOlszXSwiUGhlZXJhcGxUZWJoY0ZyY25lbmdiZSI6Iiwi
LCJQaGVlcmFwbEZsem9ieSI6Ilx4YTQiLCJBbkFGbHpvYnkiOiJBbkEiLCJQaGVlcmFwbEFydG5n
dmlyQ25nZ3JlYSI6MCwiQWh6b3JlQXJ0bmd2aXJDbmdncmVhIjoxLCJDcmVwcmFnQ2Jmdmd2aXJD
bmdncmVhIjowLCJDcmVwcmFnQXJ0bmd2aXJDbmdncmVhIjowLCJBcnRuZ3ZpclZhc3ZhdmdsRmx6
b2J5IjoiLVZhc3ZhdmdsIiwiQXJ0bmd2aXJGdnRhIjoiLSIsIkFoem9yZVFycHZ6bnlRdnR2Z2Yi
OjIsIkFoem9yZVFycHZ6bnlGcmNuZW5nYmUiOiIuIiwiQWh6b3JlVGViaGNGcmNuZW5nYmUiOiIs
IiwiUGhlZXJhcGxDYmZ2Z3ZpckNuZ2dyZWEiOjAsIkNiZnZndmlyVmFzdmF2Z2xGbHpvYnkiOiJW
YXN2YXZnbCIsIkNiZnZndmlyRnZ0YSI6IisiLCJDcmVwcmFnUXJwdnpueVF2dHZnZiI6MiwiQ3Jl
cHJhZ1FycHZ6bnlGcmNuZW5nYmUiOiIuIiwiQ3JlcHJhZ1RlYmhjRnJjbmVuZ2JlIjoiLCIsIkNy
ZXByYWdGbHpvYnkiOiIlIiwiQ3JlWnZ5eXJGbHpvYnkiOiJcdTIwMzAiLCJBbmd2aXJRdnR2Z2Yi
OlsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSJdLCJRdnR2Z0Zob2Zndmdo
Z3ZiYSI6MX0sInFuZ3JHdnpyU2Jlem5nIjp7Ik5aUXJmdnRhbmdiZSI6Ik5aIiwiUG55cmFxbmUi
OnsiWnZhRmhjY2JlZ3JxUW5nckd2enIiOiJALTYyMTM1NTY4MDAwMDAwQCIsIlpua0ZoY2NiZWdy
cVFuZ3JHdnpyIjoiQDI1MzQwMjMwMDc5OTk5OUAiLCJOeXRiZXZndXpHbGNyIjoxLCJQbnlyYXFu
ZUdsY3IiOjEsIlJlbmYiOlsxXSwiR2piUXZ0dmdMcm5lWm5rIjoyMDI5LCJWZkVybnFCYXlsIjpn
ZWhyfSwiUW5nckZyY25lbmdiZSI6Ii8iLCJTdmVmZ1FubEJzSnJyeCI6MCwiUG55cmFxbmVKcnJ4
RWh5ciI6MCwiU2h5eVFuZ3JHdnpyQ25nZ3JlYSI6InFxcXEsIHFxIFpaWlogbGxsbCBVVTp6ejpm
ZiIsIlliYXRRbmdyQ25nZ3JlYSI6InFxcXEsIHFxIFpaWlogbGxsbCIsIlliYXRHdnpyQ25nZ3Jl
YSI6IlVVOnp6OmZmIiwiWmJhZ3VRbmxDbmdncmVhIjoiWlpaWiBxcSIsIkNaUXJmdnRhbmdiZSI6
IkNaIiwiRVNQMTEyM0NuZ2dyZWEiOiJxcXEsIHFxIFpaWiBsbGxsIFVVXCc6XCd6elwnOlwnZmYg
XCdUWkdcJyIsIkZ1YmVnUW5nckNuZ2dyZWEiOiJaWi9xcS9sbGxsIiwiRnViZWdHdnpyQ25nZ3Jl
YSI6IlVVOnp6IiwiRmJlZ25veXJRbmdyR3Z6ckNuZ2dyZWEiOiJsbGxsXCctXCdaWlwnLVwncXFc
J0dcJ1VVXCc6XCd6elwnOlwnZmYiLCJHdnpyRnJjbmVuZ2JlIjoiOiIsIkhhdmlyZWZueUZiZWdu
b3lyUW5nckd2enJDbmdncmVhIjoibGxsbFwnLVwnWlpcJy1cJ3FxIFVVXCc6XCd6elwnOlwnZmZc
J01cJyIsIkxybmVaYmFndUNuZ2dyZWEiOiJsbGxsIFpaWloiLCJOb29lcml2bmdycVFubEFuenJm
IjpbIkZoYSIsIlpiYSIsIkdociIsIkpycSIsIkd1aCIsIlNldiIsIkZuZyJdLCJGdWJlZ3JmZ1Fu
bEFuenJmIjpbIkZoIiwiWmIiLCJHaCIsIkpyIiwiR3UiLCJTZSIsIkZuIl0sIlFubEFuenJmIjpb
IkZoYXFubCIsIlpiYXFubCIsIkdocmZxbmwiLCJKcnFhcmZxbmwiLCJHdWhlZnFubCIsIlNldnFu
bCIsIkZuZ2hlcW5sIl0sIk5vb2VyaXZuZ3JxWmJhZ3VBbnpyZiI6WyJXbmEiLCJTcm8iLCJabmUi
LCJOY2UiLCJabmwiLCJXaGEiLCJXaHkiLCJOaHQiLCJGcmMiLCJCcGciLCJBYmkiLCJRcnAiLCIi
XSwiWmJhZ3VBbnpyZiI6WyJXbmFobmVsIiwiU3JvZWhuZWwiLCJabmVwdSIsIk5jZXZ5IiwiWm5s
IiwiV2hhciIsIldoeWwiLCJOaHRoZmciLCJGcmNncnpvcmUiLCJCcGdib3JlIiwiQWJpcnpvcmUi
LCJRcnByem9yZSIsIiJdLCJWZkVybnFCYXlsIjpnZWhyLCJBbmd2aXJQbnlyYXFuZUFuenIiOiJU
ZXJ0YmV2bmEgUG55cmFxbmUiLCJOb29lcml2bmdycVpiYWd1VHJhdmd2aXJBbnpyZiI6WyJXbmEi
LCJTcm8iLCJabmUiLCJOY2UiLCJabmwiLCJXaGEiLCJXaHkiLCJOaHQiLCJGcmMiLCJCcGciLCJB
YmkiLCJRcnAiLCIiXSwiWmJhZ3VUcmF2Z3ZpckFuenJmIjpbIlduYWhuZWwiLCJTcm9laG5lbCIs
IlpuZXB1IiwiTmNldnkiLCJabmwiLCJXaGFyIiwiV2h5bCIsIk5odGhmZyIsIkZyY2dyem9yZSIs
IkJwZ2JvcmUiLCJBYmlyem9yZSIsIlFycHJ6b3JlIiwiIl19fSc7CisgIHZhciBzdHIzID0gJ3si
YW56ciI6InJhLUhGIiwiYWh6b3JlU2Jlem5nIjp7IlBoZWVyYXBsUXJwdnpueVF2dHZnZiI6Miwi
UGhlZXJhcGxRcnB2em55RnJjbmVuZ2JlIjoiLiIsIlZmRXJucUJheWwiOnNueWZyLCJQaGVlcmFw
bFRlYmhjRnZtcmYiOlszXSwiQWh6b3JlVGViaGNGdm1yZiI6WzNdLCJDcmVwcmFnVGViaGNGdm1y
ZiI6WzNdLCJQaGVlcmFwbFRlYmhjRnJjbmVuZ2JlIjoiLCIsIlBoZWVyYXBsRmx6b2J5IjoiJCIs
IkFuQUZsem9ieSI6IkFuQSIsIlBoZWVyYXBsQXJ0bmd2aXJDbmdncmVhIjowLCJBaHpvcmVBcnRu
Z3ZpckNuZ2dyZWEiOjEsIkNyZXByYWdDYmZ2Z3ZpckNuZ2dyZWEiOjAsIkNyZXByYWdBcnRuZ3Zp
ckNuZ2dyZWEiOjAsIkFydG5ndmlyVmFzdmF2Z2xGbHpvYnkiOiItVmFzdmF2Z2wiLCJBcnRuZ3Zp
ckZ2dGEiOiItIiwiQWh6b3JlUXJwdnpueVF2dHZnZiI6MiwiQWh6b3JlUXJwdnpueUZyY25lbmdi
ZSI6Ii4iLCJBaHpvcmVUZWJoY0ZyY25lbmdiZSI6IiwiLCJQaGVlcmFwbENiZnZndmlyQ25nZ3Jl
YSI6MCwiQ2Jmdmd2aXJWYXN2YXZnbEZsem9ieSI6IlZhc3ZhdmdsIiwiQ2Jmdmd2aXJGdnRhIjoi
KyIsIkNyZXByYWdRcnB2em55UXZ0dmdmIjoyLCJDcmVwcmFnUXJwdnpueUZyY25lbmdiZSI6Ii4i
LCJDcmVwcmFnVGViaGNGcmNuZW5nYmUiOiIsIiwiQ3JlcHJhZ0Zsem9ieSI6IiUiLCJDcmVadnl5
ckZsem9ieSI6Ilx1MjAzMCIsIkFuZ3ZpclF2dHZnZiI6WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUi
LCI2IiwiNyIsIjgiLCI5Il0sIlF2dHZnRmhvZmd2Z2hndmJhIjoxfSwicW5nckd2enJTYmV6bmci
OnsiTlpRcmZ2dGFuZ2JlIjoiTloiLCJQbnlyYXFuZSI6eyJadmFGaGNjYmVncnFRbmdyR3Z6ciI6
IkAtNjIxMzU1NjgwMDAwMDBAIiwiWm5rRmhjY2JlZ3JxUW5nckd2enIiOiJAMjUzNDAyMzAwNzk5
OTk5QCIsIk55dGJldmd1ekdsY3IiOjEsIlBueXJhcW5lR2xjciI6MSwiUmVuZiI6WzFdLCJHamJR
dnR2Z0xybmVabmsiOjIwMjksIlZmRXJucUJheWwiOnNueWZyfSwiUW5nckZyY25lbmdiZSI6Ii8i
LCJTdmVmZ1FubEJzSnJyeCI6MCwiUG55cmFxbmVKcnJ4RWh5ciI6MCwiU2h5eVFuZ3JHdnpyQ25n
Z3JlYSI6InFxcXEsIFpaWlogcXEsIGxsbGwgdTp6ejpmZiBnZyIsIlliYXRRbmdyQ25nZ3JlYSI6
InFxcXEsIFpaWlogcXEsIGxsbGwiLCJZYmF0R3Z6ckNuZ2dyZWEiOiJ1Onp6OmZmIGdnIiwiWmJh
Z3VRbmxDbmdncmVhIjoiWlpaWiBxcSIsIkNaUXJmdnRhbmdiZSI6IkNaIiwiRVNQMTEyM0NuZ2dy
ZWEiOiJxcXEsIHFxIFpaWiBsbGxsIFVVXCc6XCd6elwnOlwnZmYgXCdUWkdcJyIsIkZ1YmVnUW5n
ckNuZ2dyZWEiOiJaL3EvbGxsbCIsIkZ1YmVnR3Z6ckNuZ2dyZWEiOiJ1Onp6IGdnIiwiRmJlZ25v
eXJRbmdyR3Z6ckNuZ2dyZWEiOiJsbGxsXCctXCdaWlwnLVwncXFcJ0dcJ1VVXCc6XCd6elwnOlwn
ZmYiLCJHdnpyRnJjbmVuZ2JlIjoiOiIsIkhhdmlyZWZueUZiZWdub3lyUW5nckd2enJDbmdncmVh
IjoibGxsbFwnLVwnWlpcJy1cJ3FxIFVVXCc6XCd6elwnOlwnZmZcJ01cJyIsIkxybmVaYmFndUNu
Z2dyZWEiOiJaWlpaLCBsbGxsIiwiTm9vZXJpdm5ncnFRbmxBbnpyZiI6WyJGaGEiLCJaYmEiLCJH
aHIiLCJKcnEiLCJHdWgiLCJTZXYiLCJGbmciXSwiRnViZWdyZmdRbmxBbnpyZiI6WyJGaCIsIlpi
IiwiR2giLCJKciIsIkd1IiwiU2UiLCJGbiJdLCJRbmxBbnpyZiI6WyJGaGFxbmwiLCJaYmFxbmwi
LCJHaHJmcW5sIiwiSnJxYXJmcW5sIiwiR3VoZWZxbmwiLCJTZXZxbmwiLCJGbmdoZXFubCJdLCJO
b29lcml2bmdycVpiYWd1QW56cmYiOlsiV25hIiwiU3JvIiwiWm5lIiwiTmNlIiwiWm5sIiwiV2hh
IiwiV2h5IiwiTmh0IiwiRnJjIiwiQnBnIiwiQWJpIiwiUXJwIiwiIl0sIlpiYWd1QW56cmYiOlsi
V25haG5lbCIsIlNyb2VobmVsIiwiWm5lcHUiLCJOY2V2eSIsIlpubCIsIldoYXIiLCJXaHlsIiwi
Tmh0aGZnIiwiRnJjZ3J6b3JlIiwiQnBnYm9yZSIsIkFiaXJ6b3JlIiwiUXJwcnpvcmUiLCIiXSwi
VmZFcm5xQmF5bCI6c255ZnIsIkFuZ3ZpclBueXJhcW5lQW56ciI6IlRlcnRiZXZuYSBQbnlyYXFu
ZSIsIk5vb2VyaXZuZ3JxWmJhZ3VUcmF2Z3ZpckFuenJmIjpbIlduYSIsIlNybyIsIlpuZSIsIk5j
ZSIsIlpubCIsIldoYSIsIldoeSIsIk5odCIsIkZyYyIsIkJwZyIsIkFiaSIsIlFycCIsIiJdLCJa
YmFndVRyYXZndmlyQW56cmYiOlsiV25haG5lbCIsIlNyb2VobmVsIiwiWm5lcHUiLCJOY2V2eSIs
IlpubCIsIldoYXIiLCJXaHlsIiwiTmh0aGZnIiwiRnJjZ3J6b3JlIiwiQnBnYm9yZSIsIkFiaXJ6
b3JlIiwiUXJwcnpvcmUiLCIiXX19JzsKKyAgdmFyIHN0cjQgPSAnSEZFWUJQPURLV3lMSEFpTVRI
OUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0lo
cVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlD
R1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpR
RG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjUgPSAnSEZFWUJQPURLV3lMSEFp
TVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFv
M0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFK
RXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4
MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZhciByZTE4ID0gL15ccyt8XHMrJC9nOwor
ICB2YXIgc3RyNiA9ICd1Z2djOi8vampqLnNucHJvYmJ4LnBiei92YXFyay5jdWMnOworICB2YXIg
cmUxOSA9IC8oPzpefFxzKyliYSg/OlxzK3wkKS87CisgIHZhciByZTIwID0gL1srLCBdLzsKKyAg
dmFyIHJlMjEgPSAveWJucXJxfHBiemN5cmdyLzsKKyAgdmFyIHN0cjcgPSAnOztqdmFxYmouSWpQ
dXJweFpiaGZyQ2Jmdmd2YmFOUV9WUT1zaGFwZ3ZiYShyKXt2cyghcilpbmUgcj1qdmFxYmoucmly
YWc7aW5lIGM9LTE7dnMoZDEpYz1kMS5FYnl5YnNzQ25hcnk7aW5lIGJvPUlqVHJnQm93KCJJakNu
YXlOUV9WUV8iK2MpO3ZzKGJvJiZiby5mZ2x5ci5pdmZ2b3Z5dmdsPT0iaXZmdm95ciIpe2luZSBm
bnM9SWpGbnM/ODowO2luZSBwaGVLPXIucHl2cmFnSytJakJPRnBlKCJVIikrZm5zLHBoZUw9ci5w
eXZyYWdMK0lqQk9GcGUoIkkiKStmbnM7aW5lIHk9SWpCT0VDKE5RX1ZRLGJvLCJZIiksZz1JakJP
RUMoTlFfVlEsYm8sIkciKTtpbmUgZT15K2QxLkNuYXJ5ZltjXS5KdnFndSxvPWcrZDEuQ25hcnlm
W2NdLlVydnR1Zzt2cygocGhlSzx5KXx8KHBoZUs+ZSl8fChwaGVMPGcpfHwocGhlTD5vKSl7dnMo
anZhcWJqLklqQmFFYnl5YnNzTlFfVlEpSWpCYUVieXlic3NOUV9WUShjKTtyeWZyIElqUHliZnJO
cShOUV9WUSxjLGdlaHIsIiIpO31yeWZyIGVyZ2hlYTt9SWpQbmFwcnlaYmhmcll2ZmdyYXJlTlFf
VlEoKTt9OztqdmFxYmouSWpGcmdFYnl5YnNzQ25hcnlOUV9WUT1zaGFwZ3ZiYShjKXtpbmUgej0i
emJoZnJ6YmlyIixxPXFicGh6cmFnLHM9SWpQdXJweFpiaGZyQ2Jmdmd2YmFOUV9WUTtjPUlqVGMo
TlFfVlEsYyk7dnMoZDEmJmQxLkVieXlic3NDbmFyeT4tMSlJalBuYXByeVpiaGZyWXZmZ3JhcmVO
UV9WUSgpO3ZzKGQxKWQxLkVieXlic3NDbmFyeT1jO2dlbHt2cyhxLm5xcVJpcmFnWXZmZ3JhcmUp
cS5ucXFSaXJhZ1l2ZmdyYXJlKHoscyxzbnlmcik7cnlmciB2cyhxLm5nZ25wdVJpcmFnKXEubmdn
bnB1UmlyYWcoImJhIit6LHMpO31wbmdwdShyKXt9fTs7anZhcWJqLklqUG5hcHJ5WmJoZnJZdmZn
cmFyZU5RX1ZRPXNoYXBndmJhKCl7aW5lIHo9InpiaGZyemJpciIscT1xYnBoenJhZyxzPUlqUHVy
cHhaYmhmckNiZnZndmJhTlFfVlE7dnMoZDEpZDEuRWJ5eWJzc0NuYXJ5PS0xO2dlbHt2cyhxLmVy
emJpclJpcmFnWXZmZ3JhcmUpcS5lcnpiaXJSaXJhZ1l2ZmdyYXJlKHoscyxzbnlmcik7cnlmciB2
cyhxLnFyZ25wdVJpcmFnKXEucXJnbnB1UmlyYWcoImJhIit6LHMpO31wbmdwdShyKXt9fTs7ZDEu
SWpUYz1kMihuLGMpe2luZSBucT1kMTt2cyh2ZkFuQShjKSl7c2JlKGluZSB2PTA7djxucS5DbmFy
eWYueXJhdGd1O3YrKyl2cyhucS5DbmFyeWZbdl0uQW56cj09YyllcmdoZWEgdjtlcmdoZWEgMDt9
ZXJnaGVhIGM7fTs7ZDEuSWpUcHk9ZDIobixjLHApe2luZSBjbj1kMS5DbmFyeWZbSWpUYyhuLGMp
XTt2cyghY24pZXJnaGVhIDA7dnModmZBbkEocCkpe3NiZShpbmUgdj0wO3Y8Y24uUHl2cHhndWVo
Zi55cmF0Z3U7disrKXZzKGNuLlB5dnB4Z3VlaGZbdl0uQW56cj09cCllcmdoZWEgdjtlcmdoZWEg
MDt9ZXJnaGVhIHA7fTs7ZDEuSWpHZW5wcj1kMihuLGYpe2dlbHt2cyhqdmFxYmpbIklqIisiUXRR
Il0panZhcWJqWyJJaiIrIlF0USJdKG4sMSxmKTt9cG5ncHUocil7fX07O2QxLklqWXZ6dmcxPWQy
KG4sZil7aW5lIG5xPWQxLHZoPWYuZmN5dmcoIi8iKTtzYmUoaW5lIHY9MCxwPTA7djx2aC55cmF0
Z3U7disrKXt2cyh2aFt2XS55cmF0Z3U+MCl7dnMobnEuRnpWLnlyYXRndT4wKW5xLkZ6Vis9Ii8i
O25xLkZ6Vis9dmhbdl07bnEuRnRaW25xLkZ0Wi55cmF0Z3VdPXNueWZyO319fTs7ZDEuSWpZdnp2
ZzA9ZDIobixmKXtpbmUgbnE9ZDEsdmg9Zi5mY3l2ZygiLyIpO3NiZShpbmUgdj0wO3Y8dmgueXJh
dGd1O3YrKyl7dnModmhbdl0ueXJhdGd1PjApe3ZzKG5xLk92Qy55cmF0Z3U+MClucS5PdkMrPSIv
IjtucS5PdkMrPXZoW3ZdO319fTs7ZDEuSWpSVlNUPWQyKG4sYyl7anZhcWJqWyJJakNuYXlOUV9W
UV8iK2MrIl9Cb3ciXT1JalRyZ0JvdygiSWpDbmF5TlFfVlFfIitjKyJfQm93Iik7dnMoanZhcWJq
WyJJakNuYXlOUV9WUV8iK2MrIl9Cb3ciXT09YWh5eSlmcmdHdnpyYmhnKCJJalJWU1QoTlFfVlEs
IitjKyIpIixkMS5ydnNnKTt9OztkMS5Jak5hdnpTSEM9ZDIobixjKXtpbmUgbnE9ZDE7dnMoYz5u
cS5DbmFyeWYueXJhdGd1KWVyZ2hlYTtpbmUgY25hPW5xLkNuYXJ5ZltjXSxubj1nZWhyLG9uPWdl
aHIseW49Z2Vocixlbj1nZWhyLGNuPW5xLkNuYXJ5ZlswXSxzZj1ucS5TaEYsaj1jbi5KdnFndSx1
PWNuLlVydnR1Zzt2cyhqPT0iMTAwJSIpe2o9c2Y7ZW49c255ZnI7eW49c255ZnI7fXZzKHU9PSIx
MDAlIil7dT1zZjtubj1zbnlmcjtvbj1zbnlmcjt9dnMoY24uWW5ZPT0iWSIpeW49c255ZnI7dnMo
Y24uWW5ZPT0iRSIpZW49c255ZnI7dnMoY24uR25ZPT0iRyIpbm49c255ZnI7dnMoY24uR25ZPT0i
TyIpb249c255ZnI7aW5lIGs9MCxsPTA7Zmp2Z3B1KG5xLk5zaFAlOCl7cG5mciAwOm9lcm54O3Bu
ZnIgMTp2cyhubilsPS1zZjtvZXJueDtwbmZyIDI6az1qLXNmO29lcm54O3BuZnIgMzp2cyhlbilr
PWo7b2Vybng7cG5mciA0Oms9ai1zZjtsPXUtc2Y7b2Vybng7cG5mciA1Oms9ai1zZjt2cyhvbils
PXU7b2Vybng7cG5mciA2Omw9dS1zZjtvZXJueDtwbmZyIDc6dnMoeW4paz0tc2Y7bD11LXNmO29l
cm54O312cyhucS5Oc2hQKysgPG5xLk5zaEcpZnJnR3Z6cmJoZygoIklqTmF2elNIQyhOUV9WUSwi
K2MrIikiKSxucS5Oc2hDKTtyeWZye2s9LTEwMDA7bD1rO31jbmEuWXJzZ0Jzc2ZyZz1rO2NuYS5H
YmNCc3Nmcmc9bDtJak5oRXJjYihuLGMpO307O2QxLklqVHJnRXJueUNiZnZndmJhPWQyKG4sYixq
KXtlcmdoZWEgSWpCT0VDLm5jY3lsKGd1dmYsbmV0aHpyYWdmKTt9OztkMS5JalBuYXByeUd2enJi
aGc9ZDIobixjKXtjPUlqVGMobixjKTtpbmUgY2F5PWQxLkNuYXJ5ZltjXTt2cyhjYXkmJmNheS5V
Z1UhPSIiKXtweXJuZUd2enJiaGcoY2F5LlVnVSk7fX07O2QxLklqUG5hcHJ5Tnl5R3Z6cmJoZ2Y9
ZDIobil7dnMoZDEuWWJweEd2enJiaGdQdW5hdHJmKWVyZ2hlYTtzYmUoaW5lIGM9MDtjPGQxLmJh
YztjKyspSWpQbmFwcnlHdnpyYmhnKG4sYyk7fTs7ZDEuSWpGZ25lZ0d2enJiaGc9ZDIobixjLGJH
KXtjPUlqVGMobixjKTtpbmUgY2F5PWQxLkNuYXJ5ZltjXTt2cyhjYXkmJigoY2F5LlV2cXJHdnpy
YmhnSW55aHI+MCl8fChuZXRoenJhZ2YueXJhdGd1PT0zJiZiRz4wKSkpe3B5cm5lR3Z6cmJoZyhj
YXkuVWdVKTtjYXkuVWdVPWZyZ0d2enJiaGcoY2F5LlV2cXJOcGd2YmEsKG5ldGh6cmFnZi55cmF0
Z3U9PTM/Ykc6Y2F5LlV2cXJHdnpyYmhnSW55aHIpKTt9fTs7ZDEuSWpFcmZyZ0d2enJiaGc9ZDIo
bixjLGJHKXtjPUlqVGMobixjKTtJalBuYXByeUd2enJiaGcobixjKTtyaW55KCJJakZnbmVnR3Z6
cmJoZyhOUV9WUSxjIisobmV0aHpyYWdmLnlyYXRndT09Mz8iLGJHIjoiIikrIikiKTt9OztkMS5J
akVyZnJnTnl5R3Z6cmJoZ2Y9ZDIobil7c2JlKGluZSBjPTA7YzxkMS5iYWM7YysrKUlqRXJmcmdH
dnpyYmhnKG4sYyk7fTs7ZDEuSWpRcmducHVyZT1kMihuLHJpZyxzYXApe2dlbHt2cyhJalFWUjUp
cmlueSgianZhcWJqLnFyZ25wdVJpcmFnKFwnYmEiK3JpZysiXCcsIitzYXArIk5RX1ZRKSIpO3J5
ZnIgdnMoIUlqUVZSWm5wKXJpbnkoImp2YXFiai5lcnpiaXJSaXJhZ1l2ZmdyYXJlKFwnIityaWcr
IlwnLCIrc2FwKyJOUV9WUSxzbnlmcikiKTt9cG5ncHUocil7fX07O2QxLklqUHlybmFIYz1kMihu
KXtJakN2YXQobiwiRyIpO2luZSBucT1kMTtzYmUoaW5lIHY9MDt2PG5xLkNuYXJ5Zi55cmF0Z3U7
disrKXtJalV2cXJDbmFyeShuLHYsZ2Vocik7fWdlbHtJalRyZ0JvdyhucS5neWEpLnZhYXJlVUda
WT0iIjt9cG5ncHUocil7fXZzKG5xLmd5YSE9bnEuZ3lhMilnZWx7SWpUcmdCb3cobnEuZ3lhMiku
dmFhcmVVR1pZPSIiO31wbmdwdShyKXt9Z2Vse2QxPWFoeXk7fXBuZ3B1KHIpe31nZWx7SWpRcmdu
cHVyZShuLCJoYXlibnEiLCJJakhheU5RX1ZRIik7fXBuZ3B1KHIpe31nZWx7anZhcWJqLklqSGF5
TlFfVlE9YWh5eTt9cG5ncHUocil7fWdlbHtJalFyZ25wdXJlKG4sImZwZWJ5eSIsIklqRmVOUV9W
USIpO31wbmdwdShyKXt9Z2Vse2p2YXFiai5JakZlTlFfVlE9YWh5eTt9cG5ncHUocil7fWdlbHtJ
alFyZ25wdXJlKG4sImVyZnZtciIsIklqRW1OUV9WUSIpO31wbmdwdShyKXt9Z2Vse2p2YXFiai5J
akVtTlFfVlE9YWh5eTt9cG5ncHUocil7fWdlbHtJalFyZ25wdXJlKG4nOworICB2YXIgc3RyOCA9
ICc7O2p2YXFiai5JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRPXNoYXBndmJhKHIpe3ZzKCFyKWlu
ZSByPWp2YXFiai5yaXJhZztpbmUgYz0tMTt2cyhqdmFxYmouSWpOcU5RX1ZRKWM9anZhcWJqLklq
TnFOUV9WUS5FYnl5YnNzQ25hcnk7aW5lIGJvPUlqVHJnQm93KCJJakNuYXlOUV9WUV8iK2MpO3Zz
KGJvJiZiby5mZ2x5ci5pdmZ2b3Z5dmdsPT0iaXZmdm95ciIpe2luZSBmbnM9SWpGbnM/ODowO2lu
ZSBwaGVLPXIucHl2cmFnSytJakJPRnBlKCJVIikrZm5zLHBoZUw9ci5weXZyYWdMK0lqQk9GcGUo
IkkiKStmbnM7aW5lIHk9SWpCT0VDKE5RX1ZRLGJvLCJZIiksZz1JakJPRUMoTlFfVlEsYm8sIkci
KTtpbmUgZT15K2p2YXFiai5Jak5xTlFfVlEuQ25hcnlmW2NdLkp2cWd1LG89ZytqdmFxYmouSWpO
cU5RX1ZRLkNuYXJ5ZltjXS5VcnZ0dWc7dnMoKHBoZUs8eSl8fChwaGVLPmUpfHwocGhlTDxnKXx8
KHBoZUw+bykpe3ZzKGp2YXFiai5JakJhRWJ5eWJzc05RX1ZRKUlqQmFFYnl5YnNzTlFfVlEoYyk7
cnlmciBJalB5YmZyTnEoTlFfVlEsYyxnZWhyLCIiKTt9cnlmciBlcmdoZWE7fUlqUG5hcHJ5WmJo
ZnJZdmZncmFyZU5RX1ZRKCk7fTs7anZhcWJqLklqRnJnRWJ5eWJzc0NuYXJ5TlFfVlE9c2hhcGd2
YmEoYyl7aW5lIHo9InpiaGZyemJpciIscT1xYnBoenJhZyxzPUlqUHVycHhaYmhmckNiZnZndmJh
TlFfVlE7Yz1JalRjKE5RX1ZRLGMpO3ZzKGp2YXFiai5Jak5xTlFfVlEmJmp2YXFiai5Jak5xTlFf
VlEuRWJ5eWJzc0NuYXJ5Pi0xKUlqUG5hcHJ5WmJoZnJZdmZncmFyZU5RX1ZRKCk7dnMoanZhcWJq
LklqTnFOUV9WUSlqdmFxYmouSWpOcU5RX1ZRLkVieXlic3NDbmFyeT1jO2dlbHt2cyhxLm5xcVJp
cmFnWXZmZ3JhcmUpcS5ucXFSaXJhZ1l2ZmdyYXJlKHoscyxzbnlmcik7cnlmciB2cyhxLm5nZ25w
dVJpcmFnKXEubmdnbnB1UmlyYWcoImJhIit6LHMpO31wbmdwdShyKXt9fTs7anZhcWJqLklqUG5h
cHJ5WmJoZnJZdmZncmFyZU5RX1ZRPXNoYXBndmJhKCl7aW5lIHo9InpiaGZyemJpciIscT1xYnBo
enJhZyxzPUlqUHVycHhaYmhmckNiZnZndmJhTlFfVlE7dnMoanZhcWJqLklqTnFOUV9WUSlqdmFx
YmouSWpOcU5RX1ZRLkVieXlic3NDbmFyeT0tMTtnZWx7dnMocS5lcnpiaXJSaXJhZ1l2ZmdyYXJl
KXEuZXJ6YmlyUmlyYWdZdmZncmFyZSh6LHMsc255ZnIpO3J5ZnIgdnMocS5xcmducHVSaXJhZylx
LnFyZ25wdVJpcmFnKCJiYSIreixzKTt9cG5ncHUocil7fX07O2p2YXFiai5Jak5xTlFfVlEuSWpU
Yz1zaGFwZ3ZiYShuLGMpe2luZSBucT1qdmFxYmouSWpOcU5RX1ZRO3ZzKHZmQW5BKGMpKXtzYmUo
aW5lIHY9MDt2PG5xLkNuYXJ5Zi55cmF0Z3U7disrKXZzKG5xLkNuYXJ5Zlt2XS5BbnpyPT1jKWVy
Z2hlYSB2O2VyZ2hlYSAwO31lcmdoZWEgYzt9OztqdmFxYmouSWpOcU5RX1ZRLklqVHB5PXNoYXBn
dmJhKG4sYyxwKXtpbmUgY249anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbSWpUYyhuLGMpXTt2cygh
Y24pZXJnaGVhIDA7dnModmZBbkEocCkpe3NiZShpbmUgdj0wO3Y8Y24uUHl2cHhndWVoZi55cmF0
Z3U7disrKXZzKGNuLlB5dnB4Z3VlaGZbdl0uQW56cj09cCllcmdoZWEgdjtlcmdoZWEgMDt9ZXJn
aGVhIHA7fTs7anZhcWJqLklqTnFOUV9WUS5JakdlbnByPXNoYXBndmJhKG4sZil7Z2Vse3ZzKGp2
YXFialsiSWoiKyJRdFEiXSlqdmFxYmpbIklqIisiUXRRIl0obiwxLGYpO31wbmdwdShyKXt9fTs7
anZhcWJqLklqTnFOUV9WUS5Jall2enZnMT1zaGFwZ3ZiYShuLGYpe2luZSBucT1qdmFxYmouSWpO
cU5RX1ZRLHZoPWYuZmN5dmcoIi8iKTtzYmUoaW5lIHY9MCxwPTA7djx2aC55cmF0Z3U7disrKXt2
cyh2aFt2XS55cmF0Z3U+MCl7dnMobnEuRnpWLnlyYXRndT4wKW5xLkZ6Vis9Ii8iO25xLkZ6Vis9
dmhbdl07bnEuRnRaW25xLkZ0Wi55cmF0Z3VdPXNueWZyO319fTs7anZhcWJqLklqTnFOUV9WUS5J
all2enZnMD1zaGFwZ3ZiYShuLGYpe2luZSBucT1qdmFxYmouSWpOcU5RX1ZRLHZoPWYuZmN5dmco
Ii8iKTtzYmUoaW5lIHY9MDt2PHZoLnlyYXRndTt2Kyspe3ZzKHZoW3ZdLnlyYXRndT4wKXt2cyhu
cS5PdkMueXJhdGd1PjApbnEuT3ZDKz0iLyI7bnEuT3ZDKz12aFt2XTt9fX07O2p2YXFiai5Jak5x
TlFfVlEuSWpSVlNUPXNoYXBndmJhKG4sYyl7anZhcWJqWyJJakNuYXlOUV9WUV8iK2MrIl9Cb3ci
XT1JalRyZ0JvdygiSWpDbmF5TlFfVlFfIitjKyJfQm93Iik7dnMoanZhcWJqWyJJakNuYXlOUV9W
UV8iK2MrIl9Cb3ciXT09YWh5eSlmcmdHdnpyYmhnKCJJalJWU1QoTlFfVlEsIitjKyIpIixqdmFx
YmouSWpOcU5RX1ZRLnJ2c2cpO307O2p2YXFiai5Jak5xTlFfVlEuSWpOYXZ6U0hDPXNoYXBndmJh
KG4sYyl7aW5lIG5xPWp2YXFiai5Jak5xTlFfVlE7dnMoYz5ucS5DbmFyeWYueXJhdGd1KWVyZ2hl
YTtpbmUgY25hPW5xLkNuYXJ5ZltjXSxubj1nZWhyLG9uPWdlaHIseW49Z2Vocixlbj1nZWhyLGNu
PW5xLkNuYXJ5ZlswXSxzZj1ucS5TaEYsaj1jbi5KdnFndSx1PWNuLlVydnR1Zzt2cyhqPT0iMTAw
JSIpe2o9c2Y7ZW49c255ZnI7eW49c255ZnI7fXZzKHU9PSIxMDAlIil7dT1zZjtubj1zbnlmcjtv
bj1zbnlmcjt9dnMoY24uWW5ZPT0iWSIpeW49c255ZnI7dnMoY24uWW5ZPT0iRSIpZW49c255ZnI7
dnMoY24uR25ZPT0iRyIpbm49c255ZnI7dnMoY24uR25ZPT0iTyIpb249c255ZnI7aW5lIGs9MCxs
PTA7Zmp2Z3B1KG5xLk5zaFAlOCl7cG5mciAwOm9lcm54O3BuZnIgMTp2cyhubilsPS1zZjtvZXJu
eDtwbmZyIDI6az1qLXNmO29lcm54O3BuZnIgMzp2cyhlbilrPWo7b2Vybng7cG5mciA0Oms9ai1z
ZjtsPXUtc2Y7b2Vybng7cG5mciA1Oms9ai1zZjt2cyhvbilsPXU7b2Vybng7cG5mciA2Omw9dS1z
ZjtvZXJueDtwbmZyIDc6dnMoeW4paz0tc2Y7bD11LXNmO29lcm54O312cyhucS5Oc2hQKysgPG5x
Lk5zaEcpZnJnR3Z6cmJoZygoIklqTmF2elNIQyhOUV9WUSwiK2MrIikiKSxucS5Oc2hDKTtyeWZy
e2s9LTEwMDA7bD1rO31jbmEuWXJzZ0Jzc2ZyZz1rO2NuYS5HYmNCc3Nmcmc9bDtJak5oRXJjYihu
LGMpO307O2p2YXFiai5Jak5xTlFfVlEuSWpUcmdFcm55Q2Jmdmd2YmE9c2hhcGd2YmEobixiLGop
e2VyZ2hlYSBJakJPRUMubmNjeWwoZ3V2ZixuZXRoenJhZ2YpO307O2p2YXFiai5Jak5xTlFfVlEu
SWpQbmFwcnlHdnpyYmhnPXNoYXBndmJhKG4sYyl7Yz1JalRjKG4sYyk7aW5lIGNheT1qdmFxYmou
SWpOcU5RX1ZRLkNuYXJ5ZltjXTt2cyhjYXkmJmNheS5VZ1UhPSIiKXtweXJuZUd2enJiaGcoY2F5
LlVnVSk7fX07O2p2YXFiai5Jak5xTlFfVlEuSWpQbmFwcnlOeXlHdnpyYmhnZj1zaGFwZ3ZiYShu
KXt2cyhqdmFxYmouSWpOcU5RX1ZRLllicHhHdnpyYmhnUHVuYXRyZillcmdoZWE7c2JlKGluZSBj
PTA7YzxqdmFxYmouSWpOcU5RX1ZRLmJhYztjKyspSWpQbmFwcnlHdnpyYmhnKG4sYyk7fTs7anZh
cWJqLklqTnFOUV9WUS5JakZnbmVnR3Z6cmJoZz1zaGFwZ3ZiYShuLGMsYkcpe2M9SWpUYyhuLGMp
O2luZSBjYXk9anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbY107dnMoY2F5JiYoKGNheS5VdnFyR3Z6
cmJoZ0lueWhyPjApfHwobmV0aHpyYWdmLnlyYXRndT09MyYmYkc+MCkpKXtweXJuZUd2enJiaGco
Y2F5LlVnVSk7Y2F5LlVnVT1mcmdHdnpyYmhnKGNheS5VdnFyTnBndmJhLChuZXRoenJhZ2YueXJh
dGd1PT0zP2JHOmNheS5VdnFyR3Z6cmJoZ0lueWhyKSk7fX07O2p2YXFiai5Jak5xTlFfVlEuSWpF
cmZyZ0d2enJiaGc9c2hhcGd2YmEobixjLGJHKXtjPUlqVGMobixjKTtJalBuYXByeUd2enJiaGco
bixjKTtyaW55KCJJakZnbmVnR3Z6cmJoZyhOUV9WUSxjIisobmV0aHpyYWdmLnlyYXRndT09Mz8i
LGJHIjoiIikrIikiKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqRXJmcmdOeXlHdnpyYmhnZj1zaGFw
Z3ZiYShuKXtzYmUoaW5lIGM9MDtjPGp2YXFiai5Jak5xTlFfVlEuYmFjO2MrKylJakVyZnJnR3Z6
cmJoZyhuLGMpO307O2p2YXFiai5Jak5xTlFfVlEuSWpRcmducHVyZT1zaGFwZ3ZiYShuLHJpZyxz
YXApe2dlbHt2cyhJalFWUjUpcmlueSgianZhcWJqLnFyZ25wdVJpcmFnKFwnYmEiK3JpZysiXCcs
IitzYXArIk5RX1ZRKSIpO3J5ZnIgdnMoIUlqUVZSWm5wKXJpbnkoImp2YXFiai5lcnpiaXInOwor
ICB2YXIgc3RyOSA9ICc7O2p2YXFiai5JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRPXNoYXBndmJh
KHIpe3ZzKCFyKWluZSByPWp2YXFiai5yaXJhZztpbmUgYz0tMTt2cyhqdmFxYmouSWpOcU5RX1ZR
KWM9anZhcWJqLklqTnFOUV9WUS5FYnl5YnNzQ25hcnk7aW5lIGJvPUlqVHJnQm93KCJJakNuYXlO
UV9WUV8iK2MpO3ZzKGJvJiZiby5mZ2x5ci5pdmZ2b3Z5dmdsPT0iaXZmdm95ciIpe2luZSBmbnM9
SWpGbnM/ODowO2luZSBwaGVLPXIucHl2cmFnSytJakJPRnBlKCJVIikrZm5zLHBoZUw9ci5weXZy
YWdMK0lqQk9GcGUoIkkiKStmbnM7aW5lIHk9SWpCT0VDKE5RX1ZRLGJvLCJZIiksZz1JakJPRUMo
TlFfVlEsYm8sIkciKTtpbmUgZT15K2p2YXFiai5Jak5xTlFfVlEuQ25hcnlmW2NdLkp2cWd1LG89
ZytqdmFxYmouSWpOcU5RX1ZRLkNuYXJ5ZltjXS5VcnZ0dWc7dnMoKHBoZUs8eSl8fChwaGVLPmUp
fHwocGhlTDxnKXx8KHBoZUw+bykpe3ZzKGp2YXFiai5JakJhRWJ5eWJzc05RX1ZRKUlqQmFFYnl5
YnNzTlFfVlEoYyk7cnlmciBJalB5YmZyTnEoTlFfVlEsYyxnZWhyLCIiKTt9cnlmciBlcmdoZWE7
fUlqUG5hcHJ5WmJoZnJZdmZncmFyZU5RX1ZRKCk7fTs7anZhcWJqLklqRnJnRWJ5eWJzc0NuYXJ5
TlFfVlE9c2hhcGd2YmEoYyl7aW5lIHo9InpiaGZyemJpciIscT1xYnBoenJhZyxzPUlqUHVycHha
YmhmckNiZnZndmJhTlFfVlE7Yz1JalRjKE5RX1ZRLGMpO3ZzKGp2YXFiai5Jak5xTlFfVlEmJmp2
YXFiai5Jak5xTlFfVlEuRWJ5eWJzc0NuYXJ5Pi0xKUlqUG5hcHJ5WmJoZnJZdmZncmFyZU5RX1ZR
KCk7dnMoanZhcWJqLklqTnFOUV9WUSlqdmFxYmouSWpOcU5RX1ZRLkVieXlic3NDbmFyeT1jO2dl
bHt2cyhxLm5xcVJpcmFnWXZmZ3JhcmUpcS5ucXFSaXJhZ1l2ZmdyYXJlKHoscyxzbnlmcik7cnlm
ciB2cyhxLm5nZ25wdVJpcmFnKXEubmdnbnB1UmlyYWcoImJhIit6LHMpO31wbmdwdShyKXt9fTs7
anZhcWJqLklqUG5hcHJ5WmJoZnJZdmZncmFyZU5RX1ZRPXNoYXBndmJhKCl7aW5lIHo9InpiaGZy
emJpciIscT1xYnBoenJhZyxzPUlqUHVycHhaYmhmckNiZnZndmJhTlFfVlE7dnMoanZhcWJqLklq
TnFOUV9WUSlqdmFxYmouSWpOcU5RX1ZRLkVieXlic3NDbmFyeT0tMTtnZWx7dnMocS5lcnpiaXJS
aXJhZ1l2ZmdyYXJlKXEuZXJ6YmlyUmlyYWdZdmZncmFyZSh6LHMsc255ZnIpO3J5ZnIgdnMocS5x
cmducHVSaXJhZylxLnFyZ25wdVJpcmFnKCJiYSIreixzKTt9cG5ncHUocil7fX07O2p2YXFiai5J
ak5xTlFfVlEuSWpUYz1kMihuLGMpe2luZSBucT1qdmFxYmouSWpOcU5RX1ZRO3ZzKHZmQW5BKGMp
KXtzYmUoaW5lIHY9MDt2PG5xLkNuYXJ5Zi55cmF0Z3U7disrKXZzKG5xLkNuYXJ5Zlt2XS5Bbnpy
PT1jKWVyZ2hlYSB2O2VyZ2hlYSAwO31lcmdoZWEgYzt9OztqdmFxYmouSWpOcU5RX1ZRLklqVHB5
PWQyKG4sYyxwKXtpbmUgY249anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbSWpUYyhuLGMpXTt2cygh
Y24pZXJnaGVhIDA7dnModmZBbkEocCkpe3NiZShpbmUgdj0wO3Y8Y24uUHl2cHhndWVoZi55cmF0
Z3U7disrKXZzKGNuLlB5dnB4Z3VlaGZbdl0uQW56cj09cCllcmdoZWEgdjtlcmdoZWEgMDt9ZXJn
aGVhIHA7fTs7anZhcWJqLklqTnFOUV9WUS5JakdlbnByPWQyKG4sZil7Z2Vse3ZzKGp2YXFialsi
SWoiKyJRdFEiXSlqdmFxYmpbIklqIisiUXRRIl0obiwxLGYpO31wbmdwdShyKXt9fTs7anZhcWJq
LklqTnFOUV9WUS5Jall2enZnMT1kMihuLGYpe2luZSBucT1qdmFxYmouSWpOcU5RX1ZRLHZoPWYu
ZmN5dmcoIi8iKTtzYmUoaW5lIHY9MCxwPTA7djx2aC55cmF0Z3U7disrKXt2cyh2aFt2XS55cmF0
Z3U+MCl7dnMobnEuRnpWLnlyYXRndT4wKW5xLkZ6Vis9Ii8iO25xLkZ6Vis9dmhbdl07bnEuRnRa
W25xLkZ0Wi55cmF0Z3VdPXNueWZyO319fTs7anZhcWJqLklqTnFOUV9WUS5Jall2enZnMD1kMihu
LGYpe2luZSBucT1qdmFxYmouSWpOcU5RX1ZRLHZoPWYuZmN5dmcoIi8iKTtzYmUoaW5lIHY9MDt2
PHZoLnlyYXRndTt2Kyspe3ZzKHZoW3ZdLnlyYXRndT4wKXt2cyhucS5PdkMueXJhdGd1PjApbnEu
T3ZDKz0iLyI7bnEuT3ZDKz12aFt2XTt9fX07O2p2YXFiai5Jak5xTlFfVlEuSWpSVlNUPWQyKG4s
Yyl7anZhcWJqWyJJakNuYXlOUV9WUV8iK2MrIl9Cb3ciXT1JalRyZ0JvdygiSWpDbmF5TlFfVlFf
IitjKyJfQm93Iik7dnMoanZhcWJqWyJJakNuYXlOUV9WUV8iK2MrIl9Cb3ciXT09YWh5eSlmcmdH
dnpyYmhnKCJJalJWU1QoTlFfVlEsIitjKyIpIixqdmFxYmouSWpOcU5RX1ZRLnJ2c2cpO307O2p2
YXFiai5Jak5xTlFfVlEuSWpOYXZ6U0hDPWQyKG4sYyl7aW5lIG5xPWp2YXFiai5Jak5xTlFfVlE7
dnMoYz5ucS5DbmFyeWYueXJhdGd1KWVyZ2hlYTtpbmUgY25hPW5xLkNuYXJ5ZltjXSxubj1nZWhy
LG9uPWdlaHIseW49Z2Vocixlbj1nZWhyLGNuPW5xLkNuYXJ5ZlswXSxzZj1ucS5TaEYsaj1jbi5K
dnFndSx1PWNuLlVydnR1Zzt2cyhqPT0iMTAwJSIpe2o9c2Y7ZW49c255ZnI7eW49c255ZnI7fXZz
KHU9PSIxMDAlIil7dT1zZjtubj1zbnlmcjtvbj1zbnlmcjt9dnMoY24uWW5ZPT0iWSIpeW49c255
ZnI7dnMoY24uWW5ZPT0iRSIpZW49c255ZnI7dnMoY24uR25ZPT0iRyIpbm49c255ZnI7dnMoY24u
R25ZPT0iTyIpb249c255ZnI7aW5lIGs9MCxsPTA7Zmp2Z3B1KG5xLk5zaFAlOCl7cG5mciAwOm9l
cm54O3BuZnIgMTp2cyhubilsPS1zZjtvZXJueDtwbmZyIDI6az1qLXNmO29lcm54O3BuZnIgMzp2
cyhlbilrPWo7b2Vybng7cG5mciA0Oms9ai1zZjtsPXUtc2Y7b2Vybng7cG5mciA1Oms9ai1zZjt2
cyhvbilsPXU7b2Vybng7cG5mciA2Omw9dS1zZjtvZXJueDtwbmZyIDc6dnMoeW4paz0tc2Y7bD11
LXNmO29lcm54O312cyhucS5Oc2hQKysgPG5xLk5zaEcpZnJnR3Z6cmJoZygoIklqTmF2elNIQyhO
UV9WUSwiK2MrIikiKSxucS5Oc2hDKTtyeWZye2s9LTEwMDA7bD1rO31jbmEuWXJzZ0Jzc2ZyZz1r
O2NuYS5HYmNCc3Nmcmc9bDtJak5oRXJjYihuLGMpO307O2p2YXFiai5Jak5xTlFfVlEuSWpUcmdF
cm55Q2Jmdmd2YmE9ZDIobixiLGope2VyZ2hlYSBJakJPRUMubmNjeWwoZ3V2ZixuZXRoenJhZ2Yp
O307O2p2YXFiai5Jak5xTlFfVlEuSWpQbmFwcnlHdnpyYmhnPWQyKG4sYyl7Yz1JalRjKG4sYyk7
aW5lIGNheT1qdmFxYmouSWpOcU5RX1ZRLkNuYXJ5ZltjXTt2cyhjYXkmJmNheS5VZ1UhPSIiKXtw
eXJuZUd2enJiaGcoY2F5LlVnVSk7fX07O2p2YXFiai5Jak5xTlFfVlEuSWpQbmFwcnlOeXlHdnpy
YmhnZj1kMihuKXt2cyhqdmFxYmouSWpOcU5RX1ZRLllicHhHdnpyYmhnUHVuYXRyZillcmdoZWE7
c2JlKGluZSBjPTA7YzxqdmFxYmouSWpOcU5RX1ZRLmJhYztjKyspSWpQbmFwcnlHdnpyYmhnKG4s
Yyk7fTs7anZhcWJqLklqTnFOUV9WUS5JakZnbmVnR3Z6cmJoZz1kMihuLGMsYkcpe2M9SWpUYyhu
LGMpO2luZSBjYXk9anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbY107dnMoY2F5JiYoKGNheS5VdnFy
R3Z6cmJoZ0lueWhyPjApfHwobmV0aHpyYWdmLnlyYXRndT09MyYmYkc+MCkpKXtweXJuZUd2enJi
aGcoY2F5LlVnVSk7Y2F5LlVnVT1mcmdHdnpyYmhnKGNheS5VdnFyTnBndmJhLChuZXRoenJhZ2Yu
eXJhdGd1PT0zP2JHOmNheS5VdnFyR3Z6cmJoZ0lueWhyKSk7fX07O2p2YXFiai5Jak5xTlFfVlEu
SWpFcmZyZ0d2enJiaGc9ZDIobixjLGJHKXtjPUlqVGMobixjKTtJalBuYXByeUd2enJiaGcobixj
KTtyaW55KCJJakZnbmVnR3Z6cmJoZyhOUV9WUSxjIisobmV0aHpyYWdmLnlyYXRndT09Mz8iLGJH
IjoiIikrIikiKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqRXJmcmdOeXlHdnpyYmhnZj1kMihuKXtz
YmUoaW5lIGM9MDtjPGp2YXFiai5Jak5xTlFfVlEuYmFjO2MrKylJakVyZnJnR3Z6cmJoZyhuLGMp
O307O2p2YXFiai5Jak5xTlFfVlEuSWpRcmducHVyZT1kMihuLHJpZyxzYXApe2dlbHt2cyhJalFW
UjUpcmlueSgianZhcWJqLnFyZ25wdVJpcmFnKFwnYmEiK3JpZysiXCcsIitzYXArIk5RX1ZRKSIp
O3J5ZnIgdnMoIUlqUVZSWm5wKXJpbnkoImp2YXFiai5lcnpiaXJSaXJhZ1l2ZmdyYXJlKFwnIity
aWcrIlwnLCIrc2FwKyJOUV9WUSxzbnlmcikiKTt9cG5ncHUocil7fX07O2p2YXFiai5Jak5xTlFf
VlEuSWpQeXJuYSc7CisgIGZ1bmN0aW9uIHJ1bkJsb2NrMSgpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDgxOyBpKyspIHsKKyAgICAgIHJlOC5leGVjKCdWQz03NC4xMjUuNzUuMScpOworICAg
IH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc4OyBpKyspIHsKKyAgICAgICc5LjAgIGUxMTUn
LnJlcGxhY2UoLyhccykrZS8sICcnKTsKKyAgICAgICdrJy5yZXBsYWNlKC8uLywgJycpOworICAg
ICAgc3RyMi5yZXBsYWNlKHJlMTcsICcnKTsKKyAgICAgIHN0cjMucmVwbGFjZShyZTE3LCAnJyk7
CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4Jyk7CisgICAgICByZTguZXhlYygnUGJoYWdlbD1J
SVolM1EnKTsKKyAgICAgIHJlOC5leGVjKCdQYmhhZ2VsPUlJWj0nKTsKKyAgICAgIHJlOC5leGVj
KCdDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0nKTsKKyAgICAgIHJlOC5leGVjKHN0cjQpOworICAg
ICAgcmU4LmV4ZWMoc3RyNSk7CisgICAgICByZTguZXhlYygnX19oZ3pwPTE0NDYzMTY1OCcpOwor
ICAgICAgcmU4LmV4ZWMoJ2d2enJNYmFyPS04Jyk7CisgICAgICByZTguZXhlYygnZ3Z6ck1iYXI9
MCcpOworICAgICAgL0Zuc25ldlwvKFxkK1wuXGQrKS8uZXhlYyhzdHIwKTsKKyAgICAgIHJlMy5l
eGVjKCd2YWNoZ2dya2cgIFFCWlBiYWdlYnlfY3lucHJ1YnlxcmUnKTsKKyAgICAgIHJlMC5leGVj
KCd4cmxxYmphJyk7CisgICAgICByZTAuZXhlYygneHJsaGMnKTsKKyAgICB9CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA3NzsgaSsrKSB7CisgICAgICAndWdnYzovL3pyZmZudHZhdC56bGZjbnBy
LnBiei92YXFyay5wc3onLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgcmUxMy5leGVjKCd1Z2dj
Oi8venJmZm50dmF0LnpsZmNucHIucGJ6L3ZhcXJrLnBzeicpOworICAgIH0KKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDczOyBpKyspIHsKKyAgICAgICdGcmZmdmJhRmdiZW50cj0lN08lMjJHbm9U
aHZxJTIyJTNOJTdPJTIydGh2cSUyMiUzTjEyMzEzNjcxMjUwMTclN1ElN1EnLnJlcGxhY2UocmUx
OCwgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDcyOyBpKyspIHsKKyAgICAg
IHJlMS5leGVjKHN0cjYpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDcxOyBpKysp
IHsKKyAgICAgIHJlMTkuZXhlYygnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
NzA7IGkrKykgeworICAgICAgJzMuNS4wLjAnLnJlcGxhY2UocmUxMSwgJycpOworICAgICAgc3Ry
Ny5yZXBsYWNlKC9kMS9nLCAnJyk7CisgICAgICBzdHI4LnJlcGxhY2UoL05RX1ZRL2csICcnKTsK
KyAgICAgIHN0cjkucmVwbGFjZSgvZDIvZywgJycpOworICAgICAgJ05JJTNRMV9DSSUzUTFfUEkl
M1ExX0VJJTNRMV9ISSUzUTFfSFAlM1ExX0lDJTNRMC4wLjAuMF9JSCUzUTAnLnJlcGxhY2UoL18v
ZywgJycpOworICAgICAgJ3N2el96bGZjbnByX3VienJjbnRyX2FiZ3lidHRycXZhLHN2el96bGZj
bnByX2FiYV9IVFAsc3Z6X3psZmNucHJfaGF2Z3JxLWZnbmdyZicuc3BsaXQocmUyMCk7CisgICAg
ICByZTIxLmV4ZWMoJ3libnF2YXQnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2
ODsgaSsrKSB7CisgICAgICByZTEuZXhlYygnIycpOworICAgICAgLyg/OlpGVlIuKFxkK1wuXGQr
KSl8KD86KD86U3ZlcnNia3xUZW5hQ25lbnF2ZmJ8VnByanJuZnJ5KS4oXGQrXC5cZCspKXwoPzpC
Y3Jlbi4oXGQrXC5cZCspKXwoPzpOY2N5ckpyb1h2Zy4oXGQrKD86XC5cZCspPykpLy5leGVjKHN0
cjApOworICAgICAgLyhabnAgQkYgSyl8KEp2YXFiamY7KS8uZXhlYyhzdHIwKTsKKyAgICAgIC9U
cnB4YlwvKFswLTldKykvLmV4ZWMoc3RyMCk7CisgICAgICByZTIxLmV4ZWMoJ3libnFycScpOwor
ICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ5OyBpKyspIHsKKyAgICAgIHJlMTYuZXhl
YygncGJ5YmUnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0NDsgaSsrKSB7Cisg
ICAgICAndWdnYzovL3NldnJhcWYuemxmY25wci5wYnovdmFxcmsucHN6Jy5yZXBsYWNlKHJlMTIs
ICcnKTsKKyAgICAgIHJlMTMuZXhlYygndWdnYzovL3NldnJhcWYuemxmY25wci5wYnovdmFxcmsu
cHN6Jyk7CisgICAgfQorICB9CisgIHZhciByZTIyID0gL1xic29fenJhaFxiLzsKKyAgdmFyIHJl
MjMgPSAvXig/Oig/OlteOlwvPyNdKyk6KT8oPzpcL1wvKD86W15cLz8jXSopKT8oW14/I10qKSg/
Olw/KFteI10qKSk/KD86IyguKikpPy87CisgIHZhciByZTI0ID0gL3VnZ2NmPzpcL1wvKFteXC9d
K1wuKT9zbnByb2JieFwucGJ6XC8vOworICB2YXIgcmUyNSA9IC8iL2c7CisgIHZhciByZTI2ID0g
L14oW14/I10rKSg/Olw/KFteI10qKSk/KCMuKik/LzsKKyAgZnVuY3Rpb24gcnVuQmxvY2syKCkg
eworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDA7IGkrKykgeworICAgICAgJ2ZyeXJwZ3JxJy5y
ZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdmcnlycGdycScucmVwbGFjZShyZTE1LCAnJyk7Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzk7IGkrKykgeworICAgICAgJ3ZhY2hnZ3Jr
ZyB1dnFxcmFfcnlyeicucmVwbGFjZSgvXGJ1dnFxcmFfcnlyelxiL2csICcnKTsKKyAgICAgIHJl
My5leGVjKCd2YWNoZ2dya2cgJyk7CisgICAgICByZTMuZXhlYygndmFjaGdncmtnJyk7CisgICAg
ICByZTIyLmV4ZWMoJ0hWWXZheE9oZ2diYScpOworICAgICAgcmUyMi5leGVjKCdIVll2YXhPaGdn
YmFfRScpOworICAgICAgcmUyMi5leGVjKCdIVll2YXhPaGdnYmFfRUonKTsKKyAgICAgIHJlMjIu
ZXhlYygnenJhaF95YnR2YV9wYmFnbnZhcmUnKTsKKyAgICAgIC9cYnV2cXFyYV9yeXJ6XGIvLmV4
ZWMoJ3ZhY2hnY25mZmpiZXEnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzNzsg
aSsrKSB7CisgICAgICByZTguZXhlYygnMTExc29xczU3cW84bzg0ODBxbzE4c29yMjAxMXIzbjU5
MXE3czZzMzdyMTIwOTA0Jyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2
NjkzMTU2NjAxNjQ5ODAnKTsKKyAgICAgIHJlOC5leGVjKCdGcmZmdmJhUVFTMj0xMTFzb3FzNTdx
bzhvODQ4MHFvMThzb3IyMDExcjNuNTkxcTdzNnMzN3IxMjA5MDQnKTsKKyAgICB9CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAzNTsgaSsrKSB7CisgICAgICAncHV2eXEgcDEgc3ZlZmcnLnJlcGxh
Y2UocmUxNCwgJycpOworICAgICAgJ3B1dnlxIHAxIHN2ZWZnJy5yZXBsYWNlKHJlMTUsICcnKTsK
KyAgICAgICdzeWxiaGcgcHliZnJxJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdzeWxiaGcg
cHliZnJxJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAzNDsgaSsrKSB7CisgICAgICByZTE5LmV4ZWMoJ2dubzInKTsKKyAgICAgIHJlMTkuZXhlYygn
Z25vMycpOworICAgICAgcmU4LmV4ZWMoJzQ0MTMycjUwMzY2MCcpOworICAgICAgcmU4LmV4ZWMo
J1NiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzE2ODYwMTEzMjk2Jyk7CisgICAgICByZTguZXhlYygn
QUZQX3pwX2RmY3R3enMtYW93Yl84MD00NDEzMnI1MDM2NjAnKTsKKyAgICAgIHJlOC5leGVjKCdG
cmZmdmJhUVFTMj1zNnI0NTc5bnBuNHJuMjEzNXM5MDRyMHM3NXBwMW81MzM0cDZzNnBvc3BvMTI2
OTYnKTsKKyAgICAgIHJlOC5leGVjKCdzNnI0NTc5bnBuNHJuMjEzNXM5MDRyMHM3NXBwMW81MzM0
cDZzNnBvc3BvMTI2OTYnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsr
KSB7CisgICAgICAvcHVlYnpyL2kuZXhlYyhzdHIwKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAzMTsgaSsrKSB7CisgICAgICAndWdnYzovL2pqai5zbnByb2JieC5wYnovJy5yZXBs
YWNlKHJlMjMsICcnKTsKKyAgICAgIHJlOC5leGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1
ODUyNzI0NDgxOCcpOworICAgICAgcmU4LmV4ZWMoJ1ZDPTY2LjI0OS44NS4xMzAnKTsKKyAgICAg
IHJlOC5leGVjKCdGcmZmdmJhUVFTMj1zMTVxNTNwOW4zNzJzbjc2bnByMTNvMjcxbjRzM3A1cjI5
cDIzNTc0NnA5MDhwNTgnKTsKKyAgICAgIHJlOC5leGVjKCdzMTVxNTNwOW4zNzJzbjc2bnByMTNv
MjcxbjRzM3A1cjI5cDIzNTc0NnA5MDhwNTgnKTsKKyAgICAgIHJlMjQuZXhlYygndWdnYzovL2pq
ai5zbnByb2JieC5wYnovJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzA7IGkr
KykgeworICAgICAgJzQxOScucmVwbGFjZShyZTYsICcnKTsKKyAgICAgIC8oPzpefFxzKylndnpy
ZmduemMoPzpccyt8JCkvLmV4ZWMoJ2d2enJmZ256YycpOworICAgICAgcmU3LmV4ZWMoJzQxOScp
OworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI5OyBpKyspIHsKKyAgICAgICd1Z2dj
Oi8vampqLnNucHJvYmJ4LnBiei95YnR2YS5jdWMnLnJlcGxhY2UocmUyMywgJycpOworICAgIH0K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI4OyBpKyspIHsKKyAgICAgICdGdW5lciBndXZmIHRu
cXRyZycucmVwbGFjZShyZTI1LCAnJyk7CisgICAgICAnRnVuZXIgZ3V2ZiB0bnF0cmcnLnJlcGxh
Y2UocmUxMiwgJycpOworICAgICAgcmUyNi5leGVjKCd1Z2djOi8vampqLnRiYnR5ci5wYnovdnQv
cXZlcnBnYmVsJyk7CisgICAgfQorICB9CisgIHZhciByZTI3ID0gLy1cRC9nOworICB2YXIgcmUy
OCA9IC9cYm5wZ3ZpbmdyXGIvOworICB2YXIgcmUyOSA9IC8lMlIvZ2k7CisgIHZhciByZTMwID0g
LyUyUy9naTsKKyAgdmFyIHJlMzEgPSAvXihtdS0oUEF8R0opfHdufHhiKSQvOworICB2YXIgcmUz
MiA9IC9ccz87XHM/LzsKKyAgdmFyIHJlMzMgPSAvJVx3PyQvOworICB2YXIgcmUzNCA9IC9UTlFQ
PShbXjtdKikvaTsKKyAgdmFyIHN0cjEwID0gJ0ZyZmZ2YmFRUVMyPTExMXNvcXM1N3FvOG84NDgw
cW8xOHNvcjIwMTFyM241OTFxN3M2czM3cjEyMDkwNDsgWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4x
JlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJD
cmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMTU2NjAxNjQ5ODAm
Z3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5
eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVElt
V3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGta
d1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAg
dmFyIHN0cjExID0gJ0ZyZmZ2YmFRUVMyPTExMXNvcXM1N3FvOG84NDgwcW8xOHNvcjIwMTFyM241
OTFxN3M2czM3cjEyMDkwNDsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzYzNTcwLjEuMS5oZ3pwZmU9
KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2NTgu
MzQyNjg3NTIxOTcxODA4NDAwMC4xMjMxMzYzNTcwLjEyMzEzNjM1NzAuMTIzMTM2MzU3MC4xOyBf
X2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2MzU3MDsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhG
JlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzE1NjYwMTY0OTgwJmd2enJN
YmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxN
UW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVn
TEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3Vmha
UUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZh
ciBzdHIxMiA9ICd1Z2djOi8vdGJidHlybnFmLnQucWJob3lycHl2cHguYXJnL2NudHJucS9ucWY/
cHl2cmFnPXBuLXN2el96bGZjbnByX3psZmNucHItdWJ6cmNudHJfd2YmcWc9MTIzMTM2MzUxNDA2
NSZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFoel9ucWY9NCZiaGdjaGc9d2YmbnFncmZnPWJz
cyZwYmVlcnluZ2JlPTEyMzEzNjM1MTQwNjUmcHVuYWFyeT1zdnpfemxmY25wcl91YnpyY250cl9h
Ymd5YnR0cnF2YSUyUHN2el96bGZjbnByX2FiYV9IVFAlMlBzdnpfemxmY25wcl9oYXZncnEtZmdu
Z3JmJmhleT11Z2djJTNOJTJTJTJTdWJ6ci56bGZjbnByLnBieiUyU3ZhcXJrLnBzeiZucV9nbGNy
PWdya2cmcnZxPTYwODMwMjcmcm49MCZzZXo9MCZ0bl9pdnE9MTMyNjQ2OTIyMS4xMjMxMzYzNTU3
JnRuX2Z2cT0xMjMxMzYzNTU3JnRuX3V2cT0xMTE0NjM2NTA5JnN5bmZ1PTkuMC4xMTUmaF91PTc2
OCZoX2o9MTAyNCZoX251PTczOCZoX25qPTEwMjQmaF9wcT0yNCZoX2dtPS00ODAmaF91dmY9MiZo
X3duaW49Z2VociZoX2FjeWh0PTcmaF9henZ6cj0yMic7CisgIHZhciBzdHIxMyA9ICdaRlBoeWdo
ZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYm
UGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMTU2NjAxNjQ5ODAmZ3Z6ck1i
YXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1R
bzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdM
SEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpR
SDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFy
IHN0cjE0ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3Jl
ZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNi
ZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzE1NjYwMTY0OTgwJmd2enJNYmFyPTAmSEZFWUJQPURLV3lM
SEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhs
TVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5
MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5
Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZhciByZTM1ID0gL1s8Pl0vZzsKKyAg
dmFyIHN0cjE1ID0gJ0ZyZmZ2YmFRUVMyPXM2cjQ1NzlucG40cm4yMTM1czkwNHIwczc1cHAxbzUz
MzRwNnM2cG9zcG8xMjY5NjsgWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1I
RiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2Vs
PUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMTY4NjAxMTMyOTYmZ3Z6ck1iYXI9MCZIRkVZ
QlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQy
OXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFO
M1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0Ew
TEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9OyBBRlBfenBfZGZjdHd6cy1hb3di
XzgwPTQ0MTMycjUwMzY2MCc7CisgIHZhciBzdHIxNiA9ICdGcmZmdmJhUVFTMj1zNnI0NTc5bnBu
NHJuMjEzNXM5MDRyMHM3NXBwMW81MzM0cDZzNnBvc3BvMTI2OTY7IEFGUF96cF9kZmN0d3pzLWFv
d2JfODA9NDQxMzJyNTAzNjYwOyBfX2hnem09MTQ0NjMxNjU4LjEyMzEzNjM2MzguMS4xLmhnenBm
ZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1
OC45NjU4NjcwNDc2Nzk0OTg4MDAuMTIzMTM2MzYzOC4xMjMxMzYzNjM4LjEyMzEzNjM2MzguMTsg
X19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjM2Mzg7IF9faGd6cD0xNDQ2MzE2NTg7IFpGUGh5
Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1I
RiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNjg2MDExMzI5NiZndnpy
TWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFs
TVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hF
Z0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1Zo
WlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2
YXIgc3RyMTcgPSAndWdnYzovL3RiYnR5cm5xZi50LnFiaG95cnB5dnB4LmFyZy9jbnRybnEvbnFm
P3B5dnJhZz1wbi1zdnpfemxmY25wcl96bGZjbnByLXVienJjbnRyX3dmJnFnPTEyMzEzNjM2MjEw
MTQmdXk9cmEmbnFmbnNyPXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5xZ3JmZz1i
c3MmcGJlZXJ5bmdiZT0xMjMxMzYzNjIxMDE0JnB1bmFhcnk9c3Z6X3psZmNucHJfdWJ6cmNudHJf
YWJneWJ0dHJxdmElMlBzdnpfemxmY25wcl9hYmFfSFRQJTJQc3Z6X3psZmNucHJfaGF2Z3JxLWZn
bmdyZiZoZXk9dWdnYyUzTiUyUyUyU2NlYnN2eXIuemxmY25wci5wYnolMlN2YXFyay5wc3ombnFf
Z2xjcj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAmdG5faXZxPTM0ODY5OTExOS4xMjMxMzYz
NjI0JnRuX2Z2cT0xMjMxMzYzNjI0JnRuX3V2cT04OTU1MTEwMzQmc3luZnU9OS4wLjExNSZoX3U9
NzY4Jmhfaj0xMDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4MCZoX3V2Zj0y
Jmhfd25pbj1nZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFyIHN0cjE4ID0gJ3VnZ2M6
Ly9qamoueXJvYmFwYnZhLnNlL3l2JzsKKyAgdmFyIHN0cjE5ID0gJ1pGUGh5Z2hlcj1WQz03NC4x
MjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJ
WiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNjg2MDExMzI5NiZndnpyTWJhcj0tOCZIRkVZ
QlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQy
OXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFO
M1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0Ew
TEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyMjAgPSAn
WkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVy
PXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVu
Z3ZiYT02MzM2NjkzMTY4NjAxMTMyOTYmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdI
ald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1
R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZ
d0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5
V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAgZnVuY3Rpb24gcnVuQmxvY2szKCkgeworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjc7IGkrKykgeworICAgICAgJ2UxMTUnLnJlcGxhY2UoL1tBLVphLXpd
L2csICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMzsgaSsrKSB7CisgICAg
ICAncXZmY3lubCcucmVwbGFjZShyZTI3LCAnJyk7CisgICAgICAnY2Jmdmd2YmEnLnJlcGxhY2Uo
cmUyNywgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIyOyBpKyspIHsKKyAg
ICAgICd1bmFxeXInLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3VuYXF5cicucmVwbGFjZShy
ZTE1LCAnJyk7CisgICAgICAneXZhcicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAneXZhcicu
cmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjYgZnZhdHlyMSBnbm8nLnJl
cGxhY2UocmUxNCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI2IGZ2YXR5cjEgZ25vJy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICdmeXZxcmUnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAg
J2Z5dnFyZScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICByZTI4LmV4ZWMoJycpOworICAgIH0K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIxOyBpKyspIHsKKyAgICAgICd1Z2djOi8vampqLnps
ZmNucHIucGJ6LycucmVwbGFjZShyZTEyLCAnJyk7CisgICAgICByZTEzLmV4ZWMoJ3VnZ2M6Ly9q
amouemxmY25wci5wYnovJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjA7IGkr
KykgeworICAgICAgJ2NudHJpdnJqJy5yZXBsYWNlKHJlMjksICcnKTsKKyAgICAgICdjbnRyaXZy
aicucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICByZTE5LmV4ZWMoJ3luZmcnKTsKKyAgICAgIHJl
MTkuZXhlYygnYmEgc3ZlZmcnKTsKKyAgICAgIHJlOC5leGVjKCdWQz03NC4xMjUuNzUuMycpOwor
ICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE5OyBpKyspIHsKKyAgICAgIHJlMzEuZXhl
YygncmEnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxODsgaSsrKSB7CisgICAg
ICBzdHIxMC5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjExLnNwbGl0KHJlMzIpOworICAgICAgc3Ry
MTIucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAuMTIz
MTM2MzU3MCcpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzYzNTcwLjEuMS5oZ3pw
ZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5l
eGVjKCcxNDQ2MzE2NTguMzQyNjg3NTIxOTcxODA4NDAwMC4xMjMxMzYzNTcwLjEyMzEzNjM1NzAu
MTIzMTM2MzU3MC4xJyk7CisgICAgICByZTguZXhlYyhzdHIxMyk7CisgICAgICByZTguZXhlYyhz
dHIxNCk7CisgICAgICByZTguZXhlYygnX19oZ3puPTE0NDYzMTY1OC4zNDI2ODc1MjE5NzE4MDg0
MDAwLjEyMzEzNjM1NzAuMTIzMTM2MzU3MC4xMjMxMzYzNTcwLjEnKTsKKyAgICAgIHJlOC5leGVj
KCdfX2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2MzU3MCcpOworICAgICAgcmU4LmV4ZWMoJ19f
aGd6bT0xNDQ2MzE2NTguMTIzMTM2MzU3MC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZl
cnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTM0LmV4ZWMoc3RyMTApOworICAgICAgcmUz
NC5leGVjKHN0cjExKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNzsgaSsrKSB7
CisgICAgICBzdHIwLm1hdGNoKC96ZnZyL2dpKTsKKyAgICAgIHN0cjAubWF0Y2goL2JjcmVuL2dp
KTsKKyAgICAgIHN0cjE1LnNwbGl0KHJlMzIpOworICAgICAgc3RyMTYuc3BsaXQocmUzMik7Cisg
ICAgICAnb2hnZ2JhJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdvaGdnYmEnLnJlcGxhY2Uo
cmUxNSwgJycpOworICAgICAgJ3B1dnlxIHAxIHN2ZWZnIHN5bGJoZyBweWJmcnEnLnJlcGxhY2Uo
cmUxNCwgJycpOworICAgICAgJ3B1dnlxIHAxIHN2ZWZnIHN5bGJoZyBweWJmcnEnLnJlcGxhY2Uo
cmUxNSwgJycpOworICAgICAgJ3B2Z3ZyZicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHZn
dnJmJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdweWJmcnEnLnJlcGxhY2UocmUxNCwgJycp
OworICAgICAgJ3B5YmZycScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncXJ5Jy5yZXBsYWNl
KHJlMTQsICcnKTsKKyAgICAgICdxcnknLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3VxeV96
YmEnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3VxeV96YmEnLnJlcGxhY2UocmUxNSwgJycp
OworICAgICAgc3RyMTcucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICBzdHIxOC5yZXBsYWNlKC8l
M1AvZywgJycpOworICAgICAgc3RyMTgucmVwbGFjZSgvJTNSL2csICcnKTsKKyAgICAgIHN0cjE4
LnJlcGxhY2UoLyUzcS9nLCAnJyk7CisgICAgICBzdHIxOC5yZXBsYWNlKHJlMzUsICcnKTsKKyAg
ICAgICd5dmF4eXZmZzE2Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICd5dmF4eXZmZzE2Jy5y
ZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd6dmFoZicucmVwbGFjZShyZTE0LCAnJyk7CisgICAg
ICAnenZhaGYnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2JjcmEnLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgJ2JjcmEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NuZXJhZyBwdWVi
enI1IGZ2YXR5cjEgcHMgTlUnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVi
enI1IGZ2YXR5cjEgcHMgTlUnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2N5bmxyZScucmVw
bGFjZShyZTE0LCAnJyk7CisgICAgICAnY3lubHJlJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAg
ICdjeWhmJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjeWhmJy5yZXBsYWNlKHJlMTUsICcn
KTsKKyAgICAgICdjYl91cXknLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2NiX3VxeScucmVw
bGFjZShyZTE1LCAnJyk7CisgICAgICAnaHlKVnp0Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAg
ICdoeUpWenQnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4w
LjEwLjEyMzEzNjM2MzgnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2MzYzOC4x
LjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAg
ICByZTguZXhlYygnMTQ0NjMxNjU4Ljk2NTg2NzA0NzY3OTQ5ODgwMC4xMjMxMzYzNjM4LjEyMzEz
NjM2MzguMTIzMTM2MzYzOC4xJyk7CisgICAgICByZTguZXhlYygnNDQxMzI2OHEzNjYwJyk7Cisg
ICAgICByZTguZXhlYygnNHNzNzQ3bzc3OTA0MzMzcTM3NG9yODRxcnIxczlyMG5wcnA4cjVxODE1
MzRvOTRuJyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMjE2OTkw
OTMwNjAnKTsKKyAgICAgIHJlOC5leGVjKCdWQz03NC4xMjUuNzUuMjAnKTsKKyAgICAgIHJlOC5l
eGVjKHN0cjE5KTsKKyAgICAgIHJlOC5leGVjKHN0cjIwKTsKKyAgICAgIHJlOC5leGVjKCdBRlBf
enBfdGZ3c2JyZy1hb3diXzgwPTQ0MTMyNjhxMzY2MCcpOworICAgICAgcmU4LmV4ZWMoJ0ZyZmZ2
YmFRUVMyPTRzczc0N283NzkwNDMzM3EzNzRvcjg0cXJyMXM5cjBucHJwOHI1cTgxNTM0bzk0bicp
OworICAgICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguOTY1ODY3MDQ3Njc5NDk4ODAwLjEy
MzEzNjM2MzguMTIzMTM2MzYzOC4xMjMxMzYzNjM4LjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hn
em89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2MzYzOCcpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0x
NDQ2MzE2NTguMTIzMTM2MzYzOC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxo
Z3pwenE9KGFiYXIpJyk7CisgICAgICByZTM0LmV4ZWMoc3RyMTUpOworICAgICAgcmUzNC5leGVj
KHN0cjE2KTsKKyAgICB9CisgIH0KKyAgdmFyIHJlMzYgPSAvdWVyc3xmZXB8ZnJ5cnBncnEvOwor
ICB2YXIgcmUzNyA9IC9ccyooWys+flxzXSlccyooW2EtekEtWiMuKjpcW10pL2c7CisgIHZhciBy
ZTM4ID0gL14oXHcrfFwqKSQvOworICB2YXIgc3RyMjEgPSAnRnJmZnZiYVFRUzI9czE1cTUzcDlu
Mzcyc243Nm5wcjEzbzI3MW40czNwNXIyOXAyMzU3NDZwOTA4cDU4OyBaRlBoeWdoZXI9VkM9NjYu
MjQ5Ljg1LjEzMCZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVl
cnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU4
NTI3MjQ0ODE4Jmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFv
YUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1K
RHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5
MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5
RDBSPSc7CisgIHZhciBzdHIyMiA9ICdGcmZmdmJhUVFTMj1zMTVxNTNwOW4zNzJzbjc2bnByMTNv
MjcxbjRzM3A1cjI5cDIzNTc0NnA5MDhwNTg7IF9faGd6bT0xNDQ2MzE2NTguMTIzMTM2NzgyMi4x
LjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpOyBfX2hnem49
MTQ0NjMxNjU4LjQxMjc1MjA2MzAzMjE5ODQ1MDAuMTIzMTM2NzgyMi4xMjMxMzY3ODIyLjEyMzEz
Njc4MjIuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjc4MjI7IF9faGd6cD0xNDQ2MzE2
NTg7IFpGUGh5Z2hlcj1WQz02Ni4yNDkuODUuMTMwJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQ
aHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU4NTI3
MjQ0ODE4Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FF
dW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0
SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBx
SkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQw
UiUzUSc7CisgIHZhciBzdHIyMyA9ICd1Z2djOi8vdGJidHlybnFmLnQucWJob3lycHl2cHguYXJn
L2NudHJucS9ucWY/cHl2cmFnPXBuLXN2el96bGZjbnByX3psZmNucHItdWJ6cmNudHJfd2YmcWc9
MTIzMTM2NzgwMzc5NyZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFoel9ucWY9NCZiaGdjaGc9
d2YmbnFncmZnPWJzcyZwYmVlcnluZ2JlPTEyMzEzNjc4MDM3OTcmcHVuYWFyeT1zdnpfemxmY25w
cl91YnpyY250cl9hYmd5YnR0cnF2YSUyUHN2el96bGZjbnByX2FiYV9IVFAlMlBzdnpfemxmY25w
cl9oYXZncnEtZmduZ3JmJmhleT11Z2djJTNOJTJTJTJTenJmZm50dmF0LnpsZmNucHIucGJ6JTJT
dmFxcmsucHN6Jm5xX2dsY3I9Z3JrZyZydnE9NjA4MzAyNyZybj0wJnNlej0wJnRuX2l2cT0xMTky
NTUyMDkxLjEyMzEzNjc4MDcmdG5fZnZxPTEyMzEzNjc4MDcmdG5fdXZxPTExNTU0NDY4NTcmc3lu
ZnU9OS4wLjExNSZoX3U9NzY4Jmhfaj0xMDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0Jmhf
Z209LTQ4MCZoX3V2Zj0yJmhfd25pbj1nZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFy
IHN0cjI0ID0gJ1pGUGh5Z2hlcj1WQz02Ni4yNDkuODUuMTMwJlZDUGh5Z2hlcj1yYS1IRiZDZXJz
cmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5
MzU4NTI3MjQ0ODE4Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlH
Sjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96
eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5
aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1
b0pIOUQwUiUzUSc7CisgIHZhciBzdHIyNSA9ICdaRlBoeWdoZXI9VkM9NjYuMjQ5Ljg1LjEzMCZW
Q1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3Jh
cXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU4NTI3MjQ0ODE4Jmd2
enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlx
bE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4
RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndW
aFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZh
ciBzdHIyNiA9ICdoeS55bmF0LWZyeXJwZ2JlJzsKKyAgdmFyIHJlMzkgPSAvXFwvZzsKKyAgdmFy
IHJlNDAgPSAvIC9nOworICB2YXIgcmU0MSA9IC9cL1x4YzRcL3QvOworICB2YXIgcmU0MiA9IC9c
L1x4ZDZcL3QvOworICB2YXIgcmU0MyA9IC9cL1x4ZGNcL3QvOworICB2YXIgcmU0NCA9IC9cL1x4
ZGZcL3QvOworICB2YXIgcmU0NSA9IC9cL1x4ZTRcL3QvOworICB2YXIgcmU0NiA9IC9cL1x4ZjZc
L3QvOworICB2YXIgcmU0NyA9IC9cL1x4ZmNcL3QvOworICB2YXIgcmU0OCA9IC9cVy9nOworICB2
YXIgcmU0OSA9IC91ZXJzfGZlcHxmZ2x5ci87CisgIGZ1bmN0aW9uIHJ1bkJsb2NrNCgpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHsKKyAgICAgICcnLnJlcGxhY2UoL1wqL2cs
ICcnKTsKKyAgICAgIC9cYm5wZ3ZpclxiLy5leGVjKCducGd2aXInKTsKKyAgICAgIC9zdmVyc2Jr
L2kuZXhlYyhzdHIwKTsKKyAgICAgIHJlMzYuZXhlYygnZ2xjcicpOworICAgICAgL3pmdnIvaS5l
eGVjKHN0cjApOworICAgICAgL2JjcmVuL2kuZXhlYyhzdHIwKTsKKyAgICB9CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxNTsgaSsrKSB7CisgICAgICBzdHIyMS5zcGxpdChyZTMyKTsKKyAgICAg
IHN0cjIyLnNwbGl0KHJlMzIpOworICAgICAgJ3VnZ2M6Ly9vaHl5cmd2YWYuemxmY25wci5wYnov
dmFxcmsucHN6Jy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgIHN0cjIzLnJlcGxhY2UocmUzMywg
JycpOworICAgICAgJ3l2Jy5yZXBsYWNlKHJlMzcsICcnKTsKKyAgICAgICd5dicucmVwbGFjZShy
ZTE4LCAnJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAuMTIzMTM2NzgyMicpOwor
ICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzY3ODIyLjEuMS5oZ3pwZmU9KHF2ZXJwZyl8
aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2
NTguNDEyNzUyMDYzMDMyMTk4NDUwMC4xMjMxMzY3ODIyLjEyMzEzNjc4MjIuMTIzMTM2NzgyMi4x
Jyk7CisgICAgICByZTguZXhlYyhzdHIyNCk7CisgICAgICByZTguZXhlYyhzdHIyNSk7CisgICAg
ICByZTguZXhlYygnX19oZ3puPTE0NDYzMTY1OC40MTI3NTIwNjMwMzIxOTg0NTAwLjEyMzEzNjc4
MjIuMTIzMTM2NzgyMi4xMjMxMzY3ODIyLjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0
NjMxNjU4LjAuMTAuMTIzMTM2NzgyMicpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2
NTguMTIzMTM2NzgyMi4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9
KGFiYXIpJyk7CisgICAgICByZTM0LmV4ZWMoc3RyMjEpOworICAgICAgcmUzNC5leGVjKHN0cjIy
KTsKKyAgICAgIC9cLihbXHctXSspfFxbKFx3KykoPzooWyEqXiR+fF0/PSlbIiddPyguKj8pWyIn
XT8pP1xdfDooW1x3LV0rKSg/OlwoWyInXT8oLio/KT9bIiddP1wpfCQpL2cuZXhlYyhzdHIyNik7
CisgICAgICByZTEzLmV4ZWMoJ3VnZ2M6Ly9vaHl5cmd2YWYuemxmY25wci5wYnovdmFxcmsucHN6
Jyk7CisgICAgICByZTM4LmV4ZWMoJ3l2Jyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTQ7IGkrKykgeworICAgICAgJycucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAnOS4wICBl
MTE1Jy5yZXBsYWNlKC8oXHMrZXxccytvWzAtOV0rKS8sICcnKTsKKyAgICAgICdGdW5lciBndXZm
IHRucXRyZycucmVwbGFjZSgvPC9nLCAnJyk7CisgICAgICAnRnVuZXIgZ3V2ZiB0bnF0cmcnLnJl
cGxhY2UoLz4vZywgJycpOworICAgICAgJ0Z1bmVyIGd1dmYgdG5xdHJnJy5yZXBsYWNlKHJlMzks
ICcnKTsKKyAgICAgICd1Z2djOi8vY2Vic3Z5cnJxdmcuemxmY25wci5wYnovdmFxcmsucHN6Jy5y
ZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgICdncm5mcmUnLnJlcGxhY2UocmU0MCwgJycpOworICAg
ICAgJ2dybmZyZScucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJl
NDIsICcnKTsKKyAgICAgICdncm5mcmUnLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2dybmZy
ZScucmVwbGFjZShyZTQ0LCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDUsICcnKTsK
KyAgICAgICdncm5mcmUnLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ2dybmZyZScucmVwbGFj
ZShyZTQ3LCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgIHJl
MTYuZXhlYygnem5ldHZhLWdiYycpOworICAgICAgcmUxNi5leGVjKCdjYmZ2Z3ZiYScpOworICAg
ICAgcmUxOS5leGVjKCdnbm8xJyk7CisgICAgICByZTkuZXhlYygncXonKTsKKyAgICAgIHJlOS5l
eGVjKCdxZycpOworICAgICAgcmU5LmV4ZWMoJ3picW9iaycpOworICAgICAgcmU5LmV4ZWMoJ3pi
cW9ia3ZhJyk7CisgICAgICByZTkuZXhlYygnemJxZ3ZneXInKTsKKyAgICAgIHJlMTMuZXhlYygn
dWdnYzovL2NlYnN2eXJycXZnLnpsZmNucHIucGJ6L3ZhcXJrLnBzeicpOworICAgICAgcmUyNi5l
eGVjKCcvdnQvem52eXRucXRyZycpOworICAgICAgcmU0OS5leGVjKCdnbGNyJyk7CisgICAgfQor
ICB9CisgIHZhciByZTUwID0gLyg/Ol58XHMrKWZyeXJwZ3JxKD86XHMrfCQpLzsKKyAgdmFyIHJl
NTEgPSAvXCYvZzsKKyAgdmFyIHJlNTIgPSAvXCsvZzsKKyAgdmFyIHJlNTMgPSAvXD8vZzsKKyAg
dmFyIHJlNTQgPSAvXHQvZzsKKyAgdmFyIHJlNTUgPSAvKFwkXHtucWlIZXlcfSl8KFwkbnFpSGV5
XGIpL2c7CisgIHZhciByZTU2ID0gLyhcJFx7Y25ndVx9KXwoXCRjbmd1XGIpL2c7CisgIGZ1bmN0
aW9uIHJ1bkJsb2NrNSgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEzOyBpKyspIHsKKyAg
ICAgICdwdXJweCcucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHVycHgnLnJlcGxhY2UocmUx
NSwgJycpOworICAgICAgJ3B2Z2wnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3B2Z2wnLnJl
cGxhY2UocmUxNSwgJycpOworICAgICAgJ3FycGUgZnl2cXJncmtnJy5yZXBsYWNlKHJlMTQsICcn
KTsKKyAgICAgICdxcnBlIGZ5dnFyZ3JrZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnc3Zl
ZmcgZnJ5cnBncnEnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3N2ZWZnIGZyeXJwZ3JxJy5y
ZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd1cXlfcmFnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAg
ICAgICd1cXlfcmFnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd2YXBlIGZ5dnFyZ3JrZycu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAndmFwZSBmeXZxcmdya2cnLnJlcGxhY2UocmUxNSwg
JycpOworICAgICAgJ3ZhY2hnZ3JrZyBRQlpQYmFnZWJ5X2N5bnBydWJ5cXJlJy5yZXBsYWNlKHJl
NSwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI2IGZ2YXR5cjEgZ25vIGZyeXJwZ3JxJy5yZXBs
YWNlKHJlMTQsICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdubyBmcnlycGdy
cScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnY2JfZ3V6Jy5yZXBsYWNlKHJlMTQsICcnKTsK
KyAgICAgICdjYl9ndXonLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2Zob3p2ZycucmVwbGFj
ZShyZTE0LCAnJyk7CisgICAgICAnZmhvenZnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgIHJl
NTAuZXhlYygnJyk7CisgICAgICAvTmNjeXJKcm9YdmdcLyhbXlxzXSopLy5leGVjKHN0cjApOwor
ICAgICAgL1hVR1pZLy5leGVjKHN0cjApOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEyOyBpKyspIHsKKyAgICAgICcke2NlYmd9Oi8vJHt1YmZnfSR7Y25ndX0vJHtken0nLnJlcGxh
Y2UoLyhcJFx7Y2ViZ1x9KXwoXCRjZWJnXGIpL2csICcnKTsKKyAgICAgICcxJy5yZXBsYWNlKHJl
NDAsICcnKTsKKyAgICAgICcxJy5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgICcxJy5yZXBsYWNl
KHJlNTEsICcnKTsKKyAgICAgICcxJy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICcxJy5yZXBs
YWNlKHJlNTMsICcnKTsKKyAgICAgICcxJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcxJy5y
ZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICc5LjAgIGUxMTUnLnJlcGxhY2UoL14oLiopXC4uKiQv
LCAnJyk7CisgICAgICAnOS4wICBlMTE1Jy5yZXBsYWNlKC9eLiplKC4qKSQvLCAnJyk7CisgICAg
ICAnPCEtLSAke25xaUhleX0gLS0+Jy5yZXBsYWNlKHJlNTUsICcnKTsKKyAgICAgICc8ZnBldmNn
IGdsY3I9Imdya2cvd25pbmZwZXZjZyIgZmVwPSIke25xaUhleX0iPjwvZnBldmNnPicucmVwbGFj
ZShyZTU1LCAnJyk7CisgICAgICBzdHIxLnJlcGxhY2UoL14uKlxzKyhcUytccytcUyskKS8sICcn
KTsKKyAgICAgICd0emslMlN1YnpyY250ciUyU2ZnbmVnJTJTcXIlMlMnLnJlcGxhY2UocmUzMCwg
JycpOworICAgICAgJ3R6aycucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAndWdnYzovLyR7dWJm
Z30ke2NuZ3V9LyR7ZHp9Jy5yZXBsYWNlKC8oXCRce3ViZmdcfSl8KFwkdWJmZ1xiKS9nLCAnJyk7
CisgICAgICAndWdnYzovL25xcHl2cmFnLmh2emZyZWkuYXJnJHtjbmd1fS8ke2R6fScucmVwbGFj
ZShyZTU2LCAnJyk7CisgICAgICAndWdnYzovL25xcHl2cmFnLmh2emZyZWkuYXJnL3dmLmF0LyR7
ZHp9Jy5yZXBsYWNlKC8oXCRce2R6XH0pfChcJGR6XGIpL2csICcnKTsKKyAgICAgICdmcnBndmJh
Jy5yZXBsYWNlKHJlMjksICcnKTsKKyAgICAgICdmcnBndmJhJy5yZXBsYWNlKHJlMzAsICcnKTsK
KyAgICAgICdmdmdyJy5yZXBsYWNlKHJlMjksICcnKTsKKyAgICAgICdmdmdyJy5yZXBsYWNlKHJl
MzAsICcnKTsKKyAgICAgICdmY3Jwdm55Jy5yZXBsYWNlKHJlMjksICcnKTsKKyAgICAgICdmY3Jw
dm55Jy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgIHJlMzYuZXhlYygnYW56cicpOworICAgICAg
L2UvLmV4ZWMoJzkuMCAgZTExNScpOworICAgIH0KKyAgfQorICB2YXIgcmU1NyA9IC8jI3l2NCMj
L2dpOworICB2YXIgcmU1OCA9IC8jI3l2MTYjIy9naTsKKyAgdmFyIHJlNTkgPSAvIyN5djE5IyMv
Z2k7CisgIHZhciBzdHIyNyA9ICc8aHkgcHluZmY9Im5xaSI+IyN5djQjI0NianJlc2h5IFp2cGVi
ZmJzZyBncnB1YWJ5YnRsIHVyeWNmIHN2dHVnIGZjbnogbmFxIHZ6Y2ViaXIgZnJwaGV2Z2wuIyN5
djE5IyNUcmcgemJlciBxYmFyIGd1bmF4ZiBnYiB0ZXJuZ3JlIHJuZnIgbmFxIGZjcnJxLiMjeXYx
NiMjWWJnZiBicyBmZ2JlbnRyICYjNDA7NSBUTyYjNDE7IC0gemJlciBwYmJ5IGZnaHNzIGJhIGd1
ciBqbmwuIyNPRSMjICMjT0UjIyAjI04jI1lybmVhIHpiZXIjIy9OIyM8L2h5Pic7CisgIHZhciBz
dHIyOCA9ICc8aHkgcHluZmY9Im5xaSI+PHl2IHZxPSJZdk9ZRzQiIGZnbHlyPSJvbnB4dGViaGFx
LXZ6bnRyOmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQu
Mi4xMjMwL34vfi9+L295ZzQuY2F0KSI+Q2JqcmVzaHkgWnZwZWJmYnNnIGdycHVhYnlidGwgdXJ5
Y2Ygc3Z0dWcgZmNueiBuYXEgdnpjZWJpciBmcnBoZXZnbC4jI3l2MTkjI1RyZyB6YmVyIHFiYXIg
Z3VuYXhmIGdiIHRlcm5ncmUgcm5mciBuYXEgZmNycnEuIyN5djE2IyNZYmdmIGJzIGZnYmVudHIg
JiM0MDs1IFRPJiM0MTsgLSB6YmVyIHBiYnkgZmdoc3MgYmEgZ3VyIGpubC4jI09FIyMgIyNPRSMj
ICMjTiMjWXJuZWEgemJlciMjL04jIzwvaHk+JzsKKyAgdmFyIHN0cjI5ID0gJzxoeSBweW5mZj0i
bnFpIj48eXYgdnE9Ill2T1lHNCIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92
enQuanlrZWYucGJ6L35ZdmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnNC5j
YXQpIj5DYmpyZXNoeSBadnBlYmZic2cgZ3JwdWFieWJ0bCB1cnljZiBzdnR1ZyBmY256IG5hcSB2
emNlYmlyIGZycGhldmdsLiMjeXYxOSMjVHJnIHpiZXIgcWJhciBndW5heGYgZ2IgdGVybmdyZSBy
bmZyIG5hcSBmY3JycS48eXYgdnE9Ill2T1lHMTYiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhl
eSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34v
fi9+L295ZzE2LmNhdCkiPlliZ2YgYnMgZmdiZW50ciAmIzQwOzUgVE8mIzQxOyAtIHpiZXIgcGJi
eSBmZ2hzcyBiYSBndXIgam5sLiMjT0UjIyAjI09FIyMgIyNOIyNZcm5lYSB6YmVyIyMvTiMjPC9o
eT4nOworICB2YXIgc3RyMzAgPSAnPGh5IHB5bmZmPSJucWkiPjx5diB2cT0iWXZPWUc0IiBmZ2x5
cj0ib25weHRlYmhhcS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBi
YWdyYWcuVlEvfjE0LjIuMTIzMC9+L34vfi9veWc0LmNhdCkiPkNianJlc2h5IFp2cGViZmJzZyBn
cnB1YWJ5YnRsIHVyeWNmIHN2dHVnIGZjbnogbmFxIHZ6Y2ViaXIgZnJwaGV2Z2wuPHl2IHZxPSJZ
dk9ZRzE5IiBmZ2x5cj0ib25weHRlYmhhcS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnov
fll2aXIuRnZnclBiYWdyYWcuVlEvfjE0LjIuMTIzMC9+L34vfi9veWcxOS5jYXQpIj5UcmcgemJl
ciBxYmFyIGd1bmF4ZiBnYiB0ZXJuZ3JlIHJuZnIgbmFxIGZjcnJxLjx5diB2cT0iWXZPWUcxNiIg
ZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35ZdmlyLkZ2
Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnMTYuY2F0KSI+WWJnZiBicyBmZ2JlbnRy
ICYjNDA7NSBUTyYjNDE7IC0gemJlciBwYmJ5IGZnaHNzIGJhIGd1ciBqbmwuIyNPRSMjICMjT0Uj
IyAjI04jI1lybmVhIHpiZXIjIy9OIyM8L2h5Pic7CisgIHZhciBzdHIzMSA9ICc8aHkgcHluZmY9
Im5xaSI+PHl2IHZxPSJZdk9ZRzQiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhleSh1Z2djOi8v
dnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34vfi9+L295ZzQu
Y2F0KSI+Q2JqcmVzaHkgWnZwZWJmYnNnIGdycHVhYnlidGwgdXJ5Y2Ygc3Z0dWcgZmNueiBuYXEg
dnpjZWJpciBmcnBoZXZnbC48eXYgdnE9Ill2T1lHMTkiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRy
OmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMw
L34vfi9+L295ZzE5LmNhdCkiPlRyZyB6YmVyIHFiYXIgZ3VuYXhmIGdiIHRlcm5ncmUgcm5mciBu
YXEgZmNycnEuPHl2IHZxPSJZdk9ZRzE2IiBmZ2x5cj0ib25weHRlYmhhcS12em50cjpoZXkodWdn
YzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEvfjE0LjIuMTIzMC9+L34vfi9v
eWcxNi5jYXQpIj5ZYmdmIGJzIGZnYmVudHIgJiM0MDs1IFRPJiM0MTsgLSB6YmVyIHBiYnkgZmdo
c3MgYmEgZ3VyIGpubC48b2U+IDxvZT4gIyNOIyNZcm5lYSB6YmVyIyMvTiMjPC9oeT4nOworICB2
YXIgc3RyMzIgPSAnPGh5IHB5bmZmPSJucWkiPjx5diB2cT0iWXZPWUc0IiBmZ2x5cj0ib25weHRl
YmhhcS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEv
fjE0LjIuMTIzMC9+L34vfi9veWc0LmNhdCkiPkNianJlc2h5IFp2cGViZmJzZyBncnB1YWJ5YnRs
IHVyeWNmIHN2dHVnIGZjbnogbmFxIHZ6Y2ViaXIgZnJwaGV2Z2wuPHl2IHZxPSJZdk9ZRzE5IiBm
Z2x5cj0ib25weHRlYmhhcS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZn
clBiYWdyYWcuVlEvfjE0LjIuMTIzMC9+L34vfi9veWcxOS5jYXQpIj5UcmcgemJlciBxYmFyIGd1
bmF4ZiBnYiB0ZXJuZ3JlIHJuZnIgbmFxIGZjcnJxLjx5diB2cT0iWXZPWUcxNiIgZmdseXI9Im9u
cHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35ZdmlyLkZ2Z3JQYmFncmFn
LlZRL34xNC4yLjEyMzAvfi9+L34vb3lnMTYuY2F0KSI+WWJnZiBicyBmZ2JlbnRyICYjNDA7NSBU
TyYjNDE7IC0gemJlciBwYmJ5IGZnaHNzIGJhIGd1ciBqbmwuPG9lPiA8b2U+IDxuIHVlcnM9InVn
Z2M6Ly96bnZ5Lnl2aXIucGJ6L3pudnkvbm9iaGcubmZjayIgZ25ldHJnPSJfb3luYXgiPllybmVh
IHpiZXIjIy9OIyM8L2h5Pic7CisgIHZhciBzdHIzMyA9ICdCYXIgSnZhcWJqZiBZdmlyIFZRIHRy
Z2YgbGJoIHZhZ2IgPG8+VWJnem52eTwvbz4sIDxvPlpyZmZyYXRyZTwvbz4sIDxvPktvYmsgWVZJ
Ujwvbz4gXHUyMDE0IG5hcSBiZ3VyZSBjeW5wcmYgbGJoIGZyciAjfiNhcmdqYmV4eWJ0YiN+Iyc7
CisgIHZhciByZTYwID0gLyg/Ol58XHMrKWJzcyg/OlxzK3wkKS87CisgIHZhciByZTYxID0gL14o
KFteOlwvPyNdKyk6KT8oXC9cLyhbXlwvPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiop
KT8kLzsKKyAgdmFyIHJlNjIgPSAvXltePF0qKDwoLnxccykrPilbXj5dKiR8XiMoXHcrKSQvOwor
ICB2YXIgc3RyMzQgPSAnJHsxfTovLyR7Mn0kezN9JHs0fSR7NX0nOworICB2YXIgc3RyMzUgPSAn
IE89NmdueWcwZzR6bnJybiZvPTMmZj1nYzsgUT1fbHl1PUszYlFaR1N4blQ0bFp6RDNPUzlHTm1W
M1pHTGtBUXhScFR5eE5tUmxabVJtQW1Oa0FRTFJxVEltcU5aak9VRWdwVGpRbko1eE1LdGdvTi0t
OyBTQ0Y9cXknOworICBmdW5jdGlvbiBydW5CbG9jazYoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMTsgaSsrKSB7CisgICAgICBzdHIyNy5yZXBsYWNlKC8jI3l2MCMjL2dpLCAnJyk7Cisg
ICAgICBzdHIyNy5yZXBsYWNlKHJlNTcsICcnKTsKKyAgICAgIHN0cjI4LnJlcGxhY2UocmU1OCwg
JycpOworICAgICAgc3RyMjkucmVwbGFjZShyZTU5LCAnJyk7CisgICAgICBzdHIzMC5yZXBsYWNl
KC8jI1wvbyMjL2dpLCAnJyk7CisgICAgICBzdHIzMC5yZXBsYWNlKC8jI1wvdiMjL2dpLCAnJyk7
CisgICAgICBzdHIzMC5yZXBsYWNlKC8jI1wvaCMjL2dpLCAnJyk7CisgICAgICBzdHIzMC5yZXBs
YWNlKC8jI28jIy9naSwgJycpOworICAgICAgc3RyMzAucmVwbGFjZSgvIyNvZSMjL2dpLCAnJyk7
CisgICAgICBzdHIzMC5yZXBsYWNlKC8jI3YjIy9naSwgJycpOworICAgICAgc3RyMzAucmVwbGFj
ZSgvIyNoIyMvZ2ksICcnKTsKKyAgICAgIHN0cjMxLnJlcGxhY2UoLyMjbiMjL2dpLCAnJyk7Cisg
ICAgICBzdHIzMi5yZXBsYWNlKC8jI1wvbiMjL2dpLCAnJyk7CisgICAgICBzdHIzMy5yZXBsYWNl
KC8jfiNhcmdqYmV4eWJ0YiN+Iy9nLCAnJyk7CisgICAgICAvIFpib3Z5clwvLy5leGVjKHN0cjAp
OworICAgICAgLyMjeXYxIyMvZ2kuZXhlYyhzdHIyNyk7CisgICAgICAvIyN5djEwIyMvZ2kuZXhl
YyhzdHIyOCk7CisgICAgICAvIyN5djExIyMvZ2kuZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djEy
IyMvZ2kuZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djEzIyMvZ2kuZXhlYyhzdHIyOCk7CisgICAg
ICAvIyN5djE0IyMvZ2kuZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djE1IyMvZ2kuZXhlYyhzdHIy
OCk7CisgICAgICByZTU4LmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXYxNyMjL2dpLmV4ZWMoc3Ry
MjkpOworICAgICAgLyMjeXYxOCMjL2dpLmV4ZWMoc3RyMjkpOworICAgICAgcmU1OS5leGVjKHN0
cjI5KTsKKyAgICAgIC8jI3l2MiMjL2dpLmV4ZWMoc3RyMjcpOworICAgICAgLyMjeXYyMCMjL2dp
LmV4ZWMoc3RyMzApOworICAgICAgLyMjeXYyMSMjL2dpLmV4ZWMoc3RyMzApOworICAgICAgLyMj
eXYyMiMjL2dpLmV4ZWMoc3RyMzApOworICAgICAgLyMjeXYyMyMjL2dpLmV4ZWMoc3RyMzApOwor
ICAgICAgLyMjeXYzIyMvZ2kuZXhlYyhzdHIyNyk7CisgICAgICByZTU3LmV4ZWMoc3RyMjcpOwor
ICAgICAgLyMjeXY1IyMvZ2kuZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djYjIy9naS5leGVjKHN0
cjI4KTsKKyAgICAgIC8jI3l2NyMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXY4IyMvZ2ku
ZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djkjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIHJlOC5l
eGVjKCc0NzNxcTFyczBuMnI3MHE5cW8xcHE0OG4wMjFzOTQ2OHJvbjkwbnBzMDQ4cDRwMjknKTsK
KyAgICAgIHJlOC5leGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyNTE4NDYyODM2MicpOwor
ICAgICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMyPTQ3M3FxMXJzMG4ycjcwcTlxbzFwcTQ4bjAyMXM5
NDY4cm9uOTBucHMwNDhwNHAyOScpOworICAgICAgL0FieHZuQVteXC9dKi8uZXhlYyhzdHIwKTsK
KyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgICAnIGJzcycu
cmVwbGFjZSgvKD86XnxccyspYnNzKD86XHMrfCQpL2csICcnKTsKKyAgICAgIHN0cjM0LnJlcGxh
Y2UoLyhcJFx7MFx9KXwoXCQwXGIpL2csICcnKTsKKyAgICAgIHN0cjM0LnJlcGxhY2UoLyhcJFx7
MVx9KXwoXCQxXGIpL2csICcnKTsKKyAgICAgIHN0cjM0LnJlcGxhY2UoLyhcJFx7cGJ6Y3lyZ3Jc
fSl8KFwkcGJ6Y3lyZ3JcYikvZywgJycpOworICAgICAgc3RyMzQucmVwbGFjZSgvKFwkXHtzZW50
enJhZ1x9KXwoXCRzZW50enJhZ1xiKS9nLCAnJyk7CisgICAgICBzdHIzNC5yZXBsYWNlKC8oXCRc
e3ViZmdjYmVnXH0pfChcJHViZmdjYmVnXGIpL2csICcnKTsKKyAgICAgIHN0cjM0LnJlcGxhY2Uo
cmU1NiwgJycpOworICAgICAgc3RyMzQucmVwbGFjZSgvKFwkXHtjZWJnYnBieVx9KXwoXCRjZWJn
YnBieVxiKS9nLCAnJyk7CisgICAgICBzdHIzNC5yZXBsYWNlKC8oXCRce2RocmVsXH0pfChcJGRo
cmVsXGIpL2csICcnKTsKKyAgICAgICducWZ2bXInLnJlcGxhY2UocmUyOSwgJycpOworICAgICAg
J25xZnZtcicucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAndWdnYzovLyR7Mn0kezN9JHs0fSR7
NX0nLnJlcGxhY2UoLyhcJFx7Mlx9KXwoXCQyXGIpL2csICcnKTsKKyAgICAgICd1Z2djOi8vd2Yu
aHYtY2JlZ255LnFyJHszfSR7NH0kezV9Jy5yZXBsYWNlKC8oXCRcezNcfSl8KFwkM1xiKS9nLCAn
Jyk7CisgICAgICAnYXJqZicucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnYXJqZicucmVwbGFj
ZShyZTQxLCAnJyk7CisgICAgICAnYXJqZicucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnYXJq
ZicucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnYXJqZicucmVwbGFjZShyZTQ0LCAnJyk7Cisg
ICAgICAnYXJqZicucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAnYXJqZicucmVwbGFjZShyZTQ2
LCAnJyk7CisgICAgICAnYXJqZicucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAnYXJqZicucmVw
bGFjZShyZTQ4LCAnJyk7CisgICAgICAvIFBDPWk9KFxkKykmb2U9KC4pLy5leGVjKHN0cjM1KTsK
KyAgICAgIHJlNjAuZXhlYygnICcpOworICAgICAgcmU2MC5leGVjKCcgYnNzJyk7CisgICAgICBy
ZTYwLmV4ZWMoJycpOworICAgICAgcmUxOS5leGVjKCcgJyk7CisgICAgICByZTE5LmV4ZWMoJ3N2
ZWZnIGJhJyk7CisgICAgICByZTE5LmV4ZWMoJ3luZmcgdnRhYmVyJyk7CisgICAgICByZTE5LmV4
ZWMoJ2JhJyk7CisgICAgICByZTkuZXhlYygnc2NucSBzbyAnKTsKKyAgICAgIHJlOS5leGVjKCd6
cnF2Z29iaycpOworICAgICAgcmU5LmV4ZWMoJ2hzZ3knKTsKKyAgICAgIHJlOS5leGVjKCdsaHYt
aCcpOworICAgICAgL0Zuc25ldnxYYmFkaHJlYmV8WFVHWlkvZ2kuZXhlYyhzdHIwKTsKKyAgICAg
IHJlNjEuZXhlYygndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6ci93Zi8yMDA4MDYwMi9v
bmZyLndmJyk7CisgICAgICByZTYyLmV4ZWMoJyNZYnR2YV9yem52eScpOworICAgIH0KKyAgfQor
ICB2YXIgcmU2MyA9IC9cezBcfS9nOworICB2YXIgc3RyMzYgPSAnRnJmZnZiYVFRUzI9NHNzNzQ3
bzc3OTA0MzMzcTM3NG9yODRxcnIxczlyMG5wcnA4cjVxODE1MzRvOTRuOyBaRlBoeWdoZXI9VkM9
NzQuMTI1Ljc1LjIwJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNy
ZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2Njkz
MjE2OTkwOTMwNjAmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5
MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkw
TUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhN
MnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9K
SDlEMFI9OyBBRlBfenBfdGZ3c2JyZy1hb3diXzgwPTQ0MTMyNjhxMzY2MCc7CisgIHZhciBzdHIz
NyA9ICdGcmZmdmJhUVFTMj00c3M3NDdvNzc5MDQzMzNxMzc0b3I4NHFycjFzOXIwbnBycDhyNXE4
MTUzNG85NG47IEFGUF96cF90ZndzYnJnLWFvd2JfODA9NDQxMzI2OHEzNjYwOyBfX2hnem09MTQ0
NjMxNjU4LjEyMzEzNjQwNzQuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6
cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4yMjk0Mjc0ODcwMjE1ODQ4NDAwLjEyMzEzNjQw
NzQuMTIzMTM2NDA3NC4xMjMxMzY0MDc0LjE7IF9faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY0
MDc0OyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjIwJlZDUGh5Z2hl
cj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zl
bmd2YmE9NjMzNjY5MzIxNjk5MDkzMDYwJmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlB
d0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFV
VzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0da
M1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURt
V3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHIzOCA9ICd1Z2djOi8vdGJidHlybnFm
LnQucWJob3lycHl2cHguYXJnL2NudHJucS9ucWY/cHl2cmFnPXBuLXN2el96bGZjbnByX3psZmNu
cHItdWJ6cmNudHJfd2YmcWc9MTIzMTM2NDA1Nzc2MSZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4
JmFoel9ucWY9NCZiaGdjaGc9d2YmbnFncmZnPWJzcyZwYmVlcnluZ2JlPTEyMzEzNjQwNTc3NjEm
cHVuYWFyeT1zdnpfemxmY25wcl91YnpyY250cl9hYmd5YnR0cnF2YSUyUHN2el96bGZjbnByX2Fi
YV9IVFAlMlBzdnpfemxmY25wcl9oYXZncnEtZmduZ3JmJmhleT11Z2djJTNOJTJTJTJTc2V2cmFx
Zi56bGZjbnByLnBieiUyU3ZhcXJrLnBzeiZucV9nbGNyPWdya2cmcnZxPTYwODMwMjcmcm49MCZz
ZXo9MCZ0bl9pdnE9MTY2NzM2MzgxMy4xMjMxMzY0MDYxJnRuX2Z2cT0xMjMxMzY0MDYxJnRuX3V2
cT0xOTE3NTYzODc3JnN5bmZ1PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25q
PTEwMjQmaF9wcT0yNCZoX2dtPS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9h
enZ6cj0yMic7CisgIHZhciBzdHIzOSA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjIwJlZDUGh5
Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJr
Y3Zlbmd2YmE9NjMzNjY5MzIxNjk5MDkzMDYwJmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1U
SDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJ
aHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5
Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBa
UURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI0MCA9ICdaRlBoeWdoZXI9VkM9
NzQuMTI1Ljc1LjIwJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNy
ZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2Njkz
MjE2OTkwOTMwNjAmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5
MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkw
TUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhN
MnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9K
SDlEMFI9JzsKKyAgZnVuY3Rpb24gcnVuQmxvY2s3KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgOTsgaSsrKSB7CisgICAgICAnMCcucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnMCcucmVw
bGFjZShyZTEwLCAnJyk7CisgICAgICAnMCcucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnMCcu
cmVwbGFjZShyZTUyLCAnJyk7CisgICAgICAnMCcucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAn
MCcucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnMCcucmVwbGFjZShyZTU0LCAnJyk7CisgICAg
ICAnTHJmJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdMcmYnLnJlcGxhY2UocmUxMCwgJycp
OworICAgICAgJ0xyZicucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnTHJmJy5yZXBsYWNlKHJl
NTIsICcnKTsKKyAgICAgICdMcmYnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJ0xyZicucmVw
bGFjZShyZTM5LCAnJyk7CisgICAgICAnTHJmJy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICB9Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICdQeWJmciB7MH0nLnJlcGxh
Y2UocmU2MywgJycpOworICAgICAgJ0JjcmEgezB9Jy5yZXBsYWNlKHJlNjMsICcnKTsKKyAgICAg
IHN0cjM2LnNwbGl0KHJlMzIpOworICAgICAgc3RyMzcuc3BsaXQocmUzMik7CisgICAgICAncHV2
eXEgcDEgc3ZlZmcgZ25vdXJucXJlZicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHV2eXEg
cDEgc3ZlZmcgZ25vdXJucXJlZicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAndXF5X2ZjYicu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAndXF5X2ZjYicucmVwbGFjZShyZTE1LCAnJyk7Cisg
ICAgICAndXZhZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAndXZhZycucmVwbGFjZShyZTE1
LCAnJyk7CisgICAgICBzdHIzOC5yZXBsYWNlKHJlMzMsICcnKTsKKyAgICAgICd5dmZnJy5yZXBs
YWNlKHJlMTQsICcnKTsKKyAgICAgICd5dmZnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdh
dF9iaGdyZScucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjUgcWJob3ly
MiBOVScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjUgcWJob3lyMiBO
VScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjUgZGhucTUgcHMgTlUg
b3N5dmF4IHpiYXJsJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNSBk
aG5xNSBwcyBOVSBvc3l2YXggemJhcmwnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NuZXJh
ZyBwdWVienI2IGZ2YXR5cjEnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVi
enI2IGZ2YXR5cjEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NiX3FycycucmVwbGFjZShy
ZTE0LCAnJyk7CisgICAgICAnY2JfcXJzJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdnbm9w
YmFncmFnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdnbm9wYmFncmFnJy5yZXBsYWNlKHJl
MTUsICcnKTsKKyAgICAgICdpdl9zdmVmZ19ndnpyJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAg
IC8oXnwuKShyb25sfHFyaS1laGYzLndiZykofGZnYmVyZnx6YmdiZWZ8eXZpcm5ocGd2YmFmfGp2
eHZ8cmtjZXJmZnxwdW5nZ3JlKS4ocGJ6KHwubmh8LnBhfC51eHwuemx8LmZ0fC5vZXwuemspfHBi
KC5oeHwueGV8LmFtKXxwbnxxcnxzZXx2Z3xheXxvcnxuZ3xwdXx2cnx2YXxyZnxjeXxjdXxmcikk
L2kuZXhlYygnY250cmYucm9ubC5wYnonKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMC4x
MC4xMjMxMzY0MDc0Jyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjEyMzEzNjQwNzQuMS4x
LmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAg
cmU4LmV4ZWMoJzE0NDYzMTY1OC4yMjk0Mjc0ODcwMjE1ODQ4NDAwLjEyMzEzNjQwNzQuMTIzMTM2
NDA3NC4xMjMxMzY0MDc0LjEnKTsKKyAgICAgIHJlOC5leGVjKCc0NDEzMjQxcTM2NjAnKTsKKyAg
ICAgIHJlOC5leGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1NzM5MTM1MzU5MScpOworICAg
ICAgcmU4LmV4ZWMoc3RyMzkpOworICAgICAgcmU4LmV4ZWMoc3RyNDApOworICAgICAgcmU4LmV4
ZWMoJ0FGUF96cF9ra2stZ2R6b2d2XzgwPTQ0MTMyNDFxMzY2MCcpOworICAgICAgcmU4LmV4ZWMo
J0ZyZmZ2YmFRUVMyPXA5OHM4bzlxNDJucjIxb3IxcjYxcHFvcm4xbjAwMm5zc3M1Njk2MzU5ODRz
NnFwNycpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguMjI5NDI3NDg3MDIxNTg0
ODQwMC4xMjMxMzY0MDc0LjEyMzEzNjQwNzQuMTIzMTM2NDA3NC4xJyk7CisgICAgICByZTguZXhl
YygnX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjQwNzQnKTsKKyAgICAgIHJlOC5leGVjKCdf
X2hnem09MTQ0NjMxNjU4LjEyMzEzNjQwNzQuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2
ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmU4LmV4ZWMoJ3A5OHM4bzlxNDJucjIxb3Ix
cjYxcHFvcm4xbjAwMm5zc3M1Njk2MzU5ODRzNnFwNycpOworICAgICAgcmUzNC5leGVjKHN0cjM2
KTsKKyAgICAgIHJlMzQuZXhlYyhzdHIzNyk7CisgICAgfQorICB9CisgIHZhciByZTY0ID0gL1xi
W2Etel0vZzsKKyAgdmFyIHJlNjUgPSAvXnVnZ2M6XC9cLy87CisgIHZhciByZTY2ID0gLyg/Ol58
XHMrKXF2Zm5veXJxKD86XHMrfCQpLzsKKyAgdmFyIHN0cjQxID0gJ3VnZ2M6Ly9jZWJzdnlyLnps
ZmNucHIucGJ6L1picWh5cmYvTmNjeXZwbmd2YmFmL0NudHJmL1BuYWluZi5uZmNrJzsKKyAgZnVu
Y3Rpb24gcnVuQmxvY2s4KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7Cisg
ICAgICBzdHIxLm1hdGNoKC9cZCsvZyk7CisgICAgICAnbnNncmUnLnJlcGxhY2UocmU2NCwgJycp
OworICAgICAgJ29yc2JlcicucmVwbGFjZShyZTY0LCAnJyk7CisgICAgICAnb2JnZ2J6Jy5yZXBs
YWNlKHJlNjQsICcnKTsKKyAgICAgICdvaHZ5Z3ZhX2pybmd1cmUua3p5Jy5yZXBsYWNlKHJlNjUs
ICcnKTsKKyAgICAgICdvaGdnYmEnLnJlcGxhY2UocmUzNywgJycpOworICAgICAgJ29oZ2diYScu
cmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAncW5ncmd2enIua3p5Jy5yZXBsYWNlKHJlNjUsICcn
KTsKKyAgICAgICd1Z2djOi8vZWZmLnBhYS5wYnovZWZmL3BhYV9nYmNmZ2JldnJmLmVmZicucmVw
bGFjZShyZTY1LCAnJyk7CisgICAgICAndmFjaGcnLnJlcGxhY2UocmUzNywgJycpOworICAgICAg
J3ZhY2hnJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICd2YWZ2cXInLnJlcGxhY2UocmU2NCwg
JycpOworICAgICAgJ2NidmFncmUnLnJlcGxhY2UocmUyNywgJycpOworICAgICAgJ2NiZnZndmJh
Jy5yZXBsYWNlKC9bQS1aXS9nLCAnJyk7CisgICAgICAnZ2JjJy5yZXBsYWNlKHJlMjcsICcnKTsK
KyAgICAgICdnYmMnLnJlcGxhY2UocmU2NCwgJycpOworICAgICAgJ2h5Jy5yZXBsYWNlKHJlMzcs
ICcnKTsKKyAgICAgICdoeScucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICBzdHIyNi5yZXBsYWNl
KHJlMzcsICcnKTsKKyAgICAgIHN0cjI2LnJlcGxhY2UocmUxOCwgJycpOworICAgICAgJ2xiaGdo
b3JfdnRiYnR5ci9pMi9sYmhnaG9yLmt6eScucmVwbGFjZShyZTY1LCAnJyk7CisgICAgICAnbS12
YXFyaycucmVwbGFjZShyZTI3LCAnJyk7CisgICAgICAvIyhbXHctXSspLy5leGVjKHN0cjI2KTsK
KyAgICAgIHJlMTYuZXhlYygndXJ2dHVnJyk7CisgICAgICByZTE2LmV4ZWMoJ3puZXR2YUdiYycp
OworICAgICAgcmUxNi5leGVjKCdqdnFndScpOworICAgICAgcmUxOS5leGVjKCdnbm8wIHN2ZWZn
IGJhJyk7CisgICAgICByZTE5LmV4ZWMoJ2dubzAgYmEnKTsKKyAgICAgIHJlMTkuZXhlYygnZ25v
NCB5bmZnJyk7CisgICAgICByZTE5LmV4ZWMoJ2dubzQnKTsKKyAgICAgIHJlMTkuZXhlYygnZ25v
NScpOworICAgICAgcmUxOS5leGVjKCdnbm82Jyk7CisgICAgICByZTE5LmV4ZWMoJ2dubzcnKTsK
KyAgICAgIHJlMTkuZXhlYygnZ25vOCcpOworICAgICAgL05xYm9yTlZFXC8oW15cc10qKS8uZXhl
YyhzdHIwKTsKKyAgICAgIC9OY2N5ckpyb1h2Z1wvKFteIF0qKS8uZXhlYyhzdHIwKTsKKyAgICAg
IC9YVUdaWS9naS5leGVjKHN0cjApOworICAgICAgL14oPzpvYnFsfHVnenkpJC9pLmV4ZWMoJ1lW
Jyk7CisgICAgICByZTM4LmV4ZWMoJ29oZ2diYScpOworICAgICAgcmUzOC5leGVjKCd2YWNoZycp
OworICAgICAgcmUzOC5leGVjKCdoeScpOworICAgICAgcmUzOC5leGVjKHN0cjI2KTsKKyAgICAg
IC9eKFx3K3xcKikvLmV4ZWMoc3RyMjYpOworICAgICAgL3pucHxqdmF8eXZhaGsvaS5leGVjKCdK
dmEzMicpOworICAgICAgL2V0b24/XChbXGRccyxdK1wpLy5leGVjKCdmZ25ndnAnKTsKKyAgICB9
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICcnLnJlcGxhY2UoL1xy
L2csICcnKTsKKyAgICAgICcvJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICcvJy5yZXBsYWNl
KHJlMTAsICcnKTsKKyAgICAgICcvJy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgICcvJy5yZXBs
YWNlKHJlNTIsICcnKTsKKyAgICAgICcvJy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICcvJy5y
ZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcvJy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICd1
Z2djOi8vemZhY2JlZ255LjExMi4yYjcuYXJnL28vZmYvemZhY2JlZ255dWJ6ci8xL1UuNy1jcWkt
Mi97MH0/W05ET10mezF9JnsyfSZbTkRSXScucmVwbGFjZShyZTYzLCAnJyk7CisgICAgICBzdHI0
MS5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgICd1Z2djOi8vampqLnNucHJvYmJ4LnBiei9mZXB1
LmN1YycucmVwbGFjZShyZTIzLCAnJyk7CisgICAgICAnZnJlaXZwcicucmVwbGFjZShyZTQwLCAn
Jyk7CisgICAgICAnZnJlaXZwcicucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICAnZnJlaXZwcicu
cmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnZnJlaXZwcicucmVwbGFjZShyZTQzLCAnJyk7Cisg
ICAgICAnZnJlaXZwcicucmVwbGFjZShyZTQ0LCAnJyk7CisgICAgICAnZnJlaXZwcicucmVwbGFj
ZShyZTQ1LCAnJyk7CisgICAgICAnZnJlaXZwcicucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAn
ZnJlaXZwcicucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAnZnJlaXZwcicucmVwbGFjZShyZTQ4
LCAnJyk7CisgICAgICAvKChaRlZSXHMrKFs2LTldfFxkXGQpXC4pKS8uZXhlYyhzdHIwKTsKKyAg
ICAgIHJlNjYuZXhlYygnJyk7CisgICAgICByZTUwLmV4ZWMoJ2ZyeXJwZ3JxJyk7CisgICAgICBy
ZTguZXhlYygnOHNxcTc4cjluNDQyODUxcTU2NTU5OW80MDEzODVzcDNzMDRyOTJybm43bzE5c3Nu
Jyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNDAzODY4OTM4Njcn
KTsKKyAgICAgIHJlOC5leGVjKCdWQz03NC4xMjUuNzUuMTcnKTsKKyAgICAgIHJlOC5leGVjKCdG
cmZmdmJhUVFTMj04c3FxNzhyOW40NDI4NTFxNTY1NTk5bzQwMTM4NXNwM3MwNHI5MnJubjdvMTlz
c24nKTsKKyAgICAgIC9YYmFkaHJlYmV8Rm5zbmV2fFhVR1pZLy5leGVjKHN0cjApOworICAgICAg
cmUxMy5leGVjKHN0cjQxKTsKKyAgICAgIHJlNDkuZXhlYygndW5mc2JwaGYnKTsKKyAgICB9Cisg
IH0KKyAgdmFyIHJlNjcgPSAvenJhaF9ieXEvZzsKKyAgdmFyIHN0cjQyID0gJ0ZyZmZ2YmFRUVMy
PTQ3M3FxMXJzMG4ycjcwcTlxbzFwcTQ4bjAyMXM5NDY4cm9uOTBucHMwNDhwNHAyOTsgWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhG
JkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02
MzM2NjkzMjUxODQ2MjgzNjImZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNx
VXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01H
MUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdW
ekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlp
b3g1dW9KSDlEMFI9JzsKKyAgdmFyIHN0cjQzID0gJ0ZyZmZ2YmFRUVMyPTQ3M3FxMXJzMG4ycjcw
cTlxbzFwcTQ4bjAyMXM5NDY4cm9uOTBucHMwNDhwNHAyOTsgX19oZ3ptPTE0NDYzMTY1OC4xMjMx
MzY0MzgwLjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7
IF9faGd6bj0xNDQ2MzE2NTguMzkzMTg2MjE5Njk0NzkzOTMwMC4xMjMxMzY0MzgwLjEyMzEzNjQz
ODAuMTIzMTM2NDM4MC4xOyBfX2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2NDM4MDsgX19oZ3pw
PTE0NDYzMTY1ODsgWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJz
cmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5
MzI1MTg0NjI4MzYyJmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlH
Sjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96
eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5
aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1
b0pIOUQwUiUzUSc7CisgIHZhciBzdHI0NCA9ICd1Z2djOi8vdGJidHlybnFmLnQucWJob3lycHl2
cHguYXJnL2NudHJucS9ucWY/cHl2cmFnPXBuLXN2el96bGZjbnByX3Z6bnRyZl93ZiZxZz0xMjMx
MzY0MzczMDg4JnV5PXJhJm5xZm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZu
cWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2NDM3MzA4OCZwdW5hYXJ5PXN2el96bGZjbnByX2hm
cmUtaXZyai1wYnp6cmFnZiUyUHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYmaGV5PXVnZ2MlM04l
MlMlMlNwYnp6cmFnLnpsZmNucHIucGJ6JTJTdmFxcmsucHN6Jm5xX2dsY3I9Z3JrZyZydnE9NjA4
MzAyNyZybj0wJnNlej0wJnRuX2l2cT0xMTU4NzM3Nzg5LjEyMzEzNjQzNzUmdG5fZnZxPTEyMzEz
NjQzNzUmdG5fdXZxPTQxNTUyMDgzMiZzeW5mdT05LjAuMTE1JmhfdT03NjgmaF9qPTEwMjQmaF9u
dT03MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZmPTImaF93bmluPWdlaHImaF9h
Y3lodD03JmhfYXp2enI9MjInOworICB2YXIgc3RyNDUgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43
NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNR
JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzI1MTg0NjI4MzYyJmd2enJNYmFyPS04JkhGRVlCUD1E
S1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1H
MUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hr
dXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtR
bzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI0NiA9ICdaRlBo
eWdoZXI9VkM9NzQuMTI1Ljc1LjMmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEt
SEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJh
PTYzMzY2OTMyNTE4NDYyODM2MiZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hB
Y3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNn
TUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtC
R1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0y
eWlveDV1b0pIOUQwUj0nOworICB2YXIgcmU2OCA9IC9eKFsjLl0/KSgoPzpbXHdcdTAxMjgtXHVm
ZmZmKl8tXXxcXC4pKikvOworICB2YXIgcmU2OSA9IC9cezFcfS9nOworICB2YXIgcmU3MCA9IC9c
cysvOworICB2YXIgcmU3MSA9IC8oXCRcezRcfSl8KFwkNFxiKS9nOworICB2YXIgcmU3MiA9IC8o
XCRcezVcfSl8KFwkNVxiKS9nOworICB2YXIgcmU3MyA9IC9cezJcfS9nOworICB2YXIgcmU3NCA9
IC9bXis+XSBbXis+XS87CisgIHZhciByZTc1ID0gL1xidWNweXZccyo9XHMqKFteO10qKS9pOwor
ICB2YXIgcmU3NiA9IC9cYnVjdXZxclxzKj1ccyooW147XSopL2k7CisgIHZhciByZTc3ID0gL1xi
dWNmaWVccyo9XHMqKFteO10qKS9pOworICB2YXIgcmU3OCA9IC9cYmhmdWNqcm5ccyo9XHMqKFte
O10qKS9pOworICB2YXIgcmU3OSA9IC9cYm12Y1xzKj1ccyooW147XSopL2k7CisgIHZhciByZTgw
ID0gL14oKD86W1x3XHUwMTI4LVx1ZmZmZipfLV18XFwuKSspKCMpKCg/Oltcd1x1MDEyOC1cdWZm
ZmYqXy1dfFxcLikrKS87CisgIHZhciByZTgxID0gL14oWz4rfl0pXHMqKFx3KikvaTsKKyAgdmFy
IHJlODIgPSAvXj5ccyooKD86W1x3XHUwMTI4LVx1ZmZmZipfLV18XFwuKSspLzsKKyAgdmFyIHJl
ODMgPSAvXltcc1tdP3NoYXBndmJhLzsKKyAgdmFyIHJlODQgPSAvdlwvZy50dnMjKC4qKS9pOwor
ICB2YXIgc3RyNDcgPSAnI1picS1WYXNiLVZhc2ItV25pbkZwZXZjZ1V2YWcnOworICB2YXIgc3Ry
NDggPSAnLG4uc3ZyeXFPZ2FQbmFwcnknOworICB2YXIgc3RyNDkgPSAnRnJmZnZiYVFRUzI9cDk4
czhvOXE0Mm5yMjFvcjFyNjFwcW9ybjFuMDAybnNzczU2OTYzNTk4NHM2cXA3OyBaRlBoeWdoZXI9
VkM9NzQuMTI1Ljc1LjMmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vy
c3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2
OTM1NzM5MTM1MzU5MSZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlH
Sjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96
eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5
aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1
b0pIOUQwUj07IEFGUF96cF9ra2stZ2R6b2d2XzgwPTQ0MTMyNDFxMzY2MCc7CisgIHZhciBzdHI1
MCA9ICdGcmZmdmJhUVFTMj1wOThzOG85cTQybnIyMW9yMXI2MXBxb3JuMW4wMDJuc3NzNTY5NjM1
OTg0czZxcDc7IEFGUF96cF9ra2stZ2R6b2d2XzgwPTQ0MTMyNDFxMzY2MDsgQUZQX3pwX2tray1h
b3diXzgwPTQ0MTMyMzVwMzY2MDsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY3NzA4LjEuMS5oZ3pw
ZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2
NTguMjc3MDkxNTM0ODkyMDYyODcwMC4xMjMxMzY3NzA4LjEyMzEzNjc3MDguMTIzMTM2NzcwOC4x
OyBfX2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2NzcwODsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQ
aHlnaGVyPVZDPTc0LjEyNS43NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJh
LUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU3MzkxMzUzNTkxJmd2
enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5
cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1X
eEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3
VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7Cisg
IHZhciBzdHI1MSA9ICd1Z2djOi8vdGJidHlybnFmLnQucWJob3lycHl2cHguYXJnL2NudHJucS9u
cWY/cHl2cmFnPXBuLXN2el96bGZjbnByX3psZmNucHItdWJ6cmNudHJfd2YmcWc9MTIzMTM2NzY5
MTE0MSZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFoel9ucWY9NCZiaGdjaGc9d2YmbnFncmZn
PWJzcyZwYmVlcnluZ2JlPTEyMzEzNjc2OTExNDEmcHVuYWFyeT1zdnpfemxmY25wcl91YnpyY250
cl9hYmd5YnR0cnF2YSUyUHN2el96bGZjbnByX2FiYV9IVFAlMlBzdnpfemxmY25wcl9oYXZncnEt
ZmduZ3JmJmhleT11Z2djJTNOJTJTJTJTampqLnpsZmNucHIucGJ6JTJTJm5xX2dsY3I9Z3JrZyZy
dnE9NjA4MzAyNyZybj0wJnNlej0wJnRuX2l2cT0zMjA3NTc5MDQuMTIzMTM2NzY5NCZ0bl9mdnE9
MTIzMTM2NzY5NCZ0bl91dnE9MTc1ODc5MjAwMyZzeW5mdT05LjAuMTE1JmhfdT03NjgmaF9qPTEw
MjQmaF9udT03MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZmPTImaF93bmluPWdl
aHImaF9hY3lodD03JmhfYXp2enI9MjInOworICB2YXIgc3RyNTIgPSAndWdnYzovL3pmYWNiZWdu
eS4xMTIuMmI3LmFyZy9vL2ZmL3pmYWNiZWdueXVienIvMS9VLjctY3FpLTIvZjU1MzMyOTc5ODI5
OTgxP1tORE9dJmFxdT0xJmc9NyUyUzAlMlMyMDA5JTIwMTQlM04zOCUzTjQyJTIwMyUyMDQ4MCZh
Zj16ZmFjYmVnbnkmY250ckFuenI9SEYlMjBVQ1pGU0dKJnQ9dWdnYyUzTiUyUyUyU2pqai56ZmEu
cGJ6JTJTJmY9MTAyNGs3NjgmcD0yNCZ4PUwmb2o9OTk0Jm91PTYzNCZ1Yz1BJnsyfSZbTkRSXSc7
CisgIHZhciBzdHI1MyA9ICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdubyBmcnlycGdycSBvdmFx
IHFiaG95cjIgcHMnOworICB2YXIgc3RyNTQgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4zJlZD
UGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBy
cVJrY3Zlbmd2YmE9NjMzNjY5MzU3MzkxMzUzNTkxJmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhB
aU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1R
bzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBx
SkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNH
eDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI1NSA9ICdaRlBoeWdoZXI9
VkM9NzQuMTI1Ljc1LjMmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vy
c3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2
OTM1NzM5MTM1MzU5MSZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlH
Sjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96
eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5
aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1
b0pIOUQwUj0nOworICB2YXIgc3RyNTYgPSAnbmU7bmc7bmg7b3I7b2U7cG47cHU7cHk7cGE7cXI7
cXg7cmY7c3Y7c2U7dG87dXg7dnE7dnI7dmE7dmc7d2M7eGU7ems7emw7YXk7YWI7YW07Y3U7Y3k7
Y2c7ZWg7ZnI7ZnQ7Z3U7Z2U7Z2o7bW47JzsKKyAgdmFyIHN0cjU3ID0gJ1pQMT1JPTMmVEhWUT02
bm5wcjlxNjYxODA0czMzbm5vcDQ1bm9zcXAxN3E4NTsgenU9WkZTRzsgUEhZR0hFUj1SQS1IRjsg
U3l2dHVnVGViaGNWcT05NzsgU3l2dHVnVnE9T25mckNudHI7IHVjZmllPVo6NXxTOjV8Rzo1fFI6
NXxROm95aHxKOlM7IHVjcHl2PUouVXxZLnxGLnxFLnxILll8UC58VS47IGhmdWNqcm49anA6SEZQ
TjA3NDY7IFpIVlE9UTc4M1NOOU8xNDA1NDgzMU40ODY5UjUxUDBTTzg4ODYmR0hWUT0xJzsKKyAg
dmFyIHN0cjU4ID0gJ1pQMT1JPTMmVEhWUT02bm5wcjlxNjYxODA0czMzbm5vcDQ1bm9zcXAxN3E4
NTsgenU9WkZTRzsgUEhZR0hFUj1SQS1IRjsgU3l2dHVnVGViaGNWcT05NzsgU3l2dHVnVnE9T25m
ckNudHI7IHVjZmllPVo6NXxTOjV8Rzo1fFI6NXxROm95aHxKOlM7IHVjcHl2PUouVXxZLnxGLnxF
LnxILll8UC58VS47IGhmdWNqcm49anA6SEZQTjA3NDY7IFpIVlE9UTc4M1NOOU8xNDA1NDgzMU40
ODY5UjUxUDBTTzg4ODYnOworICB2YXIgc3RyNTkgPSAnWlAxPUk9MyZUSFZRPTZubnByOXE2NjE4
MDRzMzNubm9wNDVub3NxcDE3cTg1OyB6dT1aRlNHOyBQSFlHSEVSPVJBLUhGOyBTeXZ0dWdUZWJo
Y1ZxPTk3OyBTeXZ0dWdWcT1PbmZyQ250cjsgdWNmaWU9Wjo1fFM6NXxHOjV8Ujo1fFE6b3lofEo6
UzsgdWNweXY9Si5VfFkufEYufEUufEguWXxQLnxVLjsgaGZ1Y2pybj1qcDpIRlBOMDc0NjsgWkhW
UT1RNzgzU045TzE0MDU0ODMxTjQ4NjlSNTFQMFNPODg4NjsgbXZjPW06OTQwNDN8eW46MzcuNDE1
NHx5YjotMTIyLjA1ODV8cDpIRnx1ZToxJzsKKyAgdmFyIHN0cjYwID0gJ1pQMT1JPTMmVEhWUT02
bm5wcjlxNjYxODA0czMzbm5vcDQ1bm9zcXAxN3E4NTsgenU9WkZTRzsgUEhZR0hFUj1SQS1IRjsg
U3l2dHVnVGViaGNWcT05NzsgU3l2dHVnVnE9T25mckNudHI7IHVjZmllPVo6NXxTOjV8Rzo1fFI6
NXxROm95aHxKOlM7IHVjcHl2PUouVXxZLnxGLnxFLnxILll8UC58VS47IGhmdWNqcm49anA6SEZQ
TjA3NDY7IFpIVlE9UTc4M1NOOU8xNDA1NDgzMU40ODY5UjUxUDBTTzg4ODY7IG12Yz1tOjk0MDQz
fHluOjM3LjQxNTR8eWI6LTEyMi4wNTg1fHA6SEYnOworICB2YXIgc3RyNjEgPSAndWdnYzovL2d4
Mi5mZ3AuZi16ZmEucGJ6L29lL3VjLzExL3JhLWhmL3BmZi92L2cudHZzI3VnZ2M6Ly9neDIuZmdv
LmYtemZhLnBiei92LzI5LzRSUVA0OTY5Nzc3TjA0OE5QUzRSUlIzUE8yUzdTLndjdCc7CisgIHZh
ciBzdHI2MiA9ICd1Z2djOi8vZ3gyLmZncC5mLXpmYS5wYnovb2UvdWMvMTEvcmEtaGYvcGZmL3Yv
Zy50dnMjdWdnYzovL2d4Mi5mZ28uZi16ZmEucGJ6L3YvT1EvNjNOUDlPOTROUzVPUVAxMjQ5UTlT
MVJPUDdOUzMud2N0JzsKKyAgdmFyIHN0cjYzID0gJ3pibXZ5eW4vNS4wIChqdmFxYmpmOyBoOyBq
dmFxYmpmIGFnIDUuMTsgcmEtaGYpIG5jY3lyanJveHZnLzUyOC45ICh4dWd6eSwgeXZ4ciB0cnB4
YikgcHVlYnpyLzIuMC4xNTcuMCBmbnNuZXYvNTI4LjknOworICBmdW5jdGlvbiBydW5CbG9jazko
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIHN0cjQyLnNwbGl0
KHJlMzIpOworICAgICAgc3RyNDMuc3BsaXQocmUzMik7CisgICAgICAnc3Z6X3psZmNucHJfaGZy
ZS1pdnJqLXBienpyYWdmLHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYnLnNwbGl0KHJlMjApOwor
ICAgICAgc3RyNDQucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICAnenJhaF9hcmogenJhaF9hcmpf
Z2J0dHlyIHpyYWhfZ2J0dHlyJy5yZXBsYWNlKHJlNjcsICcnKTsKKyAgICAgICd6cmFoX2J5cSB6
cmFoX2J5cV9nYnR0eXIgenJhaF9nYnR0eXInLnJlcGxhY2UocmU2NywgJycpOworICAgICAgcmU4
LmV4ZWMoJzEwMm45bzBvOXBxNjAxMzJxbjAzMzdycjg2N3A3NTk1MzUwMnEyczI3czJzNXI5OCcp
OworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4wLjEwLjEyMzEzNjQzODAnKTsKKyAgICAgIHJl
OC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2NDM4MC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0o
cXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjM5MzE4
NjIxOTY5NDc5MzkzMDAuMTIzMTM2NDM4MC4xMjMxMzY0MzgwLjEyMzEzNjQzODAuMScpOworICAg
ICAgcmU4LmV4ZWMoJzQ0MTMyNnEzMzY2MCcpOworICAgICAgcmU4LmV4ZWMoJ1NiZXBycVJrY3Zl
bmd2YmE9NjMzNjY5MzQxMjc4NzcxNDcwJyk7CisgICAgICByZTguZXhlYyhzdHI0NSk7CisgICAg
ICByZTguZXhlYyhzdHI0Nik7CisgICAgICByZTguZXhlYygnQUZQX3pwX2RmY3R3enNzcndoLWFv
d2JfODA9NDQxMzI2cTMzNjYwJyk7CisgICAgICByZTguZXhlYygnRnJmZnZiYVFRUzI9MTAybjlv
MG85cHE2MDEzMnFuMDMzN3JyODY3cDc1OTUzNTAycTJzMjdzMnM1cjk4Jyk7CisgICAgICByZTgu
ZXhlYygnX19oZ3puPTE0NDYzMTY1OC4zOTMxODYyMTk2OTQ3OTM5MzAwLjEyMzEzNjQzODAuMTIz
MTM2NDM4MC4xMjMxMzY0MzgwLjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0NjMxNjU4
LjAuMTAuMTIzMTM2NDM4MCcpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2NTguMTIz
MTM2NDM4MC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIp
Jyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAnIHl2
ZmcxJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICcgeXZmZzEnLnJlcGxhY2UocmUxNSwgJycp
OworICAgICAgJyB5dmZnMicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnIHl2ZmcyJy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICcgZnJuZXB1dGViaGMxJy5yZXBsYWNlKHJlMTQsICcnKTsK
KyAgICAgICcgZnJuZXB1dGViaGMxJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgIHN0cjQ3LnJl
cGxhY2UocmU2OCwgJycpOworICAgICAgc3RyNDcucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAn
Jy5yZXBsYWNlKC8mL2csICcnKTsKKyAgICAgICcnLnJlcGxhY2UocmUzNSwgJycpOworICAgICAg
JyguLi17MH0pKFx8KFxkKyl8KScucmVwbGFjZShyZTYzLCAnJyk7CisgICAgICBzdHI0OC5yZXBs
YWNlKHJlMTgsICcnKTsKKyAgICAgICcvL3Z6dC5qcm8ucXIvdmlqL0ZDLyR7Y25ndX0vJHthbnpy
fS8ke2lueWhyfT9nZj0ke2Fian0nLnJlcGxhY2UocmU1NiwgJycpOworICAgICAgJy8vdnp0Lmpy
by5xci92aWovRkMvdHprX3VjLyR7YW56cn0vJHtpbnlocn0/Z2Y9JHthYmp9Jy5yZXBsYWNlKC8o
XCRce2FuenJcfSl8KFwkYW56clxiKS9nLCAnJyk7CisgICAgICAnPGZjbmEgcHluZmY9InVybnEi
PjxvPkp2YXFiamYgWXZpciBVYmd6bnZ5PC9vPjwvZmNuYT48ZmNuYSBweW5mZj0iemZ0Ij57MX08
L2ZjbmE+Jy5yZXBsYWNlKHJlNjksICcnKTsKKyAgICAgICc8ZmNuYSBweW5mZj0idXJucSI+PG8+
ezB9PC9vPjwvZmNuYT48ZmNuYSBweW5mZj0iemZ0Ij57MX08L2ZjbmE+Jy5yZXBsYWNlKHJlNjMs
ICcnKTsKKyAgICAgICc8ZmNuYSBweW5mZj0iZnZ0YWhjIj48biB1ZXJzPXVnZ2M6Ly9qamoudWJn
em52eS5wYno+PG8+ezF9PC9vPjwvbj48L2ZjbmE+Jy5yZXBsYWNlKHJlNjksICcnKTsKKyAgICAg
ICc8ZmNuYSBweW5mZj0iZnZ0YWhjIj48biB1ZXJzPXswfT48bz57MX08L28+PC9uPjwvZmNuYT4n
LnJlcGxhY2UocmU2MywgJycpOworICAgICAgJ1Z6bnRyZicucmVwbGFjZShyZTE1LCAnJyk7Cisg
ICAgICAnWkZBJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdabmNmJy5yZXBsYWNlKHJlMTUs
ICcnKTsKKyAgICAgICdaYnEtVmFzYi1WYXNiLVduaW5GcGV2Y2dVdmFnJy5yZXBsYWNlKHJlMzks
ICcnKTsKKyAgICAgICdBcmpmJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgIHN0cjQ5LnNwbGl0
KHJlMzIpOworICAgICAgc3RyNTAuc3BsaXQocmUzMik7CisgICAgICAnSXZxcmInLnJlcGxhY2Uo
cmUxNSwgJycpOworICAgICAgJ0pybycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnbicucmVw
bGFjZShyZTM5LCAnJyk7CisgICAgICAnbndua0ZnbmVnJy5zcGxpdChyZTcwKTsKKyAgICAgICdu
d25rRmdiYycuc3BsaXQocmU3MCk7CisgICAgICAnb3ZhcScucmVwbGFjZShyZTE0LCAnJyk7Cisg
ICAgICAnb3ZhcScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnb2V2YXRmIGxiaCB6YmVyLiBa
YmVyIGZjbnByICg1VE8pLCB6YmVyIGZycGhldmdsLCBmZ3Z5eSBzZXJyLicucmVwbGFjZShyZTYz
LCAnJyk7CisgICAgICAncHV2eXEgcDEgc3ZlZmcgcXJweCcucmVwbGFjZShyZTE0LCAnJyk7Cisg
ICAgICAncHV2eXEgcDEgc3ZlZmcgcXJweCcucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHV2
eXEgcDEgc3ZlZmcgcWJob3lyMicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHV2eXEgcDEg
c3ZlZmcgcWJob3lyMicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHV2eXEgcDIgeW5mZycu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHV2eXEgcDIgeW5mZycucmVwbGFjZShyZTE1LCAn
Jyk7CisgICAgICAncHV2eXEgcDInLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3B1dnlxIHAy
Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdwdXZ5cSBwMycucmVwbGFjZShyZTE0LCAnJyk7
CisgICAgICAncHV2eXEgcDMnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3B1dnlxIHA0IHlu
ZmcnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3B1dnlxIHA0IHluZmcnLnJlcGxhY2UocmUx
NSwgJycpOworICAgICAgJ3BiY2xldnR1ZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncGJj
bGV2dHVnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdxWkZBWlJfMScucmVwbGFjZShyZTE0
LCAnJyk7CisgICAgICAncVpGQVpSXzEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3FiaG95
cjIgcHMnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3FiaG95cjIgcHMnLnJlcGxhY2UocmUx
NSwgJycpOworICAgICAgJ3FiaG95cjInLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3FiaG95
cjInLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3VxeV9hcmonLnJlcGxhY2UocmUxNCwgJycp
OworICAgICAgJ3VxeV9hcmonLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3VjX2Z1YmNjdmF0
b2JrJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICd1Z3p5JTJSdnEnLnJlcGxhY2UocmUyOSwg
JycpOworICAgICAgJ3VnenklMlJ2cScucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICBzdHI1MS5y
ZXBsYWNlKHJlMzMsICcnKTsKKyAgICAgICd1Z2djOi8vd2YuaHYtY2JlZ255LnFyL3R6ay91Ynpy
L3dmLzIwMDgwNjAyL2NlYmdiZ2xjci53ZiR7NH0kezV9Jy5yZXBsYWNlKHJlNzEsICcnKTsKKyAg
ICAgICd1Z2djOi8vd2YuaHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgwNjAyL2NlYmdiZ2xj
ci53ZiR7NX0nLnJlcGxhY2UocmU3MiwgJycpOworICAgICAgc3RyNTIucmVwbGFjZShyZTczLCAn
Jyk7CisgICAgICAndWdnYzovL3pmYWNiZWdueS4xMTIuMmI3LmFyZy9vL2ZmL3pmYWNiZWdueXVi
enIvMS9VLjctY3FpLTIvZjU1MzMyOTc5ODI5OTgxP1tORE9dJnsxfSZ7Mn0mW05EUl0nLnJlcGxh
Y2UocmU2OSwgJycpOworICAgICAgJ3Z6dFpGU0cnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAg
J3Z6dFpGU0cnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3pmYXNiYmcxIHBzJy5yZXBsYWNl
KHJlMTQsICcnKTsKKyAgICAgICd6ZmFzYmJnMSBwcycucmVwbGFjZShyZTE1LCAnJyk7CisgICAg
ICBzdHI1My5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgIHN0cjUzLnJlcGxhY2UocmUxNSwgJycp
OworICAgICAgJ2NuZXJhZyBwdWVienI2IGZ2YXR5cjEgZ25vIGZyeXJwZ3JxIG92YXEnLnJlcGxh
Y2UocmUxNCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI2IGZ2YXR5cjEgZ25vIGZyeXJwZ3Jx
IG92YXEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NldnpuZWwnLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgJ2NldnpuZWwnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2VycGduYXR5
cicucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAnZnJwYmFxbmVsJy5yZXBsYWNlKHJlMTQsICcn
KTsKKyAgICAgICdmcnBiYXFuZWwnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2hheWJucScu
c3BsaXQocmU3MCk7CisgICAgICAnezB9ezF9MScucmVwbGFjZShyZTYzLCAnJyk7CisgICAgICAn
fHsxfTEnLnJlcGxhY2UocmU2OSwgJycpOworICAgICAgLyguLi1IRikoXHwoXGQrKXwpL2kuZXhl
YygneGIteGUscmEtdmEsZ3UtZ3UnKTsKKyAgICAgIHJlNC5leGVjKCcvWmxGY25wck5jY2YvTmNj
UG5haW5mLDQ1MDAwMDEyJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAuMTIzMTM2
NzcwOCcpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzY3NzA4LjEuMS5oZ3pwZmU9
KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5leGVj
KCcxNDQ2MzE2NTguMjc3MDkxNTM0ODkyMDYyODcwMC4xMjMxMzY3NzA4LjEyMzEzNjc3MDguMTIz
MTM2NzcwOC4xJyk7CisgICAgICByZTguZXhlYygnNDQxMzIzNXAzNjYwJyk7CisgICAgICByZTgu
ZXhlYygnNDQxMzI3cTczNjYwJyk7CisgICAgICByZTguZXhlYygnOTk5NXA2cnAxMnJybnI4OTMz
MzRybzducTcwbzdwNjRwNjlycW44NDRwcnMxNDczJyk7CisgICAgICByZTguZXhlYygnU2JlcHJx
UmtjdmVuZ3ZiYT02MzM2NjkzNTA1NTk0Nzg4ODAnKTsKKyAgICAgIHJlOC5leGVjKHN0cjU0KTsK
KyAgICAgIHJlOC5leGVjKHN0cjU1KTsKKyAgICAgIHJlOC5leGVjKCdBRlBfenBfZGZjdHd6cy1h
b3diXzgwPTQ0MTMyN3E3MzY2MCcpOworICAgICAgcmU4LmV4ZWMoJ0FGUF96cF9ra2stYW93Yl84
MD00NDEzMjM1cDM2NjAnKTsKKyAgICAgIHJlOC5leGVjKCdGcmZmdmJhUVFTMj05OTk1cDZycDEy
cnJucjg5MzMzNHJvN25xNzBvN3A2NHA2OXJxbjg0NHByczE0NzMnKTsKKyAgICAgIHJlOC5leGVj
KCdfX2hnem49MTQ0NjMxNjU4LjI3NzA5MTUzNDg5MjA2Mjg3MDAuMTIzMTM2NzcwOC4xMjMxMzY3
NzA4LjEyMzEzNjc3MDguMScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4x
MC4xMjMxMzY3NzA4Jyk7CisgICAgICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY3
NzA4LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsK
KyAgICAgIHJlMzQuZXhlYyhzdHI0OSk7CisgICAgICByZTM0LmV4ZWMoc3RyNTApOworICAgICAg
L1pGVlJccys1Wy5dMDEvLmV4ZWMoc3RyMCk7CisgICAgICAvSEYoPz07KS9pLmV4ZWMoc3RyNTYp
OworICAgICAgcmU3NC5leGVjKHN0cjQ3KTsKKyAgICAgIHJlMjguZXhlYygnc3ZlZmcgbnBndmly
IHN2ZWZnTnBndmlyJyk7CisgICAgICByZTI4LmV4ZWMoJ3luZmcnKTsKKyAgICAgIC9cYnA6KC4u
KS9pLmV4ZWMoJ206OTQwNDN8eW46MzcuNDE1NHx5YjotMTIyLjA1ODV8cDpIRicpOworICAgICAg
cmU3NS5leGVjKHN0cjU3KTsKKyAgICAgIHJlNzUuZXhlYyhzdHI1OCk7CisgICAgICByZTc2LmV4
ZWMoc3RyNTcpOworICAgICAgcmU3Ni5leGVjKHN0cjU4KTsKKyAgICAgIHJlNzcuZXhlYyhzdHI1
Nyk7CisgICAgICByZTc3LmV4ZWMoc3RyNTgpOworICAgICAgL1xiaGZ1Y2NlXHMqPVxzKihbXjtd
KikvaS5leGVjKHN0cjU5KTsKKyAgICAgIHJlNzguZXhlYyhzdHI1Nyk7CisgICAgICByZTc4LmV4
ZWMoc3RyNTgpOworICAgICAgL1xiamNpXHMqPVxzKihbXjtdKikvaS5leGVjKHN0cjU5KTsKKyAg
ICAgIHJlNzkuZXhlYyhzdHI1OCk7CisgICAgICByZTc5LmV4ZWMoc3RyNjApOworICAgICAgcmU3
OS5leGVjKHN0cjU5KTsKKyAgICAgIC9cfHA6KFthLXpdezJ9KS9pLmV4ZWMoJ206OTQwNDN8eW46
MzcuNDE1NHx5YjotMTIyLjA1ODV8cDpIRnx1ZToxJyk7CisgICAgICByZTgwLmV4ZWMoc3RyNDcp
OworICAgICAgcmU2MS5leGVjKCdjZWJnYmdsY3Iud2YnKTsKKyAgICAgIHJlNjguZXhlYyhzdHI0
Nyk7CisgICAgICByZTgxLmV4ZWMoc3RyNDcpOworICAgICAgcmU4Mi5leGVjKHN0cjQ3KTsKKyAg
ICAgIC9eRnVicHhqbmlyIFN5bmZ1IChcZCkvLmV4ZWMoc3RyMSk7CisgICAgICAvXkZ1YnB4am5p
ciBTeW5mdSAoXGQrKS8uZXhlYyhzdHIxKTsKKyAgICAgIHJlODMuZXhlYygnW2Jvd3JwZyB0eWJv
bnldJyk7CisgICAgICByZTYyLmV4ZWMoc3RyNDcpOworICAgICAgcmU4NC5leGVjKHN0cjYxKTsK
KyAgICAgIHJlODQuZXhlYyhzdHI2Mik7CisgICAgICAvanJveHZnLy5leGVjKHN0cjYzKTsKKyAg
ICB9CisgIH0KKyAgdmFyIHJlODUgPSAvZWFxX3picW9ia3ZhLzsKKyAgdmFyIHN0cjY0ID0gJzEy
MzEzNjU3MjkyMTMnOworICB2YXIgc3RyNjUgPSAnNzQuMTI1Ljc1LjMtMTA1NzE2NTYwMC4yOTk3
ODkwMCc7CisgIHZhciBzdHI2NiA9ICc3NC4xMjUuNzUuMy0xMDU3MTY1NjAwLjI5OTc4OTAwLjEy
MzEzNjU3MzAyMTQnOworICB2YXIgc3RyNjcgPSAnRnJuZXB1JTIwWnZwZWJmYnNnLnBieic7Cisg
IHZhciBzdHI2OCA9ICdGcmZmdmJhUVFTMj04c3FxNzhyOW40NDI4NTFxNTY1NTk5bzQwMTM4NXNw
M3MwNHI5MnJubjdvMTlzc247IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMTcmVkNQaHlnaGVyPXJh
LUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFn
ZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM0MDM4Njg5Mzg2NyZndnpyTWJhcj0wJkhG
RVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1
RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlC
UU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8z
QTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIgc3RyNjkgPSAn
RnJmZnZiYVFRUzI9OHNxcTc4cjluNDQyODUxcTU2NTU5OW80MDEzODVzcDNzMDRyOTJybm43bzE5
c3NuOyBfX2hnem09MTQ0NjMxNjU4LjEyMzEzNjU3NzkuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pw
cGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4xODc3NTM2MTc3OTUz
OTE4NTAwLjEyMzEzNjU3NzkuMTIzMTM2NTc3OS4xMjMxMzY1Nzc5LjE7IF9faGd6bz0xNDQ2MzE2
NTguMC4xMC4xMjMxMzY1Nzc5OyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NzQuMTI1
Ljc1LjE3JlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUla
JTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQwMzg2ODkzODY3Jmd2enJNYmFyPS04JkhGRVlC
UD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5
eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4z
V3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBM
SmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI3MCA9ICdJ
PTMlMjZUSFZRPTc1N3Ezc3M4NzFxNDRvN284MDVuODExM241cDcycTUyJzsKKyAgdmFyIHN0cjcx
ID0gJ0k9MyZUSFZRPTc1N3Ezc3M4NzFxNDRvN284MDVuODExM241cDcycTUyJzsKKyAgdmFyIHN0
cjcyID0gJ3VnZ2M6Ly90YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250cm5xL25xZj9weXZy
YWc9cG4tc3Z6X3psZmNucHJfemxmY25wci11YnpyY250cl93ZiZxZz0xMjMxMzY1NzY1MjkyJnV5
PXJhJm5xZm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZucWdyZmc9YnNzJnBi
ZWVyeW5nYmU9MTIzMTM2NTc2NTI5MiZwdW5hYXJ5PXN2el96bGZjbnByX3VienJjbnRyX2FiZ3li
dHRycXZhJTJQc3Z6X3psZmNucHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYm
aGV5PXVnZ2MlM04lMlMlMlNvaHl5cmd2YWYuemxmY25wci5wYnolMlN2YXFyay5wc3ombnFfZ2xj
cj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAmdG5faXZxPTE1Nzk3OTM4NjkuMTIzMTM2NTc2
OCZ0bl9mdnE9MTIzMTM2NTc2OCZ0bl91dnE9MjA1NjIxMDg5NyZzeW5mdT05LjAuMTE1JmhfdT03
NjgmaF9qPTEwMjQmaF9udT03MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZmPTIm
aF93bmluPWdlaHImaF9hY3lodD03JmhfYXp2enI9MjInOworICB2YXIgc3RyNzMgPSAnZnJuZXB1
Lnp2cGViZmJzZy5wYnonOworICB2YXIgc3RyNzQgPSAnZnJuZXB1Lnp2cGViZmJzZy5wYnovJzsK
KyAgdmFyIHN0cjc1ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMTcmVkNQaHlnaGVyPXJhLUhG
JkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02
MzM2NjkzNDAzODY4OTM4NjcmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFj
cVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dN
RzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JH
VnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5
aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjc2ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUu
MTcmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hl
ckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM0MDM4Njg5Mzg2
NyZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJ
enl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFU
SW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Yw
a1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOwor
ICBmdW5jdGlvbiBydW5CbG9jazEwKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsr
KSB7CisgICAgICAnJTNTenhnPXJhLUhGJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICctOCcu
cmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnLTgnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAg
Jy04Jy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgICctOCcucmVwbGFjZShyZTUyLCAnJyk7Cisg
ICAgICAnLTgnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJy04Jy5yZXBsYWNlKHJlMzksICcn
KTsKKyAgICAgICctOCcucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnMS41Jy5yZXBsYWNlKHJl
NDAsICcnKTsKKyAgICAgICcxLjUnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJzEuNScucmVw
bGFjZShyZTUxLCAnJyk7CisgICAgICAnMS41Jy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICcx
LjUnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJzEuNScucmVwbGFjZShyZTM5LCAnJyk7Cisg
ICAgICAnMS41Jy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICcxMDI0azc2OCcucmVwbGFjZShy
ZTQwLCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJzEw
MjRrNzY4Jy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgICcxMDI0azc2OCcucmVwbGFjZShyZTUy
LCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJzEwMjRr
NzY4Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcxMDI0azc2OCcucmVwbGFjZShyZTU0LCAn
Jyk7CisgICAgICBzdHI2NC5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgIHN0cjY0LnJlcGxhY2Uo
cmUxMCwgJycpOworICAgICAgc3RyNjQucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICBzdHI2NC5y
ZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgIHN0cjY0LnJlcGxhY2UocmU1MywgJycpOworICAgICAg
c3RyNjQucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICBzdHI2NC5yZXBsYWNlKHJlNTQsICcnKTsK
KyAgICAgICcxNCcucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnMTQnLnJlcGxhY2UocmUxMCwg
JycpOworICAgICAgJzE0Jy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgICcxNCcucmVwbGFjZShy
ZTUyLCAnJyk7CisgICAgICAnMTQnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJzE0Jy5yZXBs
YWNlKHJlMzksICcnKTsKKyAgICAgICcxNCcucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnMjQn
LnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJzI0Jy5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAg
ICcyNCcucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnMjQnLnJlcGxhY2UocmU1MiwgJycpOwor
ICAgICAgJzI0Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICcyNCcucmVwbGFjZShyZTM5LCAn
Jyk7CisgICAgICAnMjQnLnJlcGxhY2UocmU1NCwgJycpOworICAgICAgc3RyNjUucmVwbGFjZShy
ZTQwLCAnJyk7CisgICAgICBzdHI2NS5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgIHN0cjY1LnJl
cGxhY2UocmU1MSwgJycpOworICAgICAgc3RyNjUucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICBz
dHI2NS5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgIHN0cjY1LnJlcGxhY2UocmUzOSwgJycpOwor
ICAgICAgc3RyNjUucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICBzdHI2Ni5yZXBsYWNlKHJlNDAs
ICcnKTsKKyAgICAgIHN0cjY2LnJlcGxhY2UocmUxMCwgJycpOworICAgICAgc3RyNjYucmVwbGFj
ZShyZTUxLCAnJyk7CisgICAgICBzdHI2Ni5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgIHN0cjY2
LnJlcGxhY2UocmU1MywgJycpOworICAgICAgc3RyNjYucmVwbGFjZShyZTM5LCAnJyk7CisgICAg
ICBzdHI2Ni5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICc5LjAnLnJlcGxhY2UocmU0MCwgJycp
OworICAgICAgJzkuMCcucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnOS4wJy5yZXBsYWNlKHJl
NTEsICcnKTsKKyAgICAgICc5LjAnLnJlcGxhY2UocmU1MiwgJycpOworICAgICAgJzkuMCcucmVw
bGFjZShyZTUzLCAnJyk7CisgICAgICAnOS4wJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICc5
LjAnLnJlcGxhY2UocmU1NCwgJycpOworICAgICAgJzk5NGs2MzQnLnJlcGxhY2UocmU0MCwgJycp
OworICAgICAgJzk5NGs2MzQnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJzk5NGs2MzQnLnJl
cGxhY2UocmU1MSwgJycpOworICAgICAgJzk5NGs2MzQnLnJlcGxhY2UocmU1MiwgJycpOworICAg
ICAgJzk5NGs2MzQnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJzk5NGs2MzQnLnJlcGxhY2Uo
cmUzOSwgJycpOworICAgICAgJzk5NGs2MzQnLnJlcGxhY2UocmU1NCwgJycpOworICAgICAgJz96
eGc9cmEtSEYnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJz96eGc9cmEtSEYnLnJlcGxhY2Uo
cmUxMCwgJycpOworICAgICAgJz96eGc9cmEtSEYnLnJlcGxhY2UocmU1MSwgJycpOworICAgICAg
Jz96eGc9cmEtSEYnLnJlcGxhY2UocmU1MiwgJycpOworICAgICAgJz96eGc9cmEtSEYnLnJlcGxh
Y2UocmU1MywgJycpOworICAgICAgJz96eGc9cmEtSEYnLnJlcGxhY2UocmU1NCwgJycpOworICAg
ICAgJ1BBQS5wYnonLnJlcGxhY2UocmUyNSwgJycpOworICAgICAgJ1BBQS5wYnonLnJlcGxhY2Uo
cmUxMiwgJycpOworICAgICAgJ1BBQS5wYnonLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ1Fu
Z3IgJiBHdnpyJy5yZXBsYWNlKHJlMjUsICcnKTsKKyAgICAgICdRbmdyICYgR3Z6cicucmVwbGFj
ZShyZTEyLCAnJyk7CisgICAgICAnUW5nciAmIEd2enInLnJlcGxhY2UocmUzOSwgJycpOworICAg
ICAgJ0ZybmVwdSBadnBlYmZic2cucGJ6Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdGcm5l
cHUgWnZwZWJmYnNnLnBieicucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICBzdHI2Ny5yZXBsYWNl
KHJlMTAsICcnKTsKKyAgICAgIHN0cjY3LnJlcGxhY2UocmU1MSwgJycpOworICAgICAgc3RyNjcu
cmVwbGFjZShyZTUyLCAnJyk7CisgICAgICBzdHI2Ny5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAg
IHN0cjY3LnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyNjguc3BsaXQocmUzMik7CisgICAg
ICBzdHI2OS5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjcwLnJlcGxhY2UocmU1MiwgJycpOworICAg
ICAgc3RyNzAucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICBzdHI3MC5yZXBsYWNlKHJlMzksICcn
KTsKKyAgICAgIHN0cjcxLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgc3RyNzEucmVwbGFjZShy
ZTEwLCAnJyk7CisgICAgICBzdHI3MS5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgIHN0cjcxLnJl
cGxhY2UocmU1NCwgJycpOworICAgICAgJ0pybmd1cmUnLnJlcGxhY2UocmUyNSwgJycpOworICAg
ICAgJ0pybmd1cmUnLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgJ0pybmd1cmUnLnJlcGxhY2Uo
cmUzOSwgJycpOworICAgICAgJ0xiaEdob3InLnJlcGxhY2UocmUyNSwgJycpOworICAgICAgJ0xi
aEdob3InLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgJ0xiaEdob3InLnJlcGxhY2UocmUzOSwg
JycpOworICAgICAgc3RyNzIucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICAnZXJ6YmdyX3ZzZW56
cl8xJy5yZXBsYWNlKC9eZXJ6YmdyX3ZzZW56cl8vLCAnJyk7CisgICAgICBzdHI3My5yZXBsYWNl
KHJlNDAsICcnKTsKKyAgICAgIHN0cjczLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgc3RyNzMu
cmVwbGFjZShyZTUxLCAnJyk7CisgICAgICBzdHI3My5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAg
IHN0cjczLnJlcGxhY2UocmU1MywgJycpOworICAgICAgc3RyNzMucmVwbGFjZShyZTM5LCAnJyk7
CisgICAgICBzdHI3My5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgIHN0cjc0LnJlcGxhY2UocmU0
MCwgJycpOworICAgICAgc3RyNzQucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICBzdHI3NC5yZXBs
YWNlKHJlNTEsICcnKTsKKyAgICAgIHN0cjc0LnJlcGxhY2UocmU1MiwgJycpOworICAgICAgc3Ry
NzQucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICBzdHI3NC5yZXBsYWNlKHJlMzksICcnKTsKKyAg
ICAgIHN0cjc0LnJlcGxhY2UocmU1NCwgJycpOworICAgICAgJ2xodi1oJy5yZXBsYWNlKC9cLS9n
LCAnJyk7CisgICAgICByZTkuZXhlYygncCcpOworICAgICAgcmU5LmV4ZWMoJ3F6IHAnKTsKKyAg
ICAgIHJlOS5leGVjKCd6YnF5bm9yeScpOworICAgICAgcmU5LmV4ZWMoJ2xodi1oIHN2ZWZnJyk7
CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAuMTIzMTM2NTc3OScpOworICAgICAgcmU4
LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzY1Nzc5LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShx
dmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTg3NzUz
NjE3Nzk1MzkxODUwMC4xMjMxMzY1Nzc5LjEyMzEzNjU3NzkuMTIzMTM2NTc3OS4xJyk7CisgICAg
ICByZTguZXhlYyhzdHI3NSk7CisgICAgICByZTguZXhlYyhzdHI3Nik7CisgICAgICByZTguZXhl
YygnX19oZ3puPTE0NDYzMTY1OC4xODc3NTM2MTc3OTUzOTE4NTAwLjEyMzEzNjU3NzkuMTIzMTM2
NTc3OS4xMjMxMzY1Nzc5LjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0NjMxNjU4LjAu
MTAuMTIzMTM2NTc3OScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2NTguMTIzMTM2
NTc3OS4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7
CisgICAgICByZTM0LmV4ZWMoc3RyNjgpOworICAgICAgcmUzNC5leGVjKHN0cjY5KTsKKyAgICAg
IC9eJC8uZXhlYygnJyk7CisgICAgICByZTMxLmV4ZWMoJ3FyJyk7CisgICAgICAvXnpua1xkKyQv
LmV4ZWMoJycpOworICAgICAgL156dmFcZCskLy5leGVjKCcnKTsKKyAgICAgIC9eZXJmZ2JlciQv
LmV4ZWMoJycpOworICAgICAgcmU4NS5leGVjKCd6YnFvYmt2YSB6YnFvYmtfYWJjbnFxdmF0ICcp
OworICAgICAgcmU4NS5leGVjKCd6YnFndmd5cicpOworICAgICAgcmU4NS5leGVjKCdlYXFfemJx
b2JrdmEgJyk7CisgICAgICByZTg1LmV4ZWMoJ2VhcV96YnFndmd5ciAnKTsKKyAgICAgIC9mcnBn
dmJhXGQrX3BiYWdyYWdmLy5leGVjKCdvYmdnYnpfYW5pJyk7CisgICAgfQorICB9CisgIHZhciBy
ZTg2ID0gLztccyovOworICB2YXIgcmU4NyA9IC8oXCRce2lueWhyXH0pfChcJGlueWhyXGIpL2c7
CisgIHZhciByZTg4ID0gLyhcJFx7YWJqXH0pfChcJGFialxiKS9nOworICB2YXIgcmU4OSA9IC9c
cyskLzsKKyAgdmFyIHJlOTAgPSAvXlxzKy87CisgIHZhciByZTkxID0gLyhcXFwifFx4MDAtfFx4
MWZ8XHg3Zi18XHg5ZnxcdTAwYWR8XHUwNjAwLXxcdTA2MDR8XHUwNzBmfFx1MTdiNHxcdTE3YjV8
XHUyMDBjLXxcdTIwMGZ8XHUyMDI4LXxcdTIwMmZ8XHUyMDYwLXxcdTIwNmZ8XHVmZWZmfFx1ZmZm
MC18XHVmZmZmKS9nOworICB2YXIgcmU5MiA9IC9eKDopKFtcdy1dKylcKCI/Jz8oLio/KFwoLio/
XCkpP1teKF0qPykiPyc/XCkvOworICB2YXIgcmU5MyA9IC9eKFs6LiNdKikoKD86W1x3XHUwMTI4
LVx1ZmZmZipfLV18XFwuKSspLzsKKyAgdmFyIHJlOTQgPSAvXihcWykgKkA/KFtcdy1dKykgKihb
ISokXn49XSopICooJz8iPykoLio/KVw0ICpcXS87CisgIHZhciBzdHI3NyA9ICcjZnViaGdvYmsg
LnB5YmZyJzsKKyAgdmFyIHN0cjc4ID0gJ0ZyZmZ2YmFRUVMyPTEwMm45bzBvOXBxNjAxMzJxbjAz
Mzdycjg2N3A3NTk1MzUwMnEyczI3czJzNXI5ODsgWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZD
UGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFx
dmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNDEyNzg3NzE0NzAmZ3Z6
ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFs
TVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hF
Z0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1Zo
WlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9OyBBRlBfenBf
ZGZjdHd6c3Nyd2gtYW93Yl84MD00NDEzMjZxMzM2NjAnOworICB2YXIgc3RyNzkgPSAnRnJmZnZi
YVFRUzI9MTAybjlvMG85cHE2MDEzMnFuMDMzN3JyODY3cDc1OTUzNTAycTJzMjdzMnM1cjk4OyBB
RlBfenBfZGZjdHd6c3Nyd2gtYW93Yl84MD00NDEzMjZxMzM2NjA7IF9faGd6bT0xNDQ2MzE2NTgu
MTIzMTM2NTg2OS4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFi
YXIpOyBfX2hnem49MTQ0NjMxNjU4LjE2NzA4MTYwNTIwMTkyMDkwMDAuMTIzMTM2NTg2OS4xMjMx
MzY1ODY5LjEyMzEzNjU4NjkuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjU4Njk7IF9f
aGd6cD0xNDQ2MzE2NTg7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYm
Q2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYz
MzY2OTM0MTI3ODc3MTQ3MCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNx
VXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01H
MUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdW
ekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlp
b3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyODAgPSAnRnJmZnZiYVFRUzI9OTk5NXA2cnAxMnJy
bnI4OTMzMzRybzducTcwbzdwNjRwNjlycW44NDRwcnMxNDczOyBaRlBoeWdoZXI9VkM9NzQuMTI1
Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5
Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1MDU1OTQ3
ODg4MCZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5K
NHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNF
dXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5
Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj07
IEFGUF96cF9kZmN0d3pzLWFvd2JfODA9NDQxMzI3cTczNjYwJzsKKyAgdmFyIHN0cjgxID0gJ0Zy
ZmZ2YmFRUVMyPTk5OTVwNnJwMTJycm5yODkzMzM0cm83bnE3MG83cDY0cDY5cnFuODQ0cHJzMTQ3
MzsgQUZQX3pwX2RmY3R3enMtYW93Yl84MD00NDEzMjdxNzM2NjA7IF9faGd6bT0xNDQ2MzE2NTgu
MTIzMTM2NzA1NC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFi
YXIpOyBfX2hnem49MTQ0NjMxNjU4LjE3OTYwODA3MTY2MjE0MTk1MDAuMTIzMTM2NzA1NC4xMjMx
MzY3MDU0LjEyMzEzNjcwNTQuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjcwNTQ7IF9f
aGd6cD0xNDQ2MzE2NTg7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYm
Q2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYz
MzY2OTM1MDU1OTQ3ODg4MCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNx
VXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01H
MUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdW
ekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlp
b3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyODIgPSAnW2dsY3I9ZmhvenZnXSc7CisgIHZhciBz
dHI4MyA9ICduLnN2cnlxT2dhLG4uc3ZyeXFPZ2FQbmFwcnknOworICB2YXIgc3RyODQgPSAnbi5z
dnJ5cU9nYVBuYXByeSc7CisgIHZhciBzdHI4NSA9ICdveXZweGNoYXhnJzsKKyAgdmFyIHN0cjg2
ID0gJ3F2aS5ib3ctbnBwYmVxdmJhIHFnJzsKKyAgdmFyIHN0cjg3ID0gJ3VnZ2M6Ly90YmJ0eXJu
cWYudC5xYmhveXJweXZweC5hcmcvY250cm5xL25xZj9weXZyYWc9cG4tc3Z6X3psZmNucHJfbmNj
Zl93ZiZxZz0xMjMxMzY3MDUyMjI3JnV5PXJhJm5xZm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00
JmJoZ2NoZz13ZiZucWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2NzA1MjIyNyZwdW5hYXJ5PXN2
el96bGZjbnByX25jY2YtcG5haW5mJTJQc3Z6X3psZmNucHJfaGF2Z3JxLWZnbmdyZiZoZXk9dWdn
YyUzTiUyUyUyU2NlYnN2eXIuemxmY25wci5wYnolMlNaYnFoeXJmJTJTTmNjeXZwbmd2YmFmJTJT
Q250cmYlMlNQbmFpbmYubmZjayZucV9nbGNyPWdya2cmcnZxPTYwODMwMjcmcm49MCZzZXo9MSZ0
bl9pdnE9NzE2MzU3OTEwLjEyMzEzNjcwNTYmdG5fZnZxPTEyMzEzNjcwNTYmdG5fdXZxPTEzODcy
MDY0OTEmc3luZnU9OS4wLjExNSZoX3U9NzY4Jmhfaj0xMDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZo
X3BxPTI0JmhfZ209LTQ4MCZoX3V2Zj0yJmhfd25pbj1nZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIy
JzsKKyAgdmFyIHN0cjg4ID0gJ3VnZ2M6Ly90YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250
cm5xL25xZj9weXZyYWc9cG4tc3Z6X3psZmNucHJfemxmY25wci11YnpyY250cl93ZiZxZz0xMjMx
MzY1ODUxNjU4JnV5PXJhJm5xZm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZu
cWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2NTg1MTY1OCZwdW5hYXJ5PXN2el96bGZjbnByX3Vi
enJjbnRyX2FiZ3lidHRycXZhJTJQc3Z6X3psZmNucHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hh
dmdycS1mZ25ncmYmaGV5PXVnZ2MlM04lMlMlMlNjZWJzdnlycnF2Zy56bGZjbnByLnBieiUyU3Zh
cXJrLnBzeiZucV9nbGNyPWdya2cmcnZxPTYwODMwMjcmcm49MCZzZXo9MCZ0bl9pdnE9MTk3OTgy
ODEyOS4xMjMxMzY1ODU1JnRuX2Z2cT0xMjMxMzY1ODU1JnRuX3V2cT0yMDg1MjI5NjQ5JnN5bmZ1
PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25qPTEwMjQmaF9wcT0yNCZoX2dt
PS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9henZ6cj0yMic7CisgIHZhciBz
dHI4OSA9ICd1Z2djOi8vemZhY2JlZ255LjExMi4yYjcuYXJnL28vZmYvemZhY2JlZ255dWJ6ci8x
L1UuNy1jcWktMi9mNTUwMjMzMzg2MTc3NTY/W05ET10mYXF1PTEmZz03JTJTMCUyUzIwMDklMjAx
NCUzTjEyJTNONDclMjAzJTIwNDgwJmFmPXpmYWNiZWdueSZjbnRyQW56cj1IRiUyMFVDWkZTR0om
dD11Z2djJTNOJTJTJTJTampqLnpmYS5wYnolMlMmZj0wazAmcD00MzgzNTgxNiZ4PUEmb2o9OTk0
Jm91PTYzNCZ1Yz1BJnsyfSZbTkRSXSc7CisgIHZhciBzdHI5MCA9ICd6cmduW2FuenI9bndua0hl
eV0nOworICB2YXIgc3RyOTEgPSAnYW5wdWV2cHVncmEnOworICB2YXIgc3RyOTIgPSAnYiBvUz17
XCdvVFwnOjEuMX07eCAkOG4oQil7eihCIT1vOSl9O3ggJFMoQil7TyghJDhuKEIpKXogQTtPKEIu
NEwpelwnVFwnO2IgUz03dCBCO08oUz09XCcyUFwnJiZCLnA0KXsyMyhCLjdmKXsxMiAxOnpcJ1Rc
JzsxMiAzOnovXFMvLjJnKEIuOE0pP1wnb3hcJzpcJ29oXCd9fU8oUz09XCcyUFwnfHxTPT1cJ3hc
Jyl7MjMoQi5uRSl7MTIgMlY6elwnMU9cJzsxMiA3STp6XCc1YVwnOzEyIDE4OnpcJzRCXCd9Tyg3
dCBCLkk9PVwnNEZcJyl7TyhCLjN1KXpcJ3BHXCc7TyhCLjhlKXpcJzFwXCd9fXogU307eCAkMnAo
KXtiIDRFPXt9O1ooYiB2PTA7djwxcC5JO3YrKyl7WihiIFggMW8gMXBbdl0pe2IgbmM9MXBbdl1b
WF07YiA2RT00RVtYXTtPKDZFJiYkUyhuYyk9PVwnMlBcJyYmJFMoNkUpPT1cJzJQXCcpNEVbWF09
JDJwKDZFLG5jKTsxNyA0RVtYXT1uY319eiA0RX07YiAkRT03cC5FPXgoKXtiIDFkPTFwO08oITFk
WzFdKTFkPVtwLDFkWzBdXTtaKGIgWCAxbyAxZFsxXSkxZFswXVtYXT0xZFsxXVtYXTt6IDFkWzBd
fTtiICQ0RD03cC5wSj14KCl7WihiIHY9MCx5PTFwLkk7djx5O3YrKyl7MXBbdl0uRT14KDFKKXta
KGIgMUkgMW8gMUope08oIXAuMVlbMUldKXAuMVlbMUldPTFKWzFJXTtPKCFwWzFJXSlwWzFJXT0k
NEQuNkMoMUkpfX19fTskNEQuNkM9eCgxSSl7eiB4KEwpe3ogcC4xWVsxSV0uM0goTCwyVi4xWS5u
Vi4xRigxcCwxKSl9fTskNEQoN0YsMlYsNkosbmIpO2IgM2w9eChCKXtCPUJ8fHt9O0IuRT0kRTt6
IEJ9O2IgcEs9WSAzbChIKTtiIHBaPVkgM2woQyk7Qy42Zj1DLjM1KFwnNmZcJylbMF07eCAkMk8o
Qil7eiEhKEJ8fEI9PT0wKX07eCAkNVMoQixuOCl7eiAkOG4oQik/QjpuOH07eCAkN0soM2MsMW0p
e3ogMXEubmEoMXEuN0soKSooMW0tM2MrMSkrM2MpfTt4ICQzTigpe3ogWSA5NygpLm9zKCl9O3gg
JDRNKDFVKXtwdigxVSk7cGEoMVUpO3ogMVN9O0guNDM9ISEoQy41Wik7TyhILm5CKUguMzE9SFtI
LjdxP1wncHlcJzpcJ25MXCddPTFyOzE3IE8oQy45TiYmIUMub20mJiFveS5vWilILnBGPUguNFo9
SFtILjQzP1wncHRcJzpcJzY1XCddPTFyOzE3IE8oQy5wbyE9MVMpSC43Sj0xcjtPKDd0IDVCPT1c
J285XCcpe2IgNUI9eCgpe307TyhILjRaKUMubmQoInBXIik7NUIuMVk9KEguNFopP0hbIltbb04u
MVldXSJdOnt9fTVCLjFZLjRMPTFyO08oSC5uTCk1c3tDLm9YKCJwcCIsQSwxcil9NEsocil7fTti
IDE4PXgoMVgpe2IgNjM9eCgpe3ooMXBbMF0hPT0xUyYmcC4xdyYmJFMocC4xdyk9PVwneFwnKT9w
LjF3LjNIKHAsMXApOnB9OyRFKDYzLHApOzYzLjFZPTFYOzYzLm5FPTE4O3ogNjN9OzE4LjF6PXgo
KXt9OzE4LjFZPXtFOngoMVgpe2IgN3g9WSBwKDFTKTtaKGIgWCAxbyAxWCl7YiBuQz03eFtYXTs3
eFtYXT0xOC5uWShuQywxWFtYXSl9eiBZIDE4KDd4KX0sM2Q6eCgpe1ooYiB2PTAseT0xcC5JO3Y8
eTt2KyspJEUocC4xWSwxcFt2XSl9fTsxOC5uWT14KDJiLDJuKXtPKDJiJiYyYiE9Mm4pe2IgUz0k
Uygybik7TyhTIT0kUygyYikpeiAybjsyMyhTKXsxMlwneFwnOmIgN1I9eCgpe3AuMWU9MXAuOGUu
MWU7eiAybi4zSChwLDFwKX07N1IuMWU9MmI7eiA3UjsxMlwnMlBcJzp6ICQycCgyYiwybil9fXog
Mm59O2IgOG89WSAxOCh7b1E6eChKKXtwLjR3PXAuNHd8fFtdO3AuNHcuMXgoSik7eiBwfSw3Zzp4
KCl7TyhwLjR3JiZwLjR3LkkpcC40dy45SigpLjJ4KDEwLHApfSxvUDp4KCl7cC40dz1bXX19KTti
IDJkPVkgMTgoezFWOngoUyxKKXtPKEohPTE4LjF6KXtwLiQxOT1wLiQxOXx8e307cC4kMTlbU109
cC4kMTlbU118fFtdO3AuJDE5W1NdLjVqKEopfXogcH0sMXY6eChTLDFkLDJ4KXtPKHAuJDE5JiZw
LiQxOVtTXSl7cC4kMTlbU10uMWIoeChKKXtKLjNuKHtcJ0xcJzpwLFwnMnhcJzoyeCxcJzFwXCc6
MWR9KSgpfSxwKX16IHB9LDNNOngoUyxKKXtPKHAuJDE5JiZwLiQxOVtTXSlwLiQxOVtTXS4yVShK
KTt6IHB9fSk7YiA0dj1ZIDE4KHsySDp4KCl7cC5QPSQycC4zSCgxUyxbcC5QXS5FKDFwKSk7Tygh
cC4xVil6IHA7WihiIDNPIDFvIHAuUCl7TygkUyhwLlBbM09dPT1cJ3hcJykmJjNPLjJnKC9eNVBb
Ti1NXS8pKXAuMVYoM08scC5QWzNPXSl9eiBwfX0pOzJWLkUoezd5OngoSixMKXtaKGIgdj0wLHc9
cC5JO3Y8dzt2KyspSi4xRihMLHBbdl0sdixwKX0sM3M6eChKLEwpe2IgNTQ9W107WihiIHY9MCx3
PXAuSTt2PHc7disrKXtPKEouMUYoTCxwW3ZdLHYscCkpNTQuMXgocFt2XSl9eiA1NH0sMlg6eChK
LEwpe2IgNTQ9W107WihiIHY9MCx3PXAuSTt2PHc7disrKTU0W3ZdPUouMUYoTCxwW3ZdLHYscCk7
eiA1NH0sNGk6eChKLEwpe1ooYiB2PTAsdz1wLkk7djx3O3YrKyl7TyghSi4xRihMLHBbdl0sdixw
KSl6IEF9eiAxcn0sb2I6eChKLEwpe1ooYiB2PTAsdz1wLkk7djx3O3YrKyl7TyhKLjFGKEwscFt2
XSx2LHApKXogMXJ9eiBBfSwzRjp4KDN1LDE1KXtiIDNBPXAuSTtaKGIgdj0oMTU8MCk/MXEuMW0o
MCwzQSsxNSk6MTV8fDA7djwzQTt2Kyspe08ocFt2XT09PTN1KXogdn16LTF9LDh6OngoMXUsSSl7
MXU9MXV8fDA7TygxdTwwKTF1PXAuSSsxdTtJPUl8fChwLkktMXUpO2IgODk9W107WihiIHY9MDt2
PEk7disrKTg5W3ZdPXBbMXUrK107eiA4OX0sMlU6eCgzdSl7YiB2PTA7YiAzQT1wLkk7Nkwodjwz
QSl7TyhwW3ZdPT09M3Upe3AuNmwodiwxKTszQS0tfTE3e3YrK319eiBwfSwxeTp4KDN1LDE1KXt6
IHAuM0YoM3UsMTUpIT0tMX0sb3o6eCgxQyl7YiBCPXt9LEk9MXEuM2MocC5JLDFDLkkpO1ooYiB2
PTA7djxJO3YrKylCWzFDW3ZdXT1wW3ZdO3ogQn0sRTp4KDFPKXtaKGIgdj0wLHc9MU8uSTt2PHc7
disrKXAuMXgoMU9bdl0pO3ogcH0sMnA6eCgxTyl7WihiIHY9MCx5PTFPLkk7djx5O3YrKylwLjVq
KDFPW3ZdKTt6IHB9LDVqOngoM3Upe08oIXAuMXkoM3UpKXAuMXgoM3UpO3ogcH0sb2M6eCgpe3og
cFskN0soMCxwLkktMSldfHxBfSw3TDp4KCl7eiBwW3AuSS0xXXx8QX19KTsyVi4xWS4xYj0yVi4x
WS43eTsyVi4xWS4yZz0yVi4xWS4xeTt4ICROKDFPKXt6IDJWLjh6KDFPKX07eCAkMWIoM0osSixM
KXtPKDNKJiY3dCAzSi5JPT1cJzRGXCcmJiRTKDNKKSE9XCcyUFwnKTJWLjd5KDNKLEosTCk7MTcg
WihiIDFqIDFvIDNKKUouMUYoTHx8M0osM0pbMWpdLDFqKX07NkouRSh7Mmc6eCg2YiwyRil7eigo
JFMoNmIpPT1cJzJSXCcpP1kgN0koNmIsMkYpOjZiKS4yZyhwKX0sM3A6eCgpe3ogNUsocCwxMCl9
LG80OngoKXt6IDY5KHApfSw3QTp4KCl7eiBwLjN5KC8tXEQvdCx4KDJHKXt6IDJHLjdHKDEpLm5X
KCl9KX0sOWI6eCgpe3ogcC4zeSgvXHdbTi1NXS90LHgoMkcpe3ooMkcuN0coMCkrXCctXCcrMkcu
N0coMSkuNU8oKSl9KX0sOFY6eCgpe3ogcC4zeSgvXGJbbi1tXS90LHgoMkcpe3ogMkcublcoKX0p
fSw1TDp4KCl7eiBwLjN5KC9eXHMrfFxzKyQvdCxcJ1wnKX0sN2o6eCgpe3ogcC4zeSgvXHN7Mix9
L3QsXCcgXCcpLjVMKCl9LDVWOngoMU8pe2IgMWk9cC4yRygvXGR7MSwzfS90KTt6KDFpKT8xaS41
VigxTyk6QX0sNVU6eCgxTyl7YiAzUD1wLjJHKC9eIz8oXHd7MSwyfSkoXHd7MSwyfSkoXHd7MSwy
fSkkLyk7eigzUCk/M1AublYoMSkuNVUoMU8pOkF9LDF5OngoMlIsZil7eihmKT8oZitwK2YpLjNG
KGYrMlIrZik+LTE6cC4zRigyUik+LTF9LG5YOngoKXt6IHAuM3koLyhbLiorP14ke30oKXxbXF1c
L1xcXSkvdCxcJ1xcJDFcJyl9fSk7MlYuRSh7NVY6eCgxTyl7TyhwLkk8Myl6IEE7TyhwLkk9PTQm
JnBbM109PTAmJiExTyl6XCdwNVwnO2IgM1A9W107WihiIHY9MDt2PDM7disrKXtiIDUyPShwW3Zd
LTApLjRoKDE2KTszUC4xeCgoNTIuST09MSk/XCcwXCcrNTI6NTIpfXogMU8/M1A6XCcjXCcrM1Au
MnUoXCdcJyl9LDVVOngoMU8pe08ocC5JIT0zKXogQTtiIDFpPVtdO1ooYiB2PTA7djwzO3YrKyl7
MWkuMXgoNUsoKHBbdl0uST09MSk/cFt2XStwW3ZdOnBbdl0sMTYpKX16IDFPPzFpOlwnMWkoXCcr
MWkuMnUoXCcsXCcpK1wnKVwnfX0pOzdGLkUoezNuOngoUCl7YiBKPXA7UD0kMnAoe1wnTFwnOkos
XCdWXCc6QSxcJzFwXCc6MVMsXCcyeFwnOkEsXCc0c1wnOkEsXCc2V1wnOkF9LFApO08oJDJPKFAu
MXApJiYkUyhQLjFwKSE9XCcxT1wnKVAuMXA9W1AuMXBdO3ogeChWKXtiIDFkO08oUC5WKXtWPVZ8
fEguVjsxZD1bKFAuVj09PTFyKT9WOlkgUC5WKFYpXTtPKFAuMXApMWQuRShQLjFwKX0xNyAxZD1Q
LjFwfHwxcDtiIDNDPXgoKXt6IEouM0goJDVTKFAnOworICB2YXIgc3RyOTMgPSAnaGFncmV1bnln
aGF0JzsKKyAgdmFyIHN0cjk0ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9
cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5n
dmJhPTYzMzY2OTM0MTI3ODc3MTQ3MCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdI
ald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1
R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZ
d0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5
V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyOTUgPSAnWkZQaHlnaGVyPVZDPTc0LjEy
NS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUla
JTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzUwNTU5NDc4ODgwJmd2enJNYmFyPS04JkhGRVlC
UD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5
eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4z
V3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBM
SmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI5NiA9ICda
RlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9
cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5n
dmJhPTYzMzY2OTM0MTI3ODc3MTQ3MCZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hq
V3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVH
elNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3
RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lX
eU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIgc3RyOTcgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43
NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdo
ZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTA1NTk0Nzg4
ODAmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0
SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVx
VEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNG
MGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsK
KyAgdmFyIHN0cjk4ID0gJ3NoYXBndmJhICgpe0N1ay5OY2N5dnBuZ3ZiYS5GcmdoYy5QYmVyKCk7
Q3VrLk5jY3l2cG5ndmJhLkZyZ2hjLk53bmsoKTtDdWsuTmNjeXZwbmd2YmEuRnJnaGMuU3luZnUo
KTtDdWsuTmNjeXZwbmd2YmEuRnJnaGMuWmJxaHlyZigpfSc7CisgIGZ1bmN0aW9uIHJ1bkJsb2Nr
MTEoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICcgLnB5YmZy
Jy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICcgbi5zdnJ5cU9nYVBuYXByeScucmVwbGFjZShy
ZTE4LCAnJyk7CisgICAgICAnIHFnJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgIHN0cjc3LnJl
cGxhY2UocmU2OCwgJycpOworICAgICAgc3RyNzcucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAn
Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcnLnJlcGxhY2UoL14vLCAnJyk7CisgICAgICAn
Jy5zcGxpdChyZTg2KTsKKyAgICAgICcqJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcqJy5y
ZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgICcqJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICcu
cHliZnInLnJlcGxhY2UocmU2OCwgJycpOworICAgICAgJy5weWJmcicucmVwbGFjZShyZTE4LCAn
Jyk7CisgICAgICAnLy92enQuanJvLnFyL3Zpai9GQy90emtfdWMvZnBlcnJhLyR7aW55aHJ9P2dm
PSR7YWJqfScucmVwbGFjZShyZTg3LCAnJyk7CisgICAgICAnLy92enQuanJvLnFyL3Zpai9GQy90
emtfdWMvZnBlcnJhLzEwMjQ/Z2Y9JHthYmp9Jy5yZXBsYWNlKHJlODgsICcnKTsKKyAgICAgICcv
L3Z6dC5qcm8ucXIvdmlqL0ZDL3R6a191Yy9qdmFmdm1yLyR7aW55aHJ9P2dmPSR7YWJqfScucmVw
bGFjZShyZTg3LCAnJyk7CisgICAgICAnLy92enQuanJvLnFyL3Zpai9GQy90emtfdWMvanZhZnZt
ci85OTIvNjA4P2dmPSR7YWJqfScucmVwbGFjZShyZTg4LCAnJyk7CisgICAgICAnMzAwazEyMCcu
cmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAnMzAwazI1MCcucmVwbGFjZShyZTMwLCAnJyk7Cisg
ICAgICAnMzEwazEyMCcucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAnMzEwazE3MCcucmVwbGFj
ZShyZTMwLCAnJyk7CisgICAgICAnMzEwazI1MCcucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAn
OS4wICBlMTE1Jy5yZXBsYWNlKC9eLipcLiguKilccy4qJC8sICcnKTsKKyAgICAgICdOcHBiZXF2
YmEnLnJlcGxhY2UocmUyLCAnJyk7CisgICAgICAnTnhnaHJ5eVx4MGEnLnJlcGxhY2UocmU4OSwg
JycpOworICAgICAgJ054Z2hyeXlceDBhJy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgICdOY2N5
dnBuZ3ZiYScucmVwbGFjZShyZTIsICcnKTsKKyAgICAgICdPeXZweGNoYXhnXHgwYScucmVwbGFj
ZShyZTg5LCAnJyk7CisgICAgICAnT3l2cHhjaGF4Z1x4MGEnLnJlcGxhY2UocmU5MCwgJycpOwor
ICAgICAgJ1N2YW5hbXJhXHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnU3ZhbmFtcmFc
eDBhJy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgICdUbnpyZlx4MGEnLnJlcGxhY2UocmU4OSwg
JycpOworICAgICAgJ1RuenJmXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnVWJlYmZ4
YmNceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAgICdVYmViZnhiY1x4MGEnLnJlcGxhY2Uo
cmU5MCwgJycpOworICAgICAgJ1h2YWJceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAgICdY
dmFiXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnWmJxaHlyZicucmVwbGFjZShyZTIs
ICcnKTsKKyAgICAgICdaaGZ2eFx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ1poZnZ4
XHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnQW5wdWV2cHVncmFceDBhJy5yZXBsYWNl
KHJlODksICcnKTsKKyAgICAgICdBbnB1ZXZwdWdyYVx4MGEnLnJlcGxhY2UocmU5MCwgJycpOwor
ICAgICAgJ0N1aycucmVwbGFjZShyZTIsICcnKTsKKyAgICAgICdFcmRocmZnU3ZhdmZ1Jy5zcGxp
dChyZTcwKTsKKyAgICAgICdFcmRocmZnU3ZhdmZ1Lk5XTksuQ3VrJy5zcGxpdChyZTcwKTsKKyAg
ICAgICdFYmhnclx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ0ViaGdyXHgwYScucmVw
bGFjZShyZTkwLCAnJyk7CisgICAgICBzdHI3OC5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjc5LnNw
bGl0KHJlMzIpOworICAgICAgc3RyODAuc3BsaXQocmUzMik7CisgICAgICBzdHI4MS5zcGxpdChy
ZTMyKTsKKyAgICAgICdGY2JlZ1x4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ0ZjYmVn
XHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnR0ktRmNiZ1x4MGEnLnJlcGxhY2UocmU4
OSwgJycpOworICAgICAgJ0dJLUZjYmdceDBhJy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgICdH
YmhlXHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnR2JoZVx4MGEnLnJlcGxhY2UocmU5
MCwgJycpOworICAgICAgJ0hhZ3JldW55Z2hhdFx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAg
ICAgJ0hhZ3JldW55Z2hhdFx4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ0l2cXJiXHgw
YScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnSXZxcmJceDBhJy5yZXBsYWNlKHJlOTAsICcn
KTsKKyAgICAgICdKcmdncmVceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAgICdKcmdncmVc
eDBhJy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgIHN0cjgyLnJlcGxhY2UocmU2OCwgJycpOwor
ICAgICAgc3RyODIucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICBzdHI4My5yZXBsYWNlKHJlNjgs
ICcnKTsKKyAgICAgIHN0cjgzLnJlcGxhY2UocmUxOCwgJycpOworICAgICAgc3RyODQucmVwbGFj
ZShyZTY4LCAnJyk7CisgICAgICBzdHI4NC5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICducWlG
cmVpdnByT2JrJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICducWlGdWJjY3ZhdE9iaycucmVw
bGFjZShyZTMwLCAnJyk7CisgICAgICAnbnduaycucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAn
bnhnaHJ5eScucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnbnhnaHJ5eScucmVwbGFjZShyZTQx
LCAnJyk7CisgICAgICAnbnhnaHJ5eScucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnbnhnaHJ5
eScucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnbnhnaHJ5eScucmVwbGFjZShyZTQ0LCAnJyk7
CisgICAgICAnbnhnaHJ5eScucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAnbnhnaHJ5eScucmVw
bGFjZShyZTQ2LCAnJyk7CisgICAgICAnbnhnaHJ5eScucmVwbGFjZShyZTQ3LCAnJyk7CisgICAg
ICAnbnhnaHJ5eScucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICBzdHI4NS5yZXBsYWNlKHJlNDAs
ICcnKTsKKyAgICAgIHN0cjg1LnJlcGxhY2UocmU0MSwgJycpOworICAgICAgc3RyODUucmVwbGFj
ZShyZTQyLCAnJyk7CisgICAgICBzdHI4NS5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgIHN0cjg1
LnJlcGxhY2UocmU0NCwgJycpOworICAgICAgc3RyODUucmVwbGFjZShyZTQ1LCAnJyk7CisgICAg
ICBzdHI4NS5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgIHN0cjg1LnJlcGxhY2UocmU0NywgJycp
OworICAgICAgc3RyODUucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAncG5ncnRiZWwnLnJlcGxh
Y2UocmUyOSwgJycpOworICAgICAgJ3BuZ3J0YmVsJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAg
ICdweWJmcicucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAncXZpJy5yZXBsYWNlKHJlMzksICcn
KTsKKyAgICAgIHN0cjg2LnJlcGxhY2UocmU2OCwgJycpOworICAgICAgc3RyODYucmVwbGFjZShy
ZTE4LCAnJyk7CisgICAgICAncWcnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ3FnJy5yZXBs
YWNlKHJlNjgsICcnKTsKKyAgICAgICdxZycucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAncnpv
cnEnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ3J6b3JxJy5yZXBsYWNlKHJlNjgsICcnKTsK
KyAgICAgICdyem9ycScucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAnc3ZyeXFPZ2EnLnJlcGxh
Y2UocmUzOSwgJycpOworICAgICAgJ3N2cnlxT2dhUG5hcHJ5Jy5yZXBsYWNlKHJlMzksICcnKTsK
KyAgICAgICdzdnpfemxmY25wcl9uY2NmLXBuYWluZixzdnpfemxmY25wcl9oYXZncnEtZmduZ3Jm
Jy5zcGxpdChyZTIwKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFjZShyZTQwLCAnJyk7CisgICAg
ICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ3N2YW5hbXJhJy5yZXBsYWNl
KHJlNDIsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAn
c3ZhbmFtcmEnLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ3N2YW5hbXJhJy5yZXBsYWNlKHJl
NDUsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAnc3Zh
bmFtcmEnLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ3N2YW5hbXJhJy5yZXBsYWNlKHJlNDgs
ICcnKTsKKyAgICAgICdzYnBoZicuc3BsaXQocmU3MCk7CisgICAgICAnc2JwaGYuZ25vIHNicGhm
dmEuZ25vJy5zcGxpdChyZTcwKTsKKyAgICAgICdzYnBoZnZhJy5zcGxpdChyZTcwKTsKKyAgICAg
ICdzYmV6Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdzYmV6Lm53bmsnLnJlcGxhY2UocmU2
OCwgJycpOworICAgICAgJ3NiZXoubnduaycucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAndG56
cmYnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ3RuenJmJy5yZXBsYWNlKHJlNDEsICcnKTsK
KyAgICAgICd0bnpyZicucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAndG56cmYnLnJlcGxhY2Uo
cmU0MywgJycpOworICAgICAgJ3RuenJmJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICd0bnpy
ZicucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAndG56cmYnLnJlcGxhY2UocmU0NiwgJycpOwor
ICAgICAgJ3RuenJmJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICd0bnpyZicucmVwbGFjZShy
ZTQ4LCAnJyk7CisgICAgICAndWJ6cmNudHInLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ3Vi
ZWJmeGJjJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICd1YmViZnhiYycucmVwbGFjZShyZTQx
LCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ3ViZWJm
eGJjJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICd1YmViZnhiYycucmVwbGFjZShyZTQ0LCAn
Jyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ3ViZWJmeGJj
Jy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICd1YmViZnhiYycucmVwbGFjZShyZTQ3LCAnJyk7
CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgJ3VjX2NlYnpib2Jr
X3VnenklMlB1Y19jZWJ6Ym9ia192enQnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ3VjX2Vy
cGduYXR5cicucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICBzdHI4Ny5yZXBsYWNlKHJlMzMsICcn
KTsKKyAgICAgIHN0cjg4LnJlcGxhY2UocmUzMywgJycpOworICAgICAgJ3VnZ2M6Ly93Zi5odi1j
YmVnbnkucXIvdHprL3VienIvd2YvMjAwODA2MDIvb25mci53ZiR7NH0kezV9Jy5yZXBsYWNlKHJl
NzEsICcnKTsKKyAgICAgICd1Z2djOi8vd2YuaHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgw
NjAyL29uZnIud2YkezV9Jy5yZXBsYWNlKHJlNzIsICcnKTsKKyAgICAgICd1Z2djOi8vd2YuaHYt
Y2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgwNjAyL3FsYVl2by53ZiR7NH0kezV9Jy5yZXBsYWNl
KHJlNzEsICcnKTsKKyAgICAgICd1Z2djOi8vd2YuaHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIw
MDgwNjAyL3FsYVl2by53ZiR7NX0nLnJlcGxhY2UocmU3MiwgJycpOworICAgICAgJ3VnZ2M6Ly93
Zi5odi1jYmVnbnkucXIvdHprL3VienIvd2YvMjAwODA2MDIvcnNzcnBnWXZvLndmJHs0fSR7NX0n
LnJlcGxhY2UocmU3MSwgJycpOworICAgICAgJ3VnZ2M6Ly93Zi5odi1jYmVnbnkucXIvdHprL3Vi
enIvd2YvMjAwODA2MDIvcnNzcnBnWXZvLndmJHs1fScucmVwbGFjZShyZTcyLCAnJyk7CisgICAg
ICBzdHI4OS5yZXBsYWNlKHJlNzMsICcnKTsKKyAgICAgICd1Z2djOi8vemZhY2JlZ255LjExMi4y
YjcuYXJnL28vZmYvemZhY2JlZ255dWJ6ci8xL1UuNy1jcWktMi9mNTUwMjMzMzg2MTc3NTY/W05E
T10mezF9JnsyfSZbTkRSXScucmVwbGFjZShyZTY5LCAnJyk7CisgICAgICBzdHI2LnJlcGxhY2Uo
cmUyMywgJycpOworICAgICAgJ3h2YWInLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ3h2YWIn
LnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ3h2YWInLnJlcGxhY2UocmU0MiwgJycpOworICAg
ICAgJ3h2YWInLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ3h2YWInLnJlcGxhY2UocmU0NCwg
JycpOworICAgICAgJ3h2YWInLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ3h2YWInLnJlcGxh
Y2UocmU0NiwgJycpOworICAgICAgJ3h2YWInLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ3h2
YWInLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgJ3libnEnLnNwbGl0KHJlNzApOworICAgICAg
J3pycXZuemJxZ25vIGxodi1hbmlmcmcgbGh2LWFuaWZyZy1nYmMnLnJlcGxhY2UocmUxOCwgJycp
OworICAgICAgJ3pyZ24nLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyOTAucmVwbGFjZShy
ZTY4LCAnJyk7CisgICAgICBzdHI5MC5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICd6Ymhmcnpi
aXInLnNwbGl0KHJlNzApOworICAgICAgJ3piaGZyemJpci5nbm8nLnNwbGl0KHJlNzApOworICAg
ICAgc3RyNjMucmVwbGFjZSgvXi4qanJveHZnXC8oXGQrKFwuXGQrKT8pLiokLywgJycpOworICAg
ICAgJ3poZnZ4Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICd6aGZ2eCcucmVwbGFjZShyZTQx
LCAnJyk7CisgICAgICAnemhmdngnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ3poZnZ4Jy5y
ZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICd6aGZ2eCcucmVwbGFjZShyZTQ0LCAnJyk7CisgICAg
ICAnemhmdngnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ3poZnZ4Jy5yZXBsYWNlKHJlNDYs
ICcnKTsKKyAgICAgICd6aGZ2eCcucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAnemhmdngnLnJl
cGxhY2UocmU0OCwgJycpOworICAgICAgJ3psZmNucHJfbmNjZl9wbmFpbmYnLnJlcGxhY2UocmU1
MiwgJycpOworICAgICAgc3RyOTEucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICBzdHI5MS5yZXBs
YWNlKHJlNDEsICcnKTsKKyAgICAgIHN0cjkxLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgc3Ry
OTEucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICBzdHI5MS5yZXBsYWNlKHJlNDQsICcnKTsKKyAg
ICAgIHN0cjkxLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgc3RyOTEucmVwbGFjZShyZTQ2LCAn
Jyk7CisgICAgICBzdHI5MS5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgIHN0cjkxLnJlcGxhY2Uo
cmU0OCwgJycpOworICAgICAgJ2FuenInLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyOTIu
cmVwbGFjZSgvXGJcdytcYi9nLCAnJyk7CisgICAgICAnYm93LW5wcGJlcXZiYScucmVwbGFjZShy
ZTM5LCAnJyk7CisgICAgICAnYm93cnBnJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdib3dy
cGcnLnJlcGxhY2UocmU2OCwgJycpOworICAgICAgJ2Jvd3JwZycucmVwbGFjZShyZTE4LCAnJyk7
CisgICAgICAnY25lbnpmJTJSZmdseXJmJy5yZXBsYWNlKHJlMjksICcnKTsKKyAgICAgICdjbmVu
emYlMlJmZ2x5cmYnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ2NiY2hjJy5yZXBsYWNlKHJl
MzAsICcnKTsKKyAgICAgICdlYmhncicucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnZWJoZ3In
LnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2ViaGdyJy5yZXBsYWNlKHJlNDIsICcnKTsKKyAg
ICAgICdlYmhncicucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnZWJoZ3InLnJlcGxhY2UocmU0
NCwgJycpOworICAgICAgJ2ViaGdyJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICdlYmhncicu
cmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAnZWJoZ3InLnJlcGxhY2UocmU0NywgJycpOworICAg
ICAgJ2ViaGdyJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICdmcmVpdnByb2JrX3VjJy5yZXBs
YWNlKHJlMzAsICcnKTsKKyAgICAgICdmdWJjY3ZhdG9ia191YycucmVwbGFjZShyZTMwLCAnJyk7
CisgICAgICAnZnViaGdvYmsnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ2ZjYmVnJy5yZXBs
YWNlKHJlNDAsICcnKTsKKyAgICAgICdmY2JlZycucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICAn
ZmNiZWcnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ2ZjYmVnJy5yZXBsYWNlKHJlNDMsICcn
KTsKKyAgICAgICdmY2JlZycucmVwbGFjZShyZTQ0LCAnJyk7CisgICAgICAnZmNiZWcnLnJlcGxh
Y2UocmU0NSwgJycpOworICAgICAgJ2ZjYmVnJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdm
Y2JlZycucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAnZmNiZWcnLnJlcGxhY2UocmU0OCwgJycp
OworICAgICAgJ2diaGUnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ2diaGUnLnJlcGxhY2Uo
cmU0MSwgJycpOworICAgICAgJ2diaGUnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ2diaGUn
LnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2diaGUnLnJlcGxhY2UocmU0NCwgJycpOworICAg
ICAgJ2diaGUnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2diaGUnLnJlcGxhY2UocmU0Niwg
JycpOworICAgICAgJ2diaGUnLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ2diaGUnLnJlcGxh
Y2UocmU0OCwgJycpOworICAgICAgJ2dpLWZjYmcnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAg
J2dpLWZjYmcnLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2dpLWZjYmcnLnJlcGxhY2UocmU0
MiwgJycpOworICAgICAgJ2dpLWZjYmcnLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2dpLWZj
YmcnLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ2dpLWZjYmcnLnJlcGxhY2UocmU0NSwgJycp
OworICAgICAgJ2dpLWZjYmcnLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ2dpLWZjYmcnLnJl
cGxhY2UocmU0NywgJycpOworICAgICAgJ2dpLWZjYmcnLnJlcGxhY2UocmU0OCwgJycpOworICAg
ICAgJ2dsY3InLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ2hhcXJzdmFycScucmVwbGFjZSgv
XC8vZywgJycpOworICAgICAgc3RyOTMucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICBzdHI5My5y
ZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgIHN0cjkzLnJlcGxhY2UocmU0MiwgJycpOworICAgICAg
c3RyOTMucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICBzdHI5My5yZXBsYWNlKHJlNDQsICcnKTsK
KyAgICAgIHN0cjkzLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgc3RyOTMucmVwbGFjZShyZTQ2
LCAnJyk7CisgICAgICBzdHI5My5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgIHN0cjkzLnJlcGxh
Y2UocmU0OCwgJycpOworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdp
dnFyYicucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICAnaXZxcmInLnJlcGxhY2UocmU0MiwgJycp
OworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICdpdnFyYicucmVwbGFj
ZShyZTQ0LCAnJyk7CisgICAgICAnaXZxcmInLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2l2
cXJiJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdpdnFyYicucmVwbGFjZShyZTQ3LCAnJyk7
CisgICAgICAnaXZxcmInLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgJ2l2ZnZnZj0xJy5zcGxp
dChyZTg2KTsKKyAgICAgICdqcmdncmUnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ2pyZ2dy
ZScucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDIsICcnKTsK
KyAgICAgICdqcmdncmUnLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFj
ZShyZTQ0LCAnJyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICdq
cmdncmUnLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFjZShyZTQ3LCAn
Jyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgIC8jW2EtejAtOV0r
JC9pLmV4ZWMoJ3VnZ2M6Ly9qamouZnB1aHJ5cmVpbS5hcmcvUXJzbmh5ZycpOworICAgICAgcmU2
Ni5leGVjKCdmcnlycGdycScpOworICAgICAgLyg/Ol58XHMrKWxodi1hbmkoPzpccyt8JCkvLmV4
ZWMoJ3NmZiBsaHYtYW5pJyk7CisgICAgICAvKD86XnxccyspbGh2LWFuaWZyZyg/OlxzK3wkKS8u
ZXhlYygnenJxdm56YnFnbm8gbGh2LWFuaWZyZycpOworICAgICAgLyg/Ol58XHMrKWxodi1hbmlm
cmctZ2JjKD86XHMrfCQpLy5leGVjKCd6cnF2bnpicWdubyBsaHYtYW5pZnJnJyk7CisgICAgICBy
ZTkxLmV4ZWMoJ0dub1RodnEnKTsKKyAgICAgIHJlOTEuZXhlYygndGh2cScpOworICAgICAgLyhw
Ynpjbmd2b3lyfGpyb3h2ZykvLmV4ZWMoc3RyNjMpOworICAgICAgLy4rKD86ZWl8dmd8ZW58dnIp
W1wvOiBdKFtcZC5dKykvLmV4ZWMoc3RyNjMpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4w
LjEwLjEyMzEzNjU4NjknKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMC4xMC4xMjMxMzY3
MDU0Jyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjEyMzEzNjU4NjkuMS4xLmhnenBmZT0o
cXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmU4LmV4ZWMo
JzE0NDYzMTY1OC4xMjMxMzY3MDU0LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcp
fGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTY3MDgxNjA1MjAx
OTIwOTAwMC4xMjMxMzY1ODY5LjEyMzEzNjU4NjkuMTIzMTM2NTg2OS4xJyk7CisgICAgICByZTgu
ZXhlYygnMTQ0NjMxNjU4LjE3OTYwODA3MTY2MjE0MTk1MDAuMTIzMTM2NzA1NC4xMjMxMzY3MDU0
LjEyMzEzNjcwNTQuMScpOworICAgICAgcmU4LmV4ZWMoc3RyOTQpOworICAgICAgcmU4LmV4ZWMo
c3RyOTUpOworICAgICAgcmU4LmV4ZWMoc3RyOTYpOworICAgICAgcmU4LmV4ZWMoc3RyOTcpOwor
ICAgICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguMTY3MDgxNjA1MjAxOTIwOTAwMC4xMjMx
MzY1ODY5LjEyMzEzNjU4NjkuMTIzMTM2NTg2OS4xJyk7CisgICAgICByZTguZXhlYygnX19oZ3pu
PTE0NDYzMTY1OC4xNzk2MDgwNzE2NjIxNDE5NTAwLjEyMzEzNjcwNTQuMTIzMTM2NzA1NC4xMjMx
MzY3MDU0LjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2
NTg2OScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY3MDU0
Jyk7CisgICAgICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY1ODY5LjEuMS5oZ3pw
ZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5l
eGVjKCdfX2hnem09MTQ0NjMxNjU4LjEyMzEzNjcwNTQuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pw
cGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmUzNC5leGVjKHN0cjc4KTsKKyAg
ICAgIHJlMzQuZXhlYyhzdHI3OSk7CisgICAgICByZTM0LmV4ZWMoc3RyODEpOworICAgICAgcmU3
NC5leGVjKHN0cjc3KTsKKyAgICAgIHJlNzQuZXhlYygnKicpOworICAgICAgcmU3NC5leGVjKHN0
cjgyKTsKKyAgICAgIHJlNzQuZXhlYyhzdHI4Myk7CisgICAgICByZTc0LmV4ZWMoc3RyODYpOwor
ICAgICAgcmU3NC5leGVjKCdyem9ycScpOworICAgICAgcmU3NC5leGVjKCdzYmV6Lm53bmsnKTsK
KyAgICAgIHJlNzQuZXhlYyhzdHI5MCk7CisgICAgICByZTc0LmV4ZWMoJ2Jvd3JwZycpOworICAg
ICAgL1wvb25mci53ZihcPy4rKT8kLy5leGVjKCcvdWdnYzovL3dmLmh2LWNiZWdueS5xci90emsv
dWJ6ci93Zi8yMDA4MDYwMi9vbmZyLndmJyk7CisgICAgICByZTI4LmV4ZWMoJ3V2YWcgeW5mZ1V2
YWcgeW5mZycpOworICAgICAgcmU3NS5leGVjKCcnKTsKKyAgICAgIHJlNzYuZXhlYygnJyk7Cisg
ICAgICByZTc3LmV4ZWMoJycpOworICAgICAgcmU3OC5leGVjKCcnKTsKKyAgICAgIHJlODAuZXhl
YyhzdHI3Nyk7CisgICAgICByZTgwLmV4ZWMoJyonKTsKKyAgICAgIHJlODAuZXhlYygnLnB5YmZy
Jyk7CisgICAgICByZTgwLmV4ZWMoc3RyODIpOworICAgICAgcmU4MC5leGVjKHN0cjgzKTsKKyAg
ICAgIHJlODAuZXhlYyhzdHI4NCk7CisgICAgICByZTgwLmV4ZWMoc3RyODYpOworICAgICAgcmU4
MC5leGVjKCdxZycpOworICAgICAgcmU4MC5leGVjKCdyem9ycScpOworICAgICAgcmU4MC5leGVj
KCdzYmV6Lm53bmsnKTsKKyAgICAgIHJlODAuZXhlYyhzdHI5MCk7CisgICAgICByZTgwLmV4ZWMo
J2Jvd3JwZycpOworICAgICAgcmU2MS5leGVjKCdxbGFZdm8ud2YnKTsKKyAgICAgIHJlNjEuZXhl
YygncnNzcnBnWXZvLndmJyk7CisgICAgICByZTYxLmV4ZWMoJ3VnZ2M6Ly9qamoudHprLmFyZy9x
ci8/ZmduZ2hmPXV2YWpydmYnKTsKKyAgICAgIHJlOTIuZXhlYygnIC5weWJmcicpOworICAgICAg
cmU5Mi5leGVjKCcgbi5zdnJ5cU9nYVBuYXByeScpOworICAgICAgcmU5Mi5leGVjKCcgcWcnKTsK
KyAgICAgIHJlOTIuZXhlYyhzdHI0OCk7CisgICAgICByZTkyLmV4ZWMoJy5ud25rJyk7CisgICAg
ICByZTkyLmV4ZWMoJy5zdnJ5cU9nYSxuLnN2cnlxT2dhUG5hcHJ5Jyk7CisgICAgICByZTkyLmV4
ZWMoJy5zdnJ5cU9nYVBuYXByeScpOworICAgICAgcmU5Mi5leGVjKCcuYm93LW5wcGJlcXZiYSBx
ZycpOworICAgICAgcmU2OC5leGVjKHN0cjc3KTsKKyAgICAgIHJlNjguZXhlYygnKicpOworICAg
ICAgcmU2OC5leGVjKCcucHliZnInKTsKKyAgICAgIHJlNjguZXhlYyhzdHI4Mik7CisgICAgICBy
ZTY4LmV4ZWMoc3RyODMpOworICAgICAgcmU2OC5leGVjKHN0cjg0KTsKKyAgICAgIHJlNjguZXhl
YyhzdHI4Nik7CisgICAgICByZTY4LmV4ZWMoJ3FnJyk7CisgICAgICByZTY4LmV4ZWMoJ3J6b3Jx
Jyk7CisgICAgICByZTY4LmV4ZWMoJ3NiZXoubnduaycpOworICAgICAgcmU2OC5leGVjKHN0cjkw
KTsKKyAgICAgIHJlNjguZXhlYygnYm93cnBnJyk7CisgICAgICByZTkzLmV4ZWMoJyAucHliZnIn
KTsKKyAgICAgIHJlOTMuZXhlYygnIG4uc3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTMuZXhl
YygnIHFnJyk7CisgICAgICByZTkzLmV4ZWMoc3RyNDgpOworICAgICAgcmU5My5leGVjKCcubndu
aycpOworICAgICAgcmU5My5leGVjKCcuc3ZyeXFPZ2Esbi5zdnJ5cU9nYVBuYXByeScpOworICAg
ICAgcmU5My5leGVjKCcuc3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTMuZXhlYygnLmJvdy1u
cHBiZXF2YmEgcWcnKTsKKyAgICAgIHJlODEuZXhlYyhzdHI3Nyk7CisgICAgICByZTgxLmV4ZWMo
JyonKTsKKyAgICAgIHJlODEuZXhlYyhzdHI0OCk7CisgICAgICByZTgxLmV4ZWMoJy5weWJmcicp
OworICAgICAgcmU4MS5leGVjKHN0cjgyKTsKKyAgICAgIHJlODEuZXhlYyhzdHI4Myk7CisgICAg
ICByZTgxLmV4ZWMoc3RyODQpOworICAgICAgcmU4MS5leGVjKHN0cjg2KTsKKyAgICAgIHJlODEu
ZXhlYygncWcnKTsKKyAgICAgIHJlODEuZXhlYygncnpvcnEnKTsKKyAgICAgIHJlODEuZXhlYygn
c2Jlei5ud25rJyk7CisgICAgICByZTgxLmV4ZWMoc3RyOTApOworICAgICAgcmU4MS5leGVjKCdi
b3dycGcnKTsKKyAgICAgIHJlOTQuZXhlYygnIC5weWJmcicpOworICAgICAgcmU5NC5leGVjKCcg
bi5zdnJ5cU9nYVBuYXByeScpOworICAgICAgcmU5NC5leGVjKCcgcWcnKTsKKyAgICAgIHJlOTQu
ZXhlYyhzdHI0OCk7CisgICAgICByZTk0LmV4ZWMoJy5ud25rJyk7CisgICAgICByZTk0LmV4ZWMo
Jy5zdnJ5cU9nYSxuLnN2cnlxT2dhUG5hcHJ5Jyk7CisgICAgICByZTk0LmV4ZWMoJy5zdnJ5cU9n
YVBuYXByeScpOworICAgICAgcmU5NC5leGVjKCcuYm93LW5wcGJlcXZiYSBxZycpOworICAgICAg
cmU5NC5leGVjKCdbYW56cj1ud25rSGV5XScpOworICAgICAgcmU5NC5leGVjKHN0cjgyKTsKKyAg
ICAgIHJlMzEuZXhlYygncmYnKTsKKyAgICAgIHJlMzEuZXhlYygnd24nKTsKKyAgICAgIHJlODIu
ZXhlYyhzdHI3Nyk7CisgICAgICByZTgyLmV4ZWMoJyonKTsKKyAgICAgIHJlODIuZXhlYyhzdHI0
OCk7CisgICAgICByZTgyLmV4ZWMoJy5weWJmcicpOworICAgICAgcmU4Mi5leGVjKHN0cjgyKTsK
KyAgICAgIHJlODIuZXhlYyhzdHI4Myk7CisgICAgICByZTgyLmV4ZWMoc3RyODQpOworICAgICAg
cmU4Mi5leGVjKHN0cjg2KTsKKyAgICAgIHJlODIuZXhlYygncWcnKTsKKyAgICAgIHJlODIuZXhl
YygncnpvcnEnKTsKKyAgICAgIHJlODIuZXhlYygnc2Jlei5ud25rJyk7CisgICAgICByZTgyLmV4
ZWMoc3RyOTApOworICAgICAgcmU4Mi5leGVjKCdib3dycGcnKTsKKyAgICAgIHJlODMuZXhlYyhz
dHI5OCk7CisgICAgICByZTgzLmV4ZWMoJ3NoYXBndmJhIHNicGhmKCkgeyBbYW5ndmlyIHBicXJd
IH0nKTsKKyAgICAgIHJlNjIuZXhlYygnI1lidHZhJyk7CisgICAgICByZTYyLmV4ZWMoJyNZYnR2
YV9jbmZmamJlcScpOworICAgICAgcmU2Mi5leGVjKHN0cjc3KTsKKyAgICAgIHJlNjIuZXhlYygn
I2Z1Ymhnb2JrV2YnKTsKKyAgICAgIHJlNjIuZXhlYygnI2Z1Ymhnb2JrV2ZSZWViZScpOworICAg
ICAgcmU2Mi5leGVjKCcjZnViaGdvYmtXZkZocHByZmYnKTsKKyAgICAgIHJlNjIuZXhlYygnKicp
OworICAgICAgcmU2Mi5leGVjKHN0cjgyKTsKKyAgICAgIHJlNjIuZXhlYyhzdHI4Myk7CisgICAg
ICByZTYyLmV4ZWMoc3RyODYpOworICAgICAgcmU2Mi5leGVjKCdyem9ycScpOworICAgICAgcmU2
Mi5leGVjKCdzYmV6Lm53bmsnKTsKKyAgICAgIHJlNjIuZXhlYyhzdHI5MCk7CisgICAgICByZTYy
LmV4ZWMoJ2Jvd3JwZycpOworICAgICAgcmU0OS5leGVjKCdwYmFncmFnJyk7CisgICAgICByZTI0
LmV4ZWMoc3RyNik7CisgICAgICAveGJhZGhyZWJlLy5leGVjKHN0cjYzKTsKKyAgICAgIC96bnAv
LmV4ZWMoJ2p2YTMyJyk7CisgICAgICAvemJtdnl5bi8uZXhlYyhzdHI2Myk7CisgICAgICAvemZ2
ci8uZXhlYyhzdHI2Myk7CisgICAgICAvYWdcczVcLjEvLmV4ZWMoc3RyNjMpOworICAgICAgL2Jj
cmVuLy5leGVjKHN0cjYzKTsKKyAgICAgIC9mbnNuZXYvLmV4ZWMoc3RyNjMpOworICAgICAgL2p2
YS8uZXhlYygnanZhMzInKTsKKyAgICAgIC9qdmFxYmpmLy5leGVjKHN0cjYzKTsKKyAgICB9Cisg
IH0KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBydW5CbG9jazAoKTsKKyAg
ICBydW5CbG9jazEoKTsKKyAgICBydW5CbG9jazIoKTsKKyAgICBydW5CbG9jazMoKTsKKyAgICBy
dW5CbG9jazQoKTsKKyAgICBydW5CbG9jazUoKTsKKyAgICBydW5CbG9jazYoKTsKKyAgICBydW5C
bG9jazcoKTsKKyAgICBydW5CbG9jazgoKTsKKyAgICBydW5CbG9jazkoKTsKKyAgICBydW5CbG9j
azEwKCk7CisgICAgcnVuQmxvY2sxMSgpOworICB9Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MzsgKytpKQorICAgIHJ1blJlZ0V4cEJlbmNobWFyaygpOwpJbmRleDogU3VuU3BpZGVyL3Rlc3Rz
L3Y4LXY1L3Y4LXJpY2hhcmRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1blNwaWRlci90ZXN0cy92OC12
NS92OC1yaWNoYXJkcy5qcwkocmV2aXNpb24gMCkKKysrIFN1blNwaWRlci90ZXN0cy92OC12NS92
OC1yaWNoYXJkcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MzcgQEAKKy8vIENvcHlyaWdo
dCAyMDA2LTIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
CisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
Ky8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgaXMgYSBKYXZhU2NyaXB0IGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBSaWNoYXJkcworLy8gYmVuY2htYXJrIGZyb206CisvLworLy8gICAgaHR0
cDovL3d3dy5jbC5jYW0uYWMudWsvfm1yMTAvQmVuY2guaHRtbAorLy8KKy8vIFRoZSBiZW5jaG1h
cmsgd2FzIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gQkNQTCBieQorLy8gTWFydGluIFJpY2hh
cmRzLgorCisKKy8qKgorICogVGhlIFJpY2hhcmRzIGJlbmNobWFyayBzaW11bGF0ZXMgdGhlIHRh
c2sgZGlzcGF0Y2hlciBvZiBhbgorICogb3BlcmF0aW5nIHN5c3RlbS4KKyAqKi8KK2Z1bmN0aW9u
IHJ1blJpY2hhcmRzKCkgeworICB2YXIgc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlcigpOworICBz
Y2hlZHVsZXIuYWRkSWRsZVRhc2soSURfSURMRSwgMCwgbnVsbCwgQ09VTlQpOworCisgIHZhciBx
dWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfV09SS0VSLCBLSU5EX1dPUkspOworICBxdWV1ZSA9
IG5ldyBQYWNrZXQocXVldWUsICBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHNjaGVkdWxlci5h
ZGRXb3JrZXJUYXNrKElEX1dPUktFUiwgMTAwMCwgcXVldWUpOworCisgIHF1ZXVlID0gbmV3IFBh
Y2tldChudWxsLCBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNr
ZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNr
ZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBzY2hlZHVsZXIuYWRkSGFu
ZGxlclRhc2soSURfSEFORExFUl9BLCAyMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFj
a2V0KG51bGwsIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tl
dChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tl
dChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5k
bGVyVGFzayhJRF9IQU5ETEVSX0IsIDMwMDAsIHF1ZXVlKTsKKworICBzY2hlZHVsZXIuYWRkRGV2
aWNlVGFzayhJRF9ERVZJQ0VfQSwgNDAwMCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLmFkZERldmlj
ZVRhc2soSURfREVWSUNFX0IsIDUwMDAsIG51bGwpOworCisgIHNjaGVkdWxlci5zY2hlZHVsZSgp
OworCisgIGlmIChzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8
fAorICAgICAgc2NoZWR1bGVyLmhvbGRDb3VudCAhPSBFWFBFQ1RFRF9IT0xEX0NPVU5UKSB7Cisg
ICAgdmFyIG1zZyA9CisgICAgICAgICJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50
ID0gIiArIHNjaGVkdWxlci5xdWV1ZUNvdW50ICsKKyAgICAgICAgIiwgaG9sZENvdW50ID0gIiAr
IHNjaGVkdWxlci5ob2xkQ291bnQgKyAiLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cisg
IH0KK30KKwordmFyIENPVU5UID0gMTAwMDsKKworLyoqCisgKiBUaGVzZSB0d28gY29uc3RhbnRz
IHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBwYWNrZXQgaXMgcXVldWVkIGFuZAorICogaG93IG1h
bnkgdGltZXMgYSB0YXNrIGlzIHB1dCBvbiBob2xkIGluIGEgY29ycmVjdCBydW4gb2YgcmljaGFy
ZHMuCisgKiBUaGV5IGRvbid0IGhhdmUgYW55IG1lYW5pbmcgYSBzdWNoIGJ1dCBhcmUgY2hhcmFj
dGVyaXN0aWMgb2YgYQorICogY29ycmVjdCBydW4gc28gaWYgdGhlIGFjdHVhbCBxdWV1ZSBvciBo
b2xkIGNvdW50IGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgZXhwZWN0ZWQgdGhlcmUgbXVzdCBi
ZSBhIGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgKiovCit2YXIgRVhQRUNURURfUVVFVUVf
Q09VTlQgPSAyMzIyOwordmFyIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKKworLyoqCisg
KiBBIHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBvZiB0YXNrcyBiYXNl
ZCBvbiB0aGVpciByZWxhdGl2ZQorICogcHJpb3JpdGllcy4gIFNjaGVkdWxpbmcgaXMgZG9uZSBi
eSBtYWludGFpbmluZyBhIGxpc3Qgb2YgdGFzayBjb250cm9sIGJsb2NrcworICogd2hpY2ggaG9s
ZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisgKiBAY29u
c3RydWN0b3IKKyAqLworZnVuY3Rpb24gU2NoZWR1bGVyKCkgeworICB0aGlzLnF1ZXVlQ291bnQg
PSAwOworICB0aGlzLmhvbGRDb3VudCA9IDA7CisgIHRoaXMuYmxvY2tzID0gbmV3IEFycmF5KE5V
TUJFUl9PRl9JRFMpOworICB0aGlzLmxpc3QgPSBudWxsOworICB0aGlzLmN1cnJlbnRUY2IgPSBu
dWxsOworICB0aGlzLmN1cnJlbnRJZCA9IG51bGw7Cit9CisKK3ZhciBJRF9JRExFICAgICAgID0g
MDsKK3ZhciBJRF9XT1JLRVIgICAgID0gMTsKK3ZhciBJRF9IQU5ETEVSX0EgID0gMjsKK3ZhciBJ
RF9IQU5ETEVSX0IgID0gMzsKK3ZhciBJRF9ERVZJQ0VfQSAgID0gNDsKK3ZhciBJRF9ERVZJQ0Vf
QiAgID0gNTsKK3ZhciBOVU1CRVJfT0ZfSURTID0gNjsKKwordmFyIEtJTkRfREVWSUNFICAgPSAw
OwordmFyIEtJTkRfV09SSyAgICAgPSAxOworCisvKioKKyAqIEFkZCBhbiBpZGxlIHRhc2sgdG8g
dGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0
YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBh
cmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0
aGUgdGFzaworICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdG8gc2No
ZWR1bGUgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRJZGxlVGFzayA9IGZ1
bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCBjb3VudCkgeworICB0aGlzLmFkZFJ1bm5pbmdU
YXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBJZGxlVGFzayh0aGlzLCAxLCBjb3VudCkpOwor
fTsKKworLyoqCisgKiBBZGQgYSB3b3JrIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFy
YW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJp
b3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBx
dWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hlZHVsZXIu
cHJvdG90eXBlLmFkZFdvcmtlclRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkg
eworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IFdvcmtlclRhc2sodGhp
cywgSURfSEFORExFUl9BLCAwKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhhbmRsZXIgdGFzayB0
byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBA
cGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5
IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxlclRhc2sgPSBmdW5j
dGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5
LCBxdWV1ZSwgbmV3IEhhbmRsZXJUYXNrKHRoaXMpKTsKK307CisKKy8qKgorICogQWRkIGEgaGFu
ZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVu
dGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJp
b3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBw
cm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGREZXZpY2VU
YXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhpcy5hZGRUYXNrKGlk
LCBwcmlvcml0eSwgcXVldWUsIG5ldyBEZXZpY2VUYXNrKHRoaXMpKQorfTsKKworLyoqCisgKiBB
ZGQgdGhlIHNwZWNpZmllZCB0YXNrIGFuZCBtYXJrIGl0IGFzIHJ1bm5pbmcuCisgKiBAcGFyYW0g
e2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3Jp
dHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1
ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0
YXNrIHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdU
YXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5hZGRU
YXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmN1cnJlbnRUY2Iuc2V0UnVu
bmluZygpOworfTsKKworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIHRvIHRoaXMgc2No
ZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICog
QHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFj
a2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sK
KyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5hZGRUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsK
KyAgdGhpcy5jdXJyZW50VGNiID0gbmV3IFRhc2tDb250cm9sQmxvY2sodGhpcy5saXN0LCBpZCwg
cHJpb3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5saXN0ID0gdGhpcy5jdXJyZW50VGNiOwor
ICB0aGlzLmJsb2Nrc1tpZF0gPSB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioKKyAqIEV4ZWN1
dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgKi8KK1NjaGVkdWxlci5w
cm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYiA9IHRo
aXMubGlzdDsKKyAgd2hpbGUgKHRoaXMuY3VycmVudFRjYiAhPSBudWxsKSB7CisgICAgaWYgKHRo
aXMuY3VycmVudFRjYi5pc0hlbGRPclN1c3BlbmRlZCgpKSB7CisgICAgICB0aGlzLmN1cnJlbnRU
Y2IgPSB0aGlzLmN1cnJlbnRUY2IubGluazsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5jdXJy
ZW50SWQgPSB0aGlzLmN1cnJlbnRUY2IuaWQ7CisgICAgICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlz
LmN1cnJlbnRUY2IucnVuKCk7CisgICAgfQorICB9Cit9OworCisvKioKKyAqIFJlbGVhc2UgYSB0
YXNrIHRoYXQgaXMgY3VycmVudGx5IGJsb2NrZWQgYW5kIHJldHVybiB0aGUgbmV4dCBibG9jayB0
byBydW4uCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoZSB0YXNrIHRvIHN1c3BlbmQK
KyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKGlkKSB7CisgIHZh
ciB0Y2IgPSB0aGlzLmJsb2Nrc1tpZF07CisgIGlmICh0Y2IgPT0gbnVsbCkgcmV0dXJuIHRjYjsK
KyAgdGNiLm1hcmtBc05vdEhlbGQoKTsKKyAgaWYgKHRjYi5wcmlvcml0eSA+IHRoaXMuY3VycmVu
dFRjYi5wcmlvcml0eSkgeworICAgIHJldHVybiB0Y2I7CisgIH0gZWxzZSB7CisgICAgcmV0dXJu
IHRoaXMuY3VycmVudFRjYjsKKyAgfQorfTsKKworLyoqCisgKiBCbG9jayB0aGUgY3VycmVudGx5
IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJsb2NrCisg
KiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUgcnVubmFibGUgdW50
aWwgaXQgaXMgZXhwbGljaXRseQorICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRk
ZWQgdG8gaXQuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJlbnQgPSBmdW5jdGlv
biAoKSB7CisgIHRoaXMuaG9sZENvdW50Kys7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNIZWxk
KCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2IubGluazsKK307CisKKy8qKgorICogU3VzcGVu
ZCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBj
b250cm9sIGJsb2NrCisgKiB0byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRlZCB0byB0aGUgc3Vz
cGVuZGVkIHRhc2sgaXQgd2lsbCBiZSBtYWRlIHJ1bm5hYmxlLgorICovCitTY2hlZHVsZXIucHJv
dG90eXBlLnN1c3BlbmRDdXJyZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmN1cnJlbnRUY2Iu
bWFya0FzU3VzcGVuZGVkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioK
KyAqIEFkZCB0aGUgc3BlY2lmaWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRoZSB3b3JrbGlzdCB1
c2VkIGJ5IHRoZSB0YXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldCBhbmQgbWFrZSB0
aGUgdGFzayBydW5uYWJsZSBpZiBpdCBpcyBjdXJyZW50bHkKKyAqIHN1c3BlbmRlZC4KKyAqIEBw
YXJhbSB7UGFja2V0fSBwYWNrZXQgdGhlIHBhY2tldCB0byBhZGQKKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5xdWV1ZSA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdmFyIHQgPSB0aGlzLmJsb2Nr
c1twYWNrZXQuaWRdOworICBpZiAodCA9PSBudWxsKSByZXR1cm4gdDsKKyAgdGhpcy5xdWV1ZUNv
dW50Kys7CisgIHBhY2tldC5saW5rID0gbnVsbDsKKyAgcGFja2V0LmlkID0gdGhpcy5jdXJyZW50
SWQ7CisgIHJldHVybiB0LmNoZWNrUHJpb3JpdHlBZGQodGhpcy5jdXJyZW50VGNiLCBwYWNrZXQp
OworfTsKKworLyoqCisgKiBBIHRhc2sgY29udHJvbCBibG9jayBtYW5hZ2VzIGEgdGFzayBhbmQg
dGhlIHF1ZXVlIG9mIHdvcmsgcGFja2FnZXMgYXNzb2NpYXRlZAorICogd2l0aCBpdC4KKyAqIEBw
YXJhbSB7VGFza0NvbnRyb2xCbG9ja30gbGluayB0aGUgcHJlY2VkaW5nIGJsb2NrIGluIHRoZSBs
aW5rZWQgYmxvY2sgbGlzdAorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBvZiB0aGlzIGJsb2Nr
CisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHByaW9yaXR5IG9mIHRoaXMgYmxvY2sKKyAq
IEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2YgcGFja2FnZXMgdG8gYmUgcHJvY2Vz
c2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sKKyAqIEBjb25z
dHJ1Y3RvcgorICovCitmdW5jdGlvbiBUYXNrQ29udHJvbEJsb2NrKGxpbmssIGlkLCBwcmlvcml0
eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhpcy5pZCA9IGlkOwor
ICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CisgIHRoaXMucXVldWUgPSBxdWV1ZTsKKyAgdGhp
cy50YXNrID0gdGFzazsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHsKKyAgICB0aGlzLnN0YXRlID0g
U1RBVEVfU1VTUEVOREVEOworICB9IGVsc2UgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQ
RU5ERURfUlVOTkFCTEU7CisgIH0KK30KKworLyoqCisgKiBUaGUgdGFzayBpcyBydW5uaW5nIGFu
ZCBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgorICovCit2YXIgU1RBVEVfUlVOTklORyA9IDA7CisK
Ky8qKgorICogVGhlIHRhc2sgaGFzIHBhY2tldHMgbGVmdCB0byBwcm9jZXNzLgorICovCit2YXIg
U1RBVEVfUlVOTkFCTEUgPSAxOworCisvKioKKyAqIFRoZSB0YXNrIGlzIG5vdCBjdXJyZW50bHkg
cnVubmluZy4gIFRoZSB0YXNrIGlzIG5vdCBibG9ja2VkIGFzIHN1Y2ggYW5kIG1heQorKiBiZSBz
dGFydGVkIGJ5IHRoZSBzY2hlZHVsZXIuCisgKi8KK3ZhciBTVEFURV9TVVNQRU5ERUQgPSAyOwor
CisvKioKKyAqIFRoZSB0YXNrIGlzIGJsb2NrZWQgYW5kIGNhbm5vdCBiZSBydW4gdW50aWwgaXQg
aXMgZXhwbGljaXRseSByZWxlYXNlZC4KKyAqLwordmFyIFNUQVRFX0hFTEQgPSA0OworCit2YXIg
U1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFID0gU1RBVEVfU1VTUEVOREVEIHwgU1RBVEVfUlVOTkFC
TEU7Cit2YXIgU1RBVEVfTk9UX0hFTEQgPSB+U1RBVEVfSEVMRDsKKworVGFza0NvbnRyb2xCbG9j
ay5wcm90b3R5cGUuc2V0UnVubmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IFNU
QVRFX1JVTk5JTkc7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNOb3RI
ZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSAmIFNUQVRFX05P
VF9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVsZCA9IGZ1
bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9IRUxEOworfTsK
KworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5kZWQgPSBmdW5jdGlv
biAoKSB7CisgIHJldHVybiAodGhpcy5zdGF0ZSAmIFNUQVRFX0hFTEQpICE9IDAgfHwgKHRoaXMu
c3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEKTsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90
eXBlLm1hcmtBc1N1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMu
c3RhdGUgfCBTVEFURV9TVVNQRU5ERUQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5tYXJrQXNSdW5uYWJsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3Rh
dGUgfCBTVEFURV9SVU5OQUJMRTsKK307CisKKy8qKgorICogUnVucyB0aGlzIHRhc2ssIGlmIGl0
IGlzIHJlYWR5IHRvIGJlIHJ1biwgYW5kIHJldHVybnMgdGhlIG5leHQgdGFzayB0byBydW4uCisg
Ki8KK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHsKKyAgdmFy
IHBhY2tldDsKKyAgaWYgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFKSB7
CisgICAgcGFja2V0ID0gdGhpcy5xdWV1ZTsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0Lmxpbms7
CisgICAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRF
X1JVTk5JTkc7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OQUJM
RTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgcGFja2V0ID0gbnVsbDsKKyAgfQorICByZXR1cm4g
dGhpcy50YXNrLnJ1bihwYWNrZXQpOworfTsKKworLyoqCisgKiBBZGRzIGEgcGFja2V0IHRvIHRo
ZSB3b3JrbGlzdCBvZiB0aGlzIGJsb2NrJ3MgdGFzaywgbWFya3MgdGhpcyBhcyBydW5uYWJsZSBp
ZgorICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJucyB0aGUgbmV4dCBydW5uYWJsZSBvYmplY3QgdG8g
cnVuICh0aGUgb25lCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5KS4KKyAqLworVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlvcml0eUFkZCA9IGZ1bmN0aW9uICh0YXNrLCBw
YWNrZXQpIHsKKyAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMucXVldWUgPSBw
YWNrZXQ7CisgICAgdGhpcy5tYXJrQXNSdW5uYWJsZSgpOworICAgIGlmICh0aGlzLnByaW9yaXR5
ID4gdGFzay5wcmlvcml0eSkgcmV0dXJuIHRoaXM7CisgIH0gZWxzZSB7CisgICAgdGhpcy5xdWV1
ZSA9IHBhY2tldC5hZGRUbyh0aGlzLnF1ZXVlKTsKKyAgfQorICByZXR1cm4gdGFzazsKK307CisK
K1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICBy
ZXR1cm4gInRjYiB7ICIgKyB0aGlzLnRhc2sgKyAiQCIgKyB0aGlzLnN0YXRlICsgIiB9IjsKK307
CisKKy8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsgaXRzZWxmIGJ1dCBj
eWNsZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28KKyAqIGRldmljZSB0YXNrcy4KKyAqIEBwYXJh
bSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0
YXNrCisgKiBAcGFyYW0ge2ludH0gdjEgYSBzZWVkIHZhbHVlIHRoYXQgY29udHJvbHMgaG93IHRo
ZSBkZXZpY2UgdGFza3MgYXJlIHNjaGVkdWxlZAorICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBu
dW1iZXIgb2YgdGltZXMgdGhpcyB0YXNrIHNob3VsZCBiZSBzY2hlZHVsZWQKKyAqIEBjb25zdHJ1
Y3RvcgorICovCitmdW5jdGlvbiBJZGxlVGFzayhzY2hlZHVsZXIsIHYxLCBjb3VudCkgeworICB0
aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0aGlzLmNvdW50
ID0gY291bnQ7Cit9CisKK0lkbGVUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0
KSB7CisgIHRoaXMuY291bnQtLTsKKyAgaWYgKHRoaXMuY291bnQgPT0gMCkgcmV0dXJuIHRoaXMu
c2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIGlmICgodGhpcy52MSAmIDEpID09IDApIHsKKyAg
ICB0aGlzLnYxID0gdGhpcy52MSA+PiAxOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5yZWxl
YXNlKElEX0RFVklDRV9BKTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gKHRoaXMudjEgPj4g
MSkgXiAweEQwMDg7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNF
X0IpOworICB9Cit9OworCitJZGxlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAo
KSB7CisgIHJldHVybiAiSWRsZVRhc2siCit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3Bl
bmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisg
KiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICogQHBhcmFtIHtT
Y2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sK
KyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBEZXZpY2VUYXNrKHNjaGVkdWxlcikgewor
ICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7Cit9CisKK0Rl
dmljZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tl
dCA9PSBudWxsKSB7CisgICAgaWYgKHRoaXMudjEgPT0gbnVsbCkgcmV0dXJuIHRoaXMuc2NoZWR1
bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgICAgdmFyIHYgPSB0aGlzLnYxOworICAgIHRoaXMudjEg
PSBudWxsOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgfSBlbHNlIHsK
KyAgICB0aGlzLnYxID0gcGFja2V0OworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5ob2xkQ3Vy
cmVudCgpOworICB9Cit9OworCitEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0
aW9uICgpIHsKKyAgcmV0dXJuICJEZXZpY2VUYXNrIjsKK307CisKKy8qKgorICogQSB0YXNrIHRo
YXQgbWFuaXB1bGF0ZXMgd29yayBwYWNrZXRzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVk
dWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50
fSB2MSBhIHNlZWQgdXNlZCB0byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1hbmlwdWxh
dGVkCisgKiBAcGFyYW0ge2ludH0gdjIgYW5vdGhlciBzZWVkIHVzZWQgdG8gc3BlY2lmeSBob3cg
d29yayBwYWNrZXRzIGFyZSBtYW5pcHVsYXRlZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0
aW9uIFdvcmtlclRhc2soc2NoZWR1bGVyLCB2MSwgdjIpIHsKKyAgdGhpcy5zY2hlZHVsZXIgPSBz
Y2hlZHVsZXI7CisgIHRoaXMudjEgPSB2MTsKKyAgdGhpcy52MiA9IHYyOworfQorCitXb3JrZXJU
YXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNrZXQgPT0g
bnVsbCkgeworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOworICB9
IGVsc2UgeworICAgIGlmICh0aGlzLnYxID09IElEX0hBTkRMRVJfQSkgeworICAgICAgdGhpcy52
MSA9IElEX0hBTkRMRVJfQjsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy52MSA9IElEX0hBTkRM
RVJfQTsKKyAgICB9CisgICAgcGFja2V0LmlkID0gdGhpcy52MTsKKyAgICBwYWNrZXQuYTEgPSAw
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgREFUQV9TSVpFOyBpKyspIHsKKyAgICAgIHRoaXMu
djIrKzsKKyAgICAgIGlmICh0aGlzLnYyID4gMjYpIHRoaXMudjIgPSAxOworICAgICAgcGFja2V0
LmEyW2ldID0gdGhpcy52MjsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVl
KHBhY2tldCk7CisgIH0KK307CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gIldvcmtlclRhc2siOworfTsKKworLyoqCisgKiBBIHRhc2sg
dGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4gc3VzcGVuZHMgaXRzZWxmLgor
ICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdl
cyB0aGlzIHRhc2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBIYW5kbGVyVGFzayhz
Y2hlZHVsZXIpIHsKKyAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSBu
dWxsOworICB0aGlzLnYyID0gbnVsbDsKK30KKworSGFuZGxlclRhc2sucHJvdG90eXBlLnJ1biA9
IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCAhPSBudWxsKSB7CisgICAgaWYgKHBh
Y2tldC5raW5kID09IEtJTkRfV09SSykgeworICAgICAgdGhpcy52MSA9IHBhY2tldC5hZGRUbyh0
aGlzLnYxKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy52MiA9IHBhY2tldC5hZGRUbyh0aGlz
LnYyKTsKKyAgICB9CisgIH0KKyAgaWYgKHRoaXMudjEgIT0gbnVsbCkgeworICAgIHZhciBjb3Vu
dCA9IHRoaXMudjEuYTE7CisgICAgdmFyIHY7CisgICAgaWYgKGNvdW50IDwgREFUQV9TSVpFKSB7
CisgICAgICBpZiAodGhpcy52MiAhPSBudWxsKSB7CisgICAgICAgIHYgPSB0aGlzLnYyOworICAg
ICAgICB0aGlzLnYyID0gdGhpcy52Mi5saW5rOworICAgICAgICB2LmExID0gdGhpcy52MS5hMltj
b3VudF07CisgICAgICAgIHRoaXMudjEuYTEgPSBjb3VudCArIDE7CisgICAgICAgIHJldHVybiB0
aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgdiA9
IHRoaXMudjE7CisgICAgICB0aGlzLnYxID0gdGhpcy52MS5saW5rOworICAgICAgcmV0dXJuIHRo
aXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAgIH0KKyAgfQorICByZXR1cm4gdGhpcy5zY2hlZHVs
ZXIuc3VzcGVuZEN1cnJlbnQoKTsKK307CisKK0hhbmRsZXJUYXNrLnByb3RvdHlwZS50b1N0cmlu
ZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJIYW5kbGVyVGFzayI7Cit9OworCisvKiAtLS0g
KgorICogUCBhIGMgayBlIHQKKyAqIC0tLSAqLworCit2YXIgREFUQV9TSVpFID0gNDsKKworLyoq
CisgKiBBIHNpbXBsZSBwYWNrYWdlIG9mIGRhdGEgdGhhdCBpcyBtYW5pcHVsYXRlZCBieSB0aGUg
dGFza3MuICBUaGUgZXhhY3QgbGF5b3V0CisgKiBvZiB0aGUgcGF5bG9hZCBkYXRhIGNhcnJpZWQg
YnkgYSBwYWNrZXQgaXMgbm90IGltcG9ydGFpbnQsIGFuZCBuZWl0aGVyIGlzIHRoZQorICogbmF0
dXJlIG9mIHRoZSB3b3JrIHBlcmZvcm1lZCBvbiBwYWNrZXRzIGJ5IHRoZSB0YXNrcy4KKyAqCisg
KiBCZXNpZGVzIGNhcnJ5aW5nIGRhdGEsIHBhY2tldHMgZm9ybSBsaW5rZWQgbGlzdHMgYW5kIGFy
ZSBoZW5jZSB1c2VkIGJvdGggYXMKKyAqIGRhdGEgYW5kIHdvcmtsaXN0cy4KKyAqIEBwYXJhbSB7
UGFja2V0fSBsaW5rIHRoZSB0YWlsIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBwYWNrZXRzCisgKiBA
cGFyYW0ge2ludH0gaWQgYW4gSUQgZm9yIHRoaXMgcGFja2V0CisgKiBAcGFyYW0ge2ludH0ga2lu
ZCB0aGUgdHlwZSBvZiB0aGlzIHBhY2tldAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9u
IFBhY2tldChsaW5rLCBpZCwga2luZCkgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0aGlzLmlk
ID0gaWQ7CisgIHRoaXMua2luZCA9IGtpbmQ7CisgIHRoaXMuYTEgPSAwOworICB0aGlzLmEyID0g
bmV3IEFycmF5KERBVEFfU0laRSk7Cit9CisKKy8qKgorICogQWRkIHRoaXMgcGFja2V0IHRvIHRo
ZSBlbmQgb2YgYSB3b3JrbGlzdCwgYW5kIHJldHVybiB0aGUgd29ya2xpc3QuCisgKiBAcGFyYW0g
e1BhY2tldH0gcXVldWUgdGhlIHdvcmtsaXN0IHRvIGFkZCB0aGlzIHBhY2tldCB0bworICovCitQ
YWNrZXQucHJvdG90eXBlLmFkZFRvID0gZnVuY3Rpb24gKHF1ZXVlKSB7CisgIHRoaXMubGluayA9
IG51bGw7CisgIGlmIChxdWV1ZSA9PSBudWxsKSByZXR1cm4gdGhpczsKKyAgdmFyIHBlZWssIG5l
eHQgPSBxdWV1ZTsKKyAgd2hpbGUgKChwZWVrID0gbmV4dC5saW5rKSAhPSBudWxsKQorICAgIG5l
eHQgPSBwZWVrOworICBuZXh0LmxpbmsgPSB0aGlzOworICByZXR1cm4gcXVldWU7Cit9OworCitQ
YWNrZXQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIlBhY2tl
dCI7Cit9OworCitmb3IgKHZhciBpID0gMDsgaSA8IDM1MDsgKytpKQorICBydW5SaWNoYXJkcygp
OwpJbmRleDogU3VuU3BpZGVyL3Rlc3RzL3Y4LXY1L3Y4LXNwbGF5LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFN1blNwaWRlci90ZXN0cy92OC12NS92OC1zcGxheS5qcwkocmV2aXNpb24gMCkKKysrIFN1blNw
aWRlci90ZXN0cy92OC12NS92OC1zcGxheS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNzcg
QEAKKy8vIENvcHlyaWdodCAyMDA5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAg
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAg
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8gVGhpcyBiZW5jaG1hcmsgaXMgYmFz
ZWQgb24gYSBKYXZhU2NyaXB0IGxvZyBwcm9jZXNzaW5nIG1vZHVsZSB1c2VkCisvLyBieSB0aGUg
VjggcHJvZmlsZXIgdG8gZ2VuZXJhdGUgZXhlY3V0aW9uIHRpbWUgcHJvZmlsZXMgZm9yIHJ1bnMg
b2YKKy8vIEphdmFTY3JpcHQgYXBwbGljYXRpb25zLCBhbmQgaXQgZWZmZWN0aXZlbHkgbWVhc3Vy
ZXMgaG93IGZhc3QgdGhlCisvLyBKYXZhU2NyaXB0IGVuZ2luZSBpcyBhdCBhbGxvY2F0aW5nIG5v
ZGVzIGFuZCByZWNsYWltaW5nIHRoZSBtZW1vcnkKKy8vIHVzZWQgZm9yIG9sZCBub2Rlcy4gQmVj
YXVzZSBvZiB0aGUgd2F5IHNwbGF5IHRyZWVzIHdvcmssIHRoZSBlbmdpbmUKKy8vIGFsc28gaGFz
IHRvIGRlYWwgd2l0aCBhIGxvdCBvZiBjaGFuZ2VzIHRvIHRoZSBsYXJnZSB0cmVlIG9iamVjdAor
Ly8gZ3JhcGguCisKKy8vIENvbmZpZ3VyYXRpb24uCit2YXIga1NwbGF5VHJlZVNpemUgPSA4MDAw
OwordmFyIGtTcGxheVRyZWVNb2RpZmljYXRpb25zID0gODA7Cit2YXIga1NwbGF5VHJlZVBheWxv
YWREZXB0aCA9IDU7CisKK3ZhciBzcGxheVRyZWUgPSBudWxsOworCisKK2Z1bmN0aW9uIEdlbmVy
YXRlUGF5bG9hZFRyZWUoZGVwdGgsIGtleSkgeworICBpZiAoZGVwdGggPT0gMCkgeworICAgIHJl
dHVybiB7CisgICAgICBhcnJheSAgOiBbIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgXSwK
KyAgICAgIHN0cmluZyA6ICdTdHJpbmcgZm9yIGtleSAnICsga2V5ICsgJyBpbiBsZWFmIG5vZGUn
CisgICAgfTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4geworICAgICAgbGVmdDogIEdlbmVyYXRl
UGF5bG9hZFRyZWUoZGVwdGggLSAxLCBrZXkpLAorICAgICAgcmlnaHQ6IEdlbmVyYXRlUGF5bG9h
ZFRyZWUoZGVwdGggLSAxLCBrZXkpCisgICAgfTsKKyAgfQorfQorCisKK2Z1bmN0aW9uIEdlbmVy
YXRlS2V5KCkgeworICAvLyBUaGUgYmVuY2htYXJrIGZyYW1ld29yayBndWFyYW50ZWVzIHRoYXQg
TWF0aC5yYW5kb20gaXMKKyAgLy8gZGV0ZXJtaW5pc3RpYzsgc2VlIGJhc2UuanMuCisgIHJldHVy
biBNYXRoLnJhbmRvbSgpOworfQorCisKK2Z1bmN0aW9uIEluc2VydE5ld05vZGUoKSB7CisgIC8v
IEluc2VydCBuZXcgbm9kZSB3aXRoIGEgdW5pcXVlIGtleS4KKyAgdmFyIGtleTsKKyAgZG8gewor
ICAgIGtleSA9IEdlbmVyYXRlS2V5KCk7CisgIH0gd2hpbGUgKHNwbGF5VHJlZS5maW5kKGtleSkg
IT0gbnVsbCk7CisgIHNwbGF5VHJlZS5pbnNlcnQoa2V5LCBHZW5lcmF0ZVBheWxvYWRUcmVlKGtT
cGxheVRyZWVQYXlsb2FkRGVwdGgsIGtleSkpOworICByZXR1cm4ga2V5OworfQorCisKKworZnVu
Y3Rpb24gU3BsYXlTZXR1cCgpIHsKKyAgc3BsYXlUcmVlID0gbmV3IFNwbGF5VHJlZSgpOworICBm
b3IgKHZhciBpID0gMDsgaSA8IGtTcGxheVRyZWVTaXplOyBpKyspIEluc2VydE5ld05vZGUoKTsK
K30KKworCitmdW5jdGlvbiBTcGxheVRlYXJEb3duKCkgeworICAvLyBBbGxvdyB0aGUgZ2FyYmFn
ZSBjb2xsZWN0b3IgdG8gcmVjbGFpbSB0aGUgbWVtb3J5CisgIC8vIHVzZWQgYnkgdGhlIHNwbGF5
IHRyZWUgbm8gbWF0dGVyIGhvdyB3ZSBleGl0IHRoZQorICAvLyB0ZWFyIGRvd24gZnVuY3Rpb24u
CisgIHZhciBrZXlzID0gc3BsYXlUcmVlLmV4cG9ydEtleXMoKTsKKyAgc3BsYXlUcmVlID0gbnVs
bDsKKworICAvLyBWZXJpZnkgdGhhdCB0aGUgc3BsYXkgdHJlZSBoYXMgdGhlIHJpZ2h0IHNpemUu
CisgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgaWYgKGxlbmd0aCAhPSBrU3BsYXlUcmVl
U2l6ZSkgeworICAgIHRocm93IG5ldyBFcnJvcigiU3BsYXkgdHJlZSBoYXMgd3Jvbmcgc2l6ZSIp
OworICB9CisKKyAgLy8gVmVyaWZ5IHRoYXQgdGhlIHNwbGF5IHRyZWUgaGFzIHNvcnRlZCwgdW5p
cXVlIGtleXMuCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7CisgICAg
aWYgKGtleXNbaV0gPj0ga2V5c1tpICsgMV0pIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcigiU3Bs
YXkgdHJlZSBub3Qgc29ydGVkIik7CisgICAgfQorICB9Cit9CisKKworZnVuY3Rpb24gU3BsYXlS
dW4oKSB7CisgIC8vIFJlcGxhY2UgYSBmZXcgbm9kZXMgaW4gdGhlIHNwbGF5IHRyZWUuCisgIGZv
ciAodmFyIGkgPSAwOyBpIDwga1NwbGF5VHJlZU1vZGlmaWNhdGlvbnM7IGkrKykgeworICAgIHZh
ciBrZXkgPSBJbnNlcnROZXdOb2RlKCk7CisgICAgdmFyIGdyZWF0ZXN0ID0gc3BsYXlUcmVlLmZp
bmRHcmVhdGVzdExlc3NUaGFuKGtleSk7CisgICAgaWYgKGdyZWF0ZXN0ID09IG51bGwpIHNwbGF5
VHJlZS5yZW1vdmUoa2V5KTsKKyAgICBlbHNlIHNwbGF5VHJlZS5yZW1vdmUoZ3JlYXRlc3Qua2V5
KTsKKyAgfQorfQorCisKKy8qKgorICogQ29uc3RydWN0cyBhIFNwbGF5IHRyZWUuICBBIHNwbGF5
IHRyZWUgaXMgYSBzZWxmLWJhbGFuY2luZyBiaW5hcnkKKyAqIHNlYXJjaCB0cmVlIHdpdGggdGhl
IGFkZGl0aW9uYWwgcHJvcGVydHkgdGhhdCByZWNlbnRseSBhY2Nlc3NlZAorICogZWxlbWVudHMg
YXJlIHF1aWNrIHRvIGFjY2VzcyBhZ2Fpbi4gSXQgcGVyZm9ybXMgYmFzaWMgb3BlcmF0aW9ucwor
ICogc3VjaCBhcyBpbnNlcnRpb24sIGxvb2stdXAgYW5kIHJlbW92YWwgaW4gTyhsb2cobikpIGFt
b3J0aXplZCB0aW1lLgorICoKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTcGxheVRy
ZWUoKSB7Cit9OworCisKKy8qKgorICogUG9pbnRlciB0byB0aGUgcm9vdCBub2RlIG9mIHRoZSB0
cmVlLgorICoKKyAqIEB0eXBlIHtTcGxheVRyZWUuTm9kZX0KKyAqIEBwcml2YXRlCisgKi8KK1Nw
bGF5VHJlZS5wcm90b3R5cGUucm9vdF8gPSBudWxsOworCisKKy8qKgorICogQHJldHVybiB7Ym9v
bGVhbn0gV2hldGhlciB0aGUgdHJlZSBpcyBlbXB0eS4KKyAqLworU3BsYXlUcmVlLnByb3RvdHlw
ZS5pc0VtcHR5ID0gZnVuY3Rpb24oKSB7CisgIHJldHVybiAhdGhpcy5yb290XzsKK307CisKKwor
LyoqCisgKiBJbnNlcnRzIGEgbm9kZSBpbnRvIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCBr
ZXkgYW5kIHZhbHVlIGlmCisgKiB0aGUgdHJlZSBkb2VzIG5vdCBhbHJlYWR5IGNvbnRhaW4gYSBu
b2RlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkuIElmCisgKiB0aGUgdmFsdWUgaXMgaW5zZXJ0ZWQs
IGl0IGJlY29tZXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCisgKgorICogQHBhcmFtIHtudW1iZXJ9
IGtleSBLZXkgdG8gaW5zZXJ0IGludG8gdGhlIHRyZWUuCisgKiBAcGFyYW0geyp9IHZhbHVlIFZh
bHVlIHRvIGluc2VydCBpbnRvIHRoZSB0cmVlLgorICovCitTcGxheVRyZWUucHJvdG90eXBlLmlu
c2VydCA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7Cisg
ICAgdGhpcy5yb290XyA9IG5ldyBTcGxheVRyZWUuTm9kZShrZXksIHZhbHVlKTsKKyAgICByZXR1
cm47CisgIH0KKyAgLy8gU3BsYXkgb24gdGhlIGtleSB0byBtb3ZlIHRoZSBsYXN0IG5vZGUgb24g
dGhlIHNlYXJjaCBwYXRoIGZvcgorICAvLyB0aGUga2V5IHRvIHRoZSByb290IG9mIHRoZSB0cmVl
LgorICB0aGlzLnNwbGF5XyhrZXkpOworICBpZiAodGhpcy5yb290Xy5rZXkgPT0ga2V5KSB7Cisg
ICAgcmV0dXJuOworICB9CisgIHZhciBub2RlID0gbmV3IFNwbGF5VHJlZS5Ob2RlKGtleSwgdmFs
dWUpOworICBpZiAoa2V5ID4gdGhpcy5yb290Xy5rZXkpIHsKKyAgICBub2RlLmxlZnQgPSB0aGlz
LnJvb3RfOworICAgIG5vZGUucmlnaHQgPSB0aGlzLnJvb3RfLnJpZ2h0OworICAgIHRoaXMucm9v
dF8ucmlnaHQgPSBudWxsOworICB9IGVsc2UgeworICAgIG5vZGUucmlnaHQgPSB0aGlzLnJvb3Rf
OworICAgIG5vZGUubGVmdCA9IHRoaXMucm9vdF8ubGVmdDsKKyAgICB0aGlzLnJvb3RfLmxlZnQg
PSBudWxsOworICB9CisgIHRoaXMucm9vdF8gPSBub2RlOworfTsKKworCisvKioKKyAqIFJlbW92
ZXMgYSBub2RlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgdHJlZSBpZiB0aGUgdHJl
ZQorICogY29udGFpbnMgYSBub2RlIHdpdGggdGhpcyBrZXkuIFRoZSByZW1vdmVkIG5vZGUgaXMg
cmV0dXJuZWQuIElmIHRoZQorICoga2V5IGlzIG5vdCBmb3VuZCwgYW4gZXhjZXB0aW9uIGlzIHRo
cm93bi4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0ga2V5IEtleSB0byBmaW5kIGFuZCByZW1vdmUg
ZnJvbSB0aGUgdHJlZS4KKyAqIEByZXR1cm4ge1NwbGF5VHJlZS5Ob2RlfSBUaGUgcmVtb3ZlZCBu
b2RlLgorICovCitTcGxheVRyZWUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGtleSkgewor
ICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICB0aHJvdyBFcnJvcignS2V5IG5vdCBmb3VuZDog
JyArIGtleSk7CisgIH0KKyAgdGhpcy5zcGxheV8oa2V5KTsKKyAgaWYgKHRoaXMucm9vdF8ua2V5
ICE9IGtleSkgeworICAgIHRocm93IEVycm9yKCdLZXkgbm90IGZvdW5kOiAnICsga2V5KTsKKyAg
fQorICB2YXIgcmVtb3ZlZCA9IHRoaXMucm9vdF87CisgIGlmICghdGhpcy5yb290Xy5sZWZ0KSB7
CisgICAgdGhpcy5yb290XyA9IHRoaXMucm9vdF8ucmlnaHQ7CisgIH0gZWxzZSB7CisgICAgdmFy
IHJpZ2h0ID0gdGhpcy5yb290Xy5yaWdodDsKKyAgICB0aGlzLnJvb3RfID0gdGhpcy5yb290Xy5s
ZWZ0OworICAgIC8vIFNwbGF5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBuZXcgcm9vdCBoYXMgYW4g
ZW1wdHkgcmlnaHQgY2hpbGQuCisgICAgdGhpcy5zcGxheV8oa2V5KTsKKyAgICAvLyBJbnNlcnQg
dGhlIG9yaWdpbmFsIHJpZ2h0IGNoaWxkIGFzIHRoZSByaWdodCBjaGlsZCBvZiB0aGUgbmV3Cisg
ICAgLy8gcm9vdC4KKyAgICB0aGlzLnJvb3RfLnJpZ2h0ID0gcmlnaHQ7CisgIH0KKyAgcmV0dXJu
IHJlbW92ZWQ7Cit9OworCisKKy8qKgorICogUmV0dXJucyB0aGUgbm9kZSBoYXZpbmcgdGhlIHNw
ZWNpZmllZCBrZXkgb3IgbnVsbCBpZiB0aGUgdHJlZSBkb2Vzbid0IGNvbnRhaW4KKyAqIGEgbm9k
ZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LgorICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBrZXkgS2V5
IHRvIGZpbmQgaW4gdGhlIHRyZWUuCisgKiBAcmV0dXJuIHtTcGxheVRyZWUuTm9kZX0gTm9kZSBo
YXZpbmcgdGhlIHNwZWNpZmllZCBrZXkuCisgKi8KK1NwbGF5VHJlZS5wcm90b3R5cGUuZmluZCA9
IGZ1bmN0aW9uKGtleSkgeworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICByZXR1cm4gbnVs
bDsKKyAgfQorICB0aGlzLnNwbGF5XyhrZXkpOworICByZXR1cm4gdGhpcy5yb290Xy5rZXkgPT0g
a2V5ID8gdGhpcy5yb290XyA6IG51bGw7Cit9OworCisKKy8qKgorICogQHJldHVybiB7U3BsYXlU
cmVlLk5vZGV9IE5vZGUgaGF2aW5nIHRoZSBtYXhpbXVtIGtleSB2YWx1ZSB0aGF0CisgKiAgICAg
aXMgbGVzcyBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIGtleSB2YWx1ZS4KKyAqLworU3BsYXlU
cmVlLnByb3RvdHlwZS5maW5kR3JlYXRlc3RMZXNzVGhhbiA9IGZ1bmN0aW9uKGtleSkgeworICBp
ZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICAvLyBTcGxheSBv
biB0aGUga2V5IHRvIG1vdmUgdGhlIG5vZGUgd2l0aCB0aGUgZ2l2ZW4ga2V5IG9yIHRoZSBsYXN0
CisgIC8vIG5vZGUgb24gdGhlIHNlYXJjaCBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIHRyZWUuCisg
IHRoaXMuc3BsYXlfKGtleSk7CisgIC8vIE5vdyB0aGUgcmVzdWx0IGlzIGVpdGhlciB0aGUgcm9v
dCBub2RlIG9yIHRoZSBncmVhdGVzdCBub2RlIGluCisgIC8vIHRoZSBsZWZ0IHN1YnRyZWUuCisg
IGlmICh0aGlzLnJvb3RfLmtleSA8PSBrZXkpIHsKKyAgICByZXR1cm4gdGhpcy5yb290XzsKKyAg
fSBlbHNlIGlmICh0aGlzLnJvb3RfLmxlZnQpIHsKKyAgICByZXR1cm4gdGhpcy5maW5kTWF4KHRo
aXMucm9vdF8ubGVmdCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK307CisK
KworLyoqCisgKiBAcmV0dXJuIHtBcnJheTwqPn0gQW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhl
IGtleXMgb2YgdHJlZSdzIG5vZGVzLgorICovCitTcGxheVRyZWUucHJvdG90eXBlLmV4cG9ydEtl
eXMgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHJlc3VsdCA9IFtdOworICBpZiAoIXRoaXMuaXNFbXB0
eSgpKSB7CisgICAgdGhpcy5yb290Xy50cmF2ZXJzZV8oZnVuY3Rpb24obm9kZSkgeyByZXN1bHQu
cHVzaChub2RlLmtleSk7IH0pOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9OworCisKKy8qKgor
ICogUGVyZm9ybSB0aGUgc3BsYXkgb3BlcmF0aW9uIGZvciB0aGUgZ2l2ZW4ga2V5LiBNb3ZlcyB0
aGUgbm9kZSB3aXRoCisgKiB0aGUgZ2l2ZW4ga2V5IHRvIHRoZSB0b3Agb2YgdGhlIHRyZWUuICBJ
ZiBubyBub2RlIGhhcyB0aGUgZ2l2ZW4KKyAqIGtleSwgdGhlIGxhc3Qgbm9kZSBvbiB0aGUgc2Vh
cmNoIHBhdGggaXMgbW92ZWQgdG8gdGhlIHRvcCBvZiB0aGUKKyAqIHRyZWUuIFRoaXMgaXMgdGhl
IHNpbXBsaWZpZWQgdG9wLWRvd24gc3BsYXlpbmcgYWxnb3JpdGhtIGZyb206CisgKiAiU2VsZi1h
ZGp1c3RpbmcgQmluYXJ5IFNlYXJjaCBUcmVlcyIgYnkgU2xlYXRvciBhbmQgVGFyamFuCisgKgor
ICogQHBhcmFtIHtudW1iZXJ9IGtleSBLZXkgdG8gc3BsYXkgdGhlIHRyZWUgb24uCisgKiBAcHJp
dmF0ZQorICovCitTcGxheVRyZWUucHJvdG90eXBlLnNwbGF5XyA9IGZ1bmN0aW9uKGtleSkgewor
ICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgLy8gQ3JlYXRlIGEg
ZHVtbXkgbm9kZS4gIFRoZSB1c2Ugb2YgdGhlIGR1bW15IG5vZGUgaXMgYSBiaXQKKyAgLy8gY291
bnRlci1pbnR1aXRpdmU6IFRoZSByaWdodCBjaGlsZCBvZiB0aGUgZHVtbXkgbm9kZSB3aWxsIGhv
bGQKKyAgLy8gdGhlIEwgdHJlZSBvZiB0aGUgYWxnb3JpdGhtLiAgVGhlIGxlZnQgY2hpbGQgb2Yg
dGhlIGR1bW15IG5vZGUKKyAgLy8gd2lsbCBob2xkIHRoZSBSIHRyZWUgb2YgdGhlIGFsZ29yaXRo
bS4gIFVzaW5nIGEgZHVtbXkgbm9kZSwgbGVmdAorICAvLyBhbmQgcmlnaHQgd2lsbCBhbHdheXMg
YmUgbm9kZXMgYW5kIHdlIGF2b2lkIHNwZWNpYWwgY2FzZXMuCisgIHZhciBkdW1teSwgbGVmdCwg
cmlnaHQ7CisgIGR1bW15ID0gbGVmdCA9IHJpZ2h0ID0gbmV3IFNwbGF5VHJlZS5Ob2RlKG51bGws
IG51bGwpOworICB2YXIgY3VycmVudCA9IHRoaXMucm9vdF87CisgIHdoaWxlICh0cnVlKSB7Cisg
ICAgaWYgKGtleSA8IGN1cnJlbnQua2V5KSB7CisgICAgICBpZiAoIWN1cnJlbnQubGVmdCkgewor
ICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChrZXkgPCBjdXJyZW50LmxlZnQua2V5
KSB7CisgICAgICAgIC8vIFJvdGF0ZSByaWdodC4KKyAgICAgICAgdmFyIHRtcCA9IGN1cnJlbnQu
bGVmdDsKKyAgICAgICAgY3VycmVudC5sZWZ0ID0gdG1wLnJpZ2h0OworICAgICAgICB0bXAucmln
aHQgPSBjdXJyZW50OworICAgICAgICBjdXJyZW50ID0gdG1wOworICAgICAgICBpZiAoIWN1cnJl
bnQubGVmdCkgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICAv
LyBMaW5rIHJpZ2h0LgorICAgICAgcmlnaHQubGVmdCA9IGN1cnJlbnQ7CisgICAgICByaWdodCA9
IGN1cnJlbnQ7CisgICAgICBjdXJyZW50ID0gY3VycmVudC5sZWZ0OworICAgIH0gZWxzZSBpZiAo
a2V5ID4gY3VycmVudC5rZXkpIHsKKyAgICAgIGlmICghY3VycmVudC5yaWdodCkgeworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChrZXkgPiBjdXJyZW50LnJpZ2h0LmtleSkgewor
ICAgICAgICAvLyBSb3RhdGUgbGVmdC4KKyAgICAgICAgdmFyIHRtcCA9IGN1cnJlbnQucmlnaHQ7
CisgICAgICAgIGN1cnJlbnQucmlnaHQgPSB0bXAubGVmdDsKKyAgICAgICAgdG1wLmxlZnQgPSBj
dXJyZW50OworICAgICAgICBjdXJyZW50ID0gdG1wOworICAgICAgICBpZiAoIWN1cnJlbnQucmln
aHQpIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgLy8gTGlu
ayBsZWZ0LgorICAgICAgbGVmdC5yaWdodCA9IGN1cnJlbnQ7CisgICAgICBsZWZ0ID0gY3VycmVu
dDsKKyAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnJpZ2h0OworICAgIH0gZWxzZSB7CisgICAgICBi
cmVhazsKKyAgICB9CisgIH0KKyAgLy8gQXNzZW1ibGUuCisgIGxlZnQucmlnaHQgPSBjdXJyZW50
LmxlZnQ7CisgIHJpZ2h0LmxlZnQgPSBjdXJyZW50LnJpZ2h0OworICBjdXJyZW50LmxlZnQgPSBk
dW1teS5yaWdodDsKKyAgY3VycmVudC5yaWdodCA9IGR1bW15LmxlZnQ7CisgIHRoaXMucm9vdF8g
PSBjdXJyZW50OworfTsKKworCisvKioKKyAqIENvbnN0cnVjdHMgYSBTcGxheSB0cmVlIG5vZGUu
CisgKgorICogQHBhcmFtIHtudW1iZXJ9IGtleSBLZXkuCisgKiBAcGFyYW0geyp9IHZhbHVlIFZh
bHVlLgorICovCitTcGxheVRyZWUuTm9kZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAgdGhp
cy5rZXkgPSBrZXk7CisgIHRoaXMudmFsdWUgPSB2YWx1ZTsKK307CisKKworLyoqCisgKiBAdHlw
ZSB7U3BsYXlUcmVlLk5vZGV9CisgKi8KK1NwbGF5VHJlZS5Ob2RlLnByb3RvdHlwZS5sZWZ0ID0g
bnVsbDsKKworCisvKioKKyAqIEB0eXBlIHtTcGxheVRyZWUuTm9kZX0KKyAqLworU3BsYXlUcmVl
Lk5vZGUucHJvdG90eXBlLnJpZ2h0ID0gbnVsbDsKKworCisvKioKKyAqIFBlcmZvcm1zIGFuIG9y
ZGVyZWQgdHJhdmVyc2FsIG9mIHRoZSBzdWJ0cmVlIHN0YXJ0aW5nIGF0CisgKiB0aGlzIFNwbGF5
VHJlZS5Ob2RlLgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oU3BsYXlUcmVlLk5vZGUpfSBmIFZp
c2l0b3IgZnVuY3Rpb24uCisgKiBAcHJpdmF0ZQorICovCitTcGxheVRyZWUuTm9kZS5wcm90b3R5
cGUudHJhdmVyc2VfID0gZnVuY3Rpb24oZikgeworICB2YXIgY3VycmVudCA9IHRoaXM7CisgIHdo
aWxlIChjdXJyZW50KSB7CisgICAgdmFyIGxlZnQgPSBjdXJyZW50LmxlZnQ7CisgICAgaWYgKGxl
ZnQpIGxlZnQudHJhdmVyc2VfKGYpOworICAgIGYoY3VycmVudCk7CisgICAgY3VycmVudCA9IGN1
cnJlbnQucmlnaHQ7CisgIH0KK307CisKK1NwbGF5U2V0dXAoKTsKK1NwbGF5UnVuKCk7CitTcGxh
eVRlYXJEb3duKCk7CkluZGV4OiBTdW5TcGlkZXIvdGVzdHMvdjgtdjYvTElTVAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTdW5TcGlkZXIvdGVzdHMvdjgtdjYvTElTVAkocmV2aXNpb24gMCkKKysrIFN1blNwaWRl
ci90ZXN0cy92OC12Ni9MSVNUCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK3Y4LWNyeXB0
bwordjgtZGVsdGFibHVlCit2OC1lYXJsZXktYm95ZXIKK3Y4LXJheXRyYWNlCit2OC1yZWdleHAK
K3Y4LXJpY2hhcmRzCit2OC1zcGxheQpJbmRleDogU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LWNy
eXB0by5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTdW5TcGlkZXIvdGVzdHMvdjgtdjYvdjgtY3J5cHRvLmpz
CShyZXZpc2lvbiAwKQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LWNyeXB0by5qcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNjk1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIw
MDUgIFRvbSBXdQorICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcK
KyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdo
dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisg
KiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZQorICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0
aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUy1JUyIgQU5E
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgKiBFWFBSRVNTLCBJTVBMSUVEIE9SIE9U
SEVSV0lTRSwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZCisgKiBXQVJSQU5UWSBP
RiBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisg
KgorICogSU4gTk8gRVZFTlQgU0hBTEwgVE9NIFdVIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUws
IElOQ0lERU5UQUwsCisgKiBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5Z
IEtJTkQsIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIKKyAqIFJFU1VMVElORyBGUk9NIExPU1Mg
T0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgT1IgTk9UIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBEQU1BR0UsIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
QVJJU0lORyBPVVQKKyAqIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZP
Uk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisgKgorICogSW4gYWRkaXRpb24sIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uIGFwcGxpZXM6CisgKgorICogQWxsIHJlZGlzdHJpYnV0aW9ucyBtdXN0IHJl
dGFpbiBhbiBpbnRhY3QgY29weSBvZiB0aGlzIGNvcHlyaWdodCBub3RpY2UKKyAqIGFuZCBkaXNj
bGFpbWVyLgorICovCisKKy8vIEJhc2ljIEphdmFTY3JpcHQgQk4gbGlicmFyeSAtIHN1YnNldCB1
c2VmdWwgZm9yIFJTQSBlbmNyeXB0aW9uLgorCisvLyBCaXRzIHBlciBkaWdpdAordmFyIGRiaXRz
OwordmFyIEJJX0RCOwordmFyIEJJX0RNOwordmFyIEJJX0RWOworCit2YXIgQklfRlA7Cit2YXIg
QklfRlY7Cit2YXIgQklfRjE7Cit2YXIgQklfRjI7CisKKy8vIEphdmFTY3JpcHQgZW5naW5lIGFu
YWx5c2lzCit2YXIgY2FuYXJ5ID0gMHhkZWFkYmVlZmNhZmU7Cit2YXIgal9sbSA9ICgoY2FuYXJ5
JjB4ZmZmZmZmKT09MHhlZmNhZmUpOworCisvLyAocHVibGljKSBDb25zdHJ1Y3RvcgorZnVuY3Rp
b24gQmlnSW50ZWdlcihhLGIsYykgeworICB0aGlzLmFycmF5ID0gbmV3IEFycmF5KCk7CisgIGlm
KGEgIT0gbnVsbCkKKyAgICBpZigibnVtYmVyIiA9PSB0eXBlb2YgYSkgdGhpcy5mcm9tTnVtYmVy
KGEsYixjKTsKKyAgICBlbHNlIGlmKGIgPT0gbnVsbCAmJiAic3RyaW5nIiAhPSB0eXBlb2YgYSkg
dGhpcy5mcm9tU3RyaW5nKGEsMjU2KTsKKyAgICBlbHNlIHRoaXMuZnJvbVN0cmluZyhhLGIpOwor
fQorCisvLyByZXR1cm4gbmV3LCB1bnNldCBCaWdJbnRlZ2VyCitmdW5jdGlvbiBuYmkoKSB7IHJl
dHVybiBuZXcgQmlnSW50ZWdlcihudWxsKTsgfQorCisvLyBhbTogQ29tcHV0ZSB3X2ogKz0gKHgq
dGhpc19pKSwgcHJvcGFnYXRlIGNhcnJpZXMsCisvLyBjIGlzIGluaXRpYWwgY2FycnksIHJldHVy
bnMgZmluYWwgY2FycnkuCisvLyBjIDwgMypkdmFsdWUsIHggPCAyKmR2YWx1ZSwgdGhpc19pIDwg
ZHZhbHVlCisvLyBXZSBuZWVkIHRvIHNlbGVjdCB0aGUgZmFzdGVzdCBvbmUgdGhhdCB3b3JrcyBp
biB0aGlzIGVudmlyb25tZW50LgorCisvLyBhbTE6IHVzZSBhIHNpbmdsZSBtdWx0IGFuZCBkaXZp
ZGUgdG8gZ2V0IHRoZSBoaWdoIGJpdHMsCisvLyBtYXggZGlnaXQgYml0cyBzaG91bGQgYmUgMjYg
YmVjYXVzZQorLy8gbWF4IGludGVybmFsIHZhbHVlID0gMipkdmFsdWVeMi0yKmR2YWx1ZSAoPCAy
XjUzKQorZnVuY3Rpb24gYW0xKGkseCx3LGosYyxuKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhp
cy5hcnJheTsKKyAgdmFyIHdfYXJyYXkgICAgPSB3LmFycmF5OworICB3aGlsZSgtLW4gPj0gMCkg
eworICAgIHZhciB2ID0geCp0aGlzX2FycmF5W2krK10rd19hcnJheVtqXStjOworICAgIGMgPSBN
YXRoLmZsb29yKHYvMHg0MDAwMDAwKTsKKyAgICB3X2FycmF5W2orK10gPSB2JjB4M2ZmZmZmZjsK
KyAgfQorICByZXR1cm4gYzsKK30KKworLy8gYW0yIGF2b2lkcyBhIGJpZyBtdWx0LWFuZC1leHRy
YWN0IGNvbXBsZXRlbHkuCisvLyBNYXggZGlnaXQgYml0cyBzaG91bGQgYmUgPD0gMzAgYmVjYXVz
ZSB3ZSBkbyBiaXR3aXNlIG9wcworLy8gb24gdmFsdWVzIHVwIHRvIDIqaGR2YWx1ZV4yLWhkdmFs
dWUtMSAoPCAyXjMxKQorZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKSB7CisgIHZhciB0aGlzX2Fy
cmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHdfYXJyYXkgICAgPSB3LmFycmF5OworICB2YXIgeGwg
PSB4JjB4N2ZmZiwgeGggPSB4Pj4xNTsKKyAgd2hpbGUoLS1uID49IDApIHsKKyAgICB2YXIgbCA9
IHRoaXNfYXJyYXlbaV0mMHg3ZmZmOworICAgIHZhciBoID0gdGhpc19hcnJheVtpKytdPj4xNTsK
KyAgICB2YXIgbSA9IHhoKmwraCp4bDsKKyAgICBsID0geGwqbCsoKG0mMHg3ZmZmKTw8MTUpK3df
YXJyYXlbal0rKGMmMHgzZmZmZmZmZik7CisgICAgYyA9IChsPj4+MzApKyhtPj4+MTUpK3hoKmgr
KGM+Pj4zMCk7CisgICAgd19hcnJheVtqKytdID0gbCYweDNmZmZmZmZmOworICB9CisgIHJldHVy
biBjOworfQorCisvLyBBbHRlcm5hdGVseSwgc2V0IG1heCBkaWdpdCBiaXRzIHRvIDI4IHNpbmNl
IHNvbWUKKy8vIGJyb3dzZXJzIHNsb3cgZG93biB3aGVuIGRlYWxpbmcgd2l0aCAzMi1iaXQgbnVt
YmVycy4KK2Z1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbikgeworICB2YXIgdGhpc19hcnJheSA9IHRo
aXMuYXJyYXk7CisgIHZhciB3X2FycmF5ICAgID0gdy5hcnJheTsKKworICB2YXIgeGwgPSB4JjB4
M2ZmZiwgeGggPSB4Pj4xNDsKKyAgd2hpbGUoLS1uID49IDApIHsKKyAgICB2YXIgbCA9IHRoaXNf
YXJyYXlbaV0mMHgzZmZmOworICAgIHZhciBoID0gdGhpc19hcnJheVtpKytdPj4xNDsKKyAgICB2
YXIgbSA9IHhoKmwraCp4bDsKKyAgICBsID0geGwqbCsoKG0mMHgzZmZmKTw8MTQpK3dfYXJyYXlb
al0rYzsKKyAgICBjID0gKGw+PjI4KSsobT4+MTQpK3hoKmg7CisgICAgd19hcnJheVtqKytdID0g
bCYweGZmZmZmZmY7CisgIH0KKyAgcmV0dXJuIGM7Cit9CisKKy8vIFRoaXMgaXMgdGFpbG9yZWQg
dG8gVk1zIHdpdGggMi1iaXQgdGFnZ2luZy4gSXQgbWFrZXMgc3VyZQorLy8gdGhhdCBhbGwgdGhl
IGNvbXB1dGF0aW9ucyBzdGF5IHdpdGhpbiB0aGUgMjkgYml0cyBhdmFpbGFibGUuCitmdW5jdGlv
biBhbTQoaSx4LHcsaixjLG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2
YXIgd19hcnJheSAgICA9IHcuYXJyYXk7CisKKyAgdmFyIHhsID0geCYweDFmZmYsIHhoID0geD4+
MTM7CisgIHdoaWxlKC0tbiA+PSAwKSB7CisgICAgdmFyIGwgPSB0aGlzX2FycmF5W2ldJjB4MWZm
ZjsKKyAgICB2YXIgaCA9IHRoaXNfYXJyYXlbaSsrXT4+MTM7CisgICAgdmFyIG0gPSB4aCpsK2gq
eGw7CisgICAgbCA9IHhsKmwrKChtJjB4MWZmZik8PDEzKSt3X2FycmF5W2pdK2M7CisgICAgYyA9
IChsPj4yNikrKG0+PjEzKSt4aCpoOworICAgIHdfYXJyYXlbaisrXSA9IGwmMHgzZmZmZmZmOwor
ICB9CisgIHJldHVybiBjOworfQorCisvLyBhbTMvMjggaXMgYmVzdCBmb3IgU00sIFJoaW5vLCBi
dXQgYW00LzI2IGlzIGJlc3QgZm9yIHY4LgorLy8gS2VzdHJlbCAoT3BlcmEgOS41KSBnZXRzIGl0
cyBiZXN0IHJlc3VsdCB3aXRoIGFtNC8yNi4KKy8vIElFNyBkb2VzIDklIGJldHRlciB3aXRoIGFt
My8yOCB0aGFuIHdpdGggYW00LzI2LgorLy8gRmlyZWZveCAoU00pIGdldHMgMTAlIGZhc3RlciB3
aXRoIGFtMy8yOCB0aGFuIHdpdGggYW00LzI2LgorCitzZXR1cEVuZ2luZSA9IGZ1bmN0aW9uKGZu
LCBiaXRzKSB7CisgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFtID0gZm47CisgIGRiaXRzID0gYml0
czsKKworICBCSV9EQiA9IGRiaXRzOworICBCSV9ETSA9ICgoMTw8ZGJpdHMpLTEpOworICBCSV9E
ViA9ICgxPDxkYml0cyk7CisKKyAgQklfRlAgPSA1MjsKKyAgQklfRlYgPSBNYXRoLnBvdygyLEJJ
X0ZQKTsKKyAgQklfRjEgPSBCSV9GUC1kYml0czsKKyAgQklfRjIgPSAyKmRiaXRzLUJJX0ZQOwor
fQorCisKKy8vIERpZ2l0IGNvbnZlcnNpb25zCit2YXIgQklfUk0gPSAiMDEyMzQ1Njc4OWFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKK3ZhciBCSV9SQyA9IG5ldyBBcnJheSgpOwordmFyIHJy
LHZ2OworcnIgPSAiMCIuY2hhckNvZGVBdCgwKTsKK2Zvcih2diA9IDA7IHZ2IDw9IDk7ICsrdnYp
IEJJX1JDW3JyKytdID0gdnY7CityciA9ICJhIi5jaGFyQ29kZUF0KDApOworZm9yKHZ2ID0gMTA7
IHZ2IDwgMzY7ICsrdnYpIEJJX1JDW3JyKytdID0gdnY7CityciA9ICJBIi5jaGFyQ29kZUF0KDAp
OworZm9yKHZ2ID0gMTA7IHZ2IDwgMzY7ICsrdnYpIEJJX1JDW3JyKytdID0gdnY7CisKK2Z1bmN0
aW9uIGludDJjaGFyKG4pIHsgcmV0dXJuIEJJX1JNLmNoYXJBdChuKTsgfQorZnVuY3Rpb24gaW50
QXQocyxpKSB7CisgIHZhciBjID0gQklfUkNbcy5jaGFyQ29kZUF0KGkpXTsKKyAgcmV0dXJuIChj
PT1udWxsKT8tMTpjOworfQorCisvLyAocHJvdGVjdGVkKSBjb3B5IHRoaXMgdG8gcgorZnVuY3Rp
b24gYm5wQ29weVRvKHIpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIg
cl9hcnJheSAgICA9IHIuYXJyYXk7CisKKyAgZm9yKHZhciBpID0gdGhpcy50LTE7IGkgPj0gMDsg
LS1pKSByX2FycmF5W2ldID0gdGhpc19hcnJheVtpXTsKKyAgci50ID0gdGhpcy50OworICByLnMg
PSB0aGlzLnM7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHNldCBmcm9tIGludGVnZXIgdmFsdWUgeCwg
LURWIDw9IHggPCBEVgorZnVuY3Rpb24gYm5wRnJvbUludCh4KSB7CisgIHZhciB0aGlzX2FycmF5
ID0gdGhpcy5hcnJheTsKKyAgdGhpcy50ID0gMTsKKyAgdGhpcy5zID0gKHg8MCk/LTE6MDsKKyAg
aWYoeCA+IDApIHRoaXNfYXJyYXlbMF0gPSB4OworICBlbHNlIGlmKHggPCAtMSkgdGhpc19hcnJh
eVswXSA9IHgrRFY7CisgIGVsc2UgdGhpcy50ID0gMDsKK30KKworLy8gcmV0dXJuIGJpZ2ludCBp
bml0aWFsaXplZCB0byB2YWx1ZQorZnVuY3Rpb24gbmJ2KGkpIHsgdmFyIHIgPSBuYmkoKTsgci5m
cm9tSW50KGkpOyByZXR1cm4gcjsgfQorCisvLyAocHJvdGVjdGVkKSBzZXQgZnJvbSBzdHJpbmcg
YW5kIHJhZGl4CitmdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYikgeworICB2YXIgdGhpc19hcnJh
eSA9IHRoaXMuYXJyYXk7CisgIHZhciBrOworICBpZihiID09IDE2KSBrID0gNDsKKyAgZWxzZSBp
ZihiID09IDgpIGsgPSAzOworICBlbHNlIGlmKGIgPT0gMjU2KSBrID0gODsgLy8gYnl0ZSBhcnJh
eQorICBlbHNlIGlmKGIgPT0gMikgayA9IDE7CisgIGVsc2UgaWYoYiA9PSAzMikgayA9IDU7Cisg
IGVsc2UgaWYoYiA9PSA0KSBrID0gMjsKKyAgZWxzZSB7IHRoaXMuZnJvbVJhZGl4KHMsYik7IHJl
dHVybjsgfQorICB0aGlzLnQgPSAwOworICB0aGlzLnMgPSAwOworICB2YXIgaSA9IHMubGVuZ3Ro
LCBtaSA9IGZhbHNlLCBzaCA9IDA7CisgIHdoaWxlKC0taSA+PSAwKSB7CisgICAgdmFyIHggPSAo
az09OCk/c1tpXSYweGZmOmludEF0KHMsaSk7CisgICAgaWYoeCA8IDApIHsKKyAgICAgIGlmKHMu
Y2hhckF0KGkpID09ICItIikgbWkgPSB0cnVlOworICAgICAgY29udGludWU7CisgICAgfQorICAg
IG1pID0gZmFsc2U7CisgICAgaWYoc2ggPT0gMCkKKyAgICAgIHRoaXNfYXJyYXlbdGhpcy50Kytd
ID0geDsKKyAgICBlbHNlIGlmKHNoK2sgPiBCSV9EQikgeworICAgICAgdGhpc19hcnJheVt0aGlz
LnQtMV0gfD0gKHgmKCgxPDwoQklfREItc2gpKS0xKSk8PHNoOworICAgICAgdGhpc19hcnJheVt0
aGlzLnQrK10gPSAoeD4+KEJJX0RCLXNoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHRoaXNf
YXJyYXlbdGhpcy50LTFdIHw9IHg8PHNoOworICAgIHNoICs9IGs7CisgICAgaWYoc2ggPj0gQklf
REIpIHNoIC09IEJJX0RCOworICB9CisgIGlmKGsgPT0gOCAmJiAoc1swXSYweDgwKSAhPSAwKSB7
CisgICAgdGhpcy5zID0gLTE7CisgICAgaWYoc2ggPiAwKSB0aGlzX2FycmF5W3RoaXMudC0xXSB8
PSAoKDE8PChCSV9EQi1zaCkpLTEpPDxzaDsKKyAgfQorICB0aGlzLmNsYW1wKCk7CisgIGlmKG1p
KSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKTsKK30KKworLy8gKHByb3RlY3RlZCkg
Y2xhbXAgb2ZmIGV4Y2VzcyBoaWdoIHdvcmRzCitmdW5jdGlvbiBibnBDbGFtcCgpIHsKKyAgdmFy
IHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgYyA9IHRoaXMucyZCSV9ETTsKKyAgd2hp
bGUodGhpcy50ID4gMCAmJiB0aGlzX2FycmF5W3RoaXMudC0xXSA9PSBjKSAtLXRoaXMudDsKK30K
KworLy8gKHB1YmxpYykgcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBpbiBnaXZlbiByYWRp
eAorZnVuY3Rpb24gYm5Ub1N0cmluZyhiKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJh
eTsKKyAgaWYodGhpcy5zIDwgMCkgcmV0dXJuICItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIp
OworICB2YXIgazsKKyAgaWYoYiA9PSAxNikgayA9IDQ7CisgIGVsc2UgaWYoYiA9PSA4KSBrID0g
MzsKKyAgZWxzZSBpZihiID09IDIpIGsgPSAxOworICBlbHNlIGlmKGIgPT0gMzIpIGsgPSA1Owor
ICBlbHNlIGlmKGIgPT0gNCkgayA9IDI7CisgIGVsc2UgcmV0dXJuIHRoaXMudG9SYWRpeChiKTsK
KyAgdmFyIGttID0gKDE8PGspLTEsIGQsIG0gPSBmYWxzZSwgciA9ICIiLCBpID0gdGhpcy50Owor
ICB2YXIgcCA9IEJJX0RCLShpKkJJX0RCKSVrOworICBpZihpLS0gPiAwKSB7CisgICAgaWYocCA8
IEJJX0RCICYmIChkID0gdGhpc19hcnJheVtpXT4+cCkgPiAwKSB7IG0gPSB0cnVlOyByID0gaW50
MmNoYXIoZCk7IH0KKyAgICB3aGlsZShpID49IDApIHsKKyAgICAgIGlmKHAgPCBrKSB7CisgICAg
ICAgIGQgPSAodGhpc19hcnJheVtpXSYoKDE8PHApLTEpKTw8KGstcCk7CisgICAgICAgIGQgfD0g
dGhpc19hcnJheVstLWldPj4ocCs9QklfREItayk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgZCA9ICh0aGlzX2FycmF5W2ldPj4ocC09aykpJmttOworICAgICAgICBpZihwIDw9IDAp
IHsgcCArPSBCSV9EQjsgLS1pOyB9CisgICAgICB9CisgICAgICBpZihkID4gMCkgbSA9IHRydWU7
CisgICAgICBpZihtKSByICs9IGludDJjaGFyKGQpOworICAgIH0KKyAgfQorICByZXR1cm4gbT9y
OiIwIjsKK30KKworLy8gKHB1YmxpYykgLXRoaXMKK2Z1bmN0aW9uIGJuTmVnYXRlKCkgeyB2YXIg
ciA9IG5iaSgpOyBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyxyKTsgcmV0dXJuIHI7IH0KKwor
Ly8gKHB1YmxpYykgfHRoaXN8CitmdW5jdGlvbiBibkFicygpIHsgcmV0dXJuICh0aGlzLnM8MCk/
dGhpcy5uZWdhdGUoKTp0aGlzOyB9CisKKy8vIChwdWJsaWMpIHJldHVybiArIGlmIHRoaXMgPiBh
LCAtIGlmIHRoaXMgPCBhLCAwIGlmIGVxdWFsCitmdW5jdGlvbiBibkNvbXBhcmVUbyhhKSB7Cisg
IHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIGFfYXJyYXkgPSBhLmFycmF5Owor
CisgIHZhciByID0gdGhpcy5zLWEuczsKKyAgaWYociAhPSAwKSByZXR1cm4gcjsKKyAgdmFyIGkg
PSB0aGlzLnQ7CisgIHIgPSBpLWEudDsKKyAgaWYociAhPSAwKSByZXR1cm4gcjsKKyAgd2hpbGUo
LS1pID49IDApIGlmKChyPXRoaXNfYXJyYXlbaV0tYV9hcnJheVtpXSkgIT0gMCkgcmV0dXJuIHI7
CisgIHJldHVybiAwOworfQorCisvLyByZXR1cm5zIGJpdCBsZW5ndGggb2YgdGhlIGludGVnZXIg
eAorZnVuY3Rpb24gbmJpdHMoeCkgeworICB2YXIgciA9IDEsIHQ7CisgIGlmKCh0PXg+Pj4xNikg
IT0gMCkgeyB4ID0gdDsgciArPSAxNjsgfQorICBpZigodD14Pj44KSAhPSAwKSB7IHggPSB0OyBy
ICs9IDg7IH0KKyAgaWYoKHQ9eD4+NCkgIT0gMCkgeyB4ID0gdDsgciArPSA0OyB9CisgIGlmKCh0
PXg+PjIpICE9IDApIHsgeCA9IHQ7IHIgKz0gMjsgfQorICBpZigodD14Pj4xKSAhPSAwKSB7IHgg
PSB0OyByICs9IDE7IH0KKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMpIHJldHVybiB0aGUg
bnVtYmVyIG9mIGJpdHMgaW4gInRoaXMiCitmdW5jdGlvbiBibkJpdExlbmd0aCgpIHsKKyAgdmFy
IHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICBpZih0aGlzLnQgPD0gMCkgcmV0dXJuIDA7Cisg
IHJldHVybiBCSV9EQioodGhpcy50LTEpK25iaXRzKHRoaXNfYXJyYXlbdGhpcy50LTFdXih0aGlz
LnMmQklfRE0pKTsKK30KKworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgPDwgbipEQgorZnVuY3Rp
b24gYm5wRExTaGlmdFRvKG4scikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7Cisg
IHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgdmFyIGk7CisgIGZvcihpID0gdGhpcy50LTE7IGkg
Pj0gMDsgLS1pKSByX2FycmF5W2krbl0gPSB0aGlzX2FycmF5W2ldOworICBmb3IoaSA9IG4tMTsg
aSA+PSAwOyAtLWkpIHJfYXJyYXlbaV0gPSAwOworICByLnQgPSB0aGlzLnQrbjsKKyAgci5zID0g
dGhpcy5zOworfQorCisvLyAocHJvdGVjdGVkKSByID0gdGhpcyA+PiBuKkRCCitmdW5jdGlvbiBi
bnBEUlNoaWZ0VG8obixyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFy
IHJfYXJyYXkgPSByLmFycmF5OworICBmb3IodmFyIGkgPSBuOyBpIDwgdGhpcy50OyArK2kpIHJf
YXJyYXlbaS1uXSA9IHRoaXNfYXJyYXlbaV07CisgIHIudCA9IE1hdGgubWF4KHRoaXMudC1uLDAp
OworICByLnMgPSB0aGlzLnM7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIDw8IG4KK2Z1
bmN0aW9uIGJucExTaGlmdFRvKG4scikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7
CisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgdmFyIGJzID0gbiVCSV9EQjsKKyAgdmFyIGNi
cyA9IEJJX0RCLWJzOworICB2YXIgYm0gPSAoMTw8Y2JzKS0xOworICB2YXIgZHMgPSBNYXRoLmZs
b29yKG4vQklfREIpLCBjID0gKHRoaXMuczw8YnMpJkJJX0RNLCBpOworICBmb3IoaSA9IHRoaXMu
dC0xOyBpID49IDA7IC0taSkgeworICAgIHJfYXJyYXlbaStkcysxXSA9ICh0aGlzX2FycmF5W2ld
Pj5jYnMpfGM7CisgICAgYyA9ICh0aGlzX2FycmF5W2ldJmJtKTw8YnM7CisgIH0KKyAgZm9yKGkg
PSBkcy0xOyBpID49IDA7IC0taSkgcl9hcnJheVtpXSA9IDA7CisgIHJfYXJyYXlbZHNdID0gYzsK
KyAgci50ID0gdGhpcy50K2RzKzE7CisgIHIucyA9IHRoaXMuczsKKyAgci5jbGFtcCgpOworfQor
CisvLyAocHJvdGVjdGVkKSByID0gdGhpcyA+PiBuCitmdW5jdGlvbiBibnBSU2hpZnRUbyhuLHIp
IHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgcl9hcnJheSA9IHIuYXJy
YXk7CisgIHIucyA9IHRoaXMuczsKKyAgdmFyIGRzID0gTWF0aC5mbG9vcihuL0JJX0RCKTsKKyAg
aWYoZHMgPj0gdGhpcy50KSB7IHIudCA9IDA7IHJldHVybjsgfQorICB2YXIgYnMgPSBuJUJJX0RC
OworICB2YXIgY2JzID0gQklfREItYnM7CisgIHZhciBibSA9ICgxPDxicyktMTsKKyAgcl9hcnJh
eVswXSA9IHRoaXNfYXJyYXlbZHNdPj5iczsKKyAgZm9yKHZhciBpID0gZHMrMTsgaSA8IHRoaXMu
dDsgKytpKSB7CisgICAgcl9hcnJheVtpLWRzLTFdIHw9ICh0aGlzX2FycmF5W2ldJmJtKTw8Y2Jz
OworICAgIHJfYXJyYXlbaS1kc10gPSB0aGlzX2FycmF5W2ldPj5iczsKKyAgfQorICBpZihicyA+
IDApIHJfYXJyYXlbdGhpcy50LWRzLTFdIHw9ICh0aGlzLnMmYm0pPDxjYnM7CisgIHIudCA9IHRo
aXMudC1kczsKKyAgci5jbGFtcCgpOworfQorCisvLyAocHJvdGVjdGVkKSByID0gdGhpcyAtIGEK
K2Z1bmN0aW9uIGJucFN1YlRvKGEscikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7
CisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgdmFyIGFfYXJyYXkgPSBhLmFycmF5OworICB2
YXIgaSA9IDAsIGMgPSAwLCBtID0gTWF0aC5taW4oYS50LHRoaXMudCk7CisgIHdoaWxlKGkgPCBt
KSB7CisgICAgYyArPSB0aGlzX2FycmF5W2ldLWFfYXJyYXlbaV07CisgICAgcl9hcnJheVtpKytd
ID0gYyZCSV9ETTsKKyAgICBjID4+PSBCSV9EQjsKKyAgfQorICBpZihhLnQgPCB0aGlzLnQpIHsK
KyAgICBjIC09IGEuczsKKyAgICB3aGlsZShpIDwgdGhpcy50KSB7CisgICAgICBjICs9IHRoaXNf
YXJyYXlbaV07CisgICAgICByX2FycmF5W2krK10gPSBjJkJJX0RNOworICAgICAgYyA+Pj0gQklf
REI7CisgICAgfQorICAgIGMgKz0gdGhpcy5zOworICB9CisgIGVsc2UgeworICAgIGMgKz0gdGhp
cy5zOworICAgIHdoaWxlKGkgPCBhLnQpIHsKKyAgICAgIGMgLT0gYV9hcnJheVtpXTsKKyAgICAg
IHJfYXJyYXlbaSsrXSA9IGMmQklfRE07CisgICAgICBjID4+PSBCSV9EQjsKKyAgICB9CisgICAg
YyAtPSBhLnM7CisgIH0KKyAgci5zID0gKGM8MCk/LTE6MDsKKyAgaWYoYyA8IC0xKSByX2FycmF5
W2krK10gPSBCSV9EVitjOworICBlbHNlIGlmKGMgPiAwKSByX2FycmF5W2krK10gPSBjOworICBy
LnQgPSBpOworICByLmNsYW1wKCk7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzICogYSwg
ciAhPSB0aGlzLGEgKEhBQyAxNC4xMikKKy8vICJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBv
bmUgaWYgYXBwcm9wcmlhdGUuCitmdW5jdGlvbiBibnBNdWx0aXBseVRvKGEscikgeworICB2YXIg
dGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgdmFy
IHggPSB0aGlzLmFicygpLCB5ID0gYS5hYnMoKTsKKyAgdmFyIHlfYXJyYXkgPSB5LmFycmF5Owor
CisgIHZhciBpID0geC50OworICByLnQgPSBpK3kudDsKKyAgd2hpbGUoLS1pID49IDApIHJfYXJy
YXlbaV0gPSAwOworICBmb3IoaSA9IDA7IGkgPCB5LnQ7ICsraSkgcl9hcnJheVtpK3gudF0gPSB4
LmFtKDAseV9hcnJheVtpXSxyLGksMCx4LnQpOworICByLnMgPSAwOworICByLmNsYW1wKCk7Cisg
IGlmKHRoaXMucyAhPSBhLnMpIEJpZ0ludGVnZXIuWkVSTy5zdWJUbyhyLHIpOworfQorCisvLyAo
cHJvdGVjdGVkKSByID0gdGhpc14yLCByICE9IHRoaXMgKEhBQyAxNC4xNikKK2Z1bmN0aW9uIGJu
cFNxdWFyZVRvKHIpIHsKKyAgdmFyIHggPSB0aGlzLmFicygpOworICB2YXIgeF9hcnJheSA9IHgu
YXJyYXk7CisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKworICB2YXIgaSA9IHIudCA9IDIqeC50
OworICB3aGlsZSgtLWkgPj0gMCkgcl9hcnJheVtpXSA9IDA7CisgIGZvcihpID0gMDsgaSA8IHgu
dC0xOyArK2kpIHsKKyAgICB2YXIgYyA9IHguYW0oaSx4X2FycmF5W2ldLHIsMippLDAsMSk7Cisg
ICAgaWYoKHJfYXJyYXlbaSt4LnRdKz14LmFtKGkrMSwyKnhfYXJyYXlbaV0sciwyKmkrMSxjLHgu
dC1pLTEpKSA+PSBCSV9EVikgeworICAgICAgcl9hcnJheVtpK3gudF0gLT0gQklfRFY7CisgICAg
ICByX2FycmF5W2kreC50KzFdID0gMTsKKyAgICB9CisgIH0KKyAgaWYoci50ID4gMCkgcl9hcnJh
eVtyLnQtMV0gKz0geC5hbShpLHhfYXJyYXlbaV0sciwyKmksMCwxKTsKKyAgci5zID0gMDsKKyAg
ci5jbGFtcCgpOworfQorCisvLyAocHJvdGVjdGVkKSBkaXZpZGUgdGhpcyBieSBtLCBxdW90aWVu
dCBhbmQgcmVtYWluZGVyIHRvIHEsIHIgKEhBQyAxNC4yMCkKKy8vIHIgIT0gcSwgdGhpcyAhPSBt
LiAgcSBvciByIG1heSBiZSBudWxsLgorZnVuY3Rpb24gYm5wRGl2UmVtVG8obSxxLHIpIHsKKyAg
dmFyIHBtID0gbS5hYnMoKTsKKyAgaWYocG0udCA8PSAwKSByZXR1cm47CisgIHZhciBwdCA9IHRo
aXMuYWJzKCk7CisgIGlmKHB0LnQgPCBwbS50KSB7CisgICAgaWYocSAhPSBudWxsKSBxLmZyb21J
bnQoMCk7CisgICAgaWYociAhPSBudWxsKSB0aGlzLmNvcHlUbyhyKTsKKyAgICByZXR1cm47Cisg
IH0KKyAgaWYociA9PSBudWxsKSByID0gbmJpKCk7CisgIHZhciB5ID0gbmJpKCksIHRzID0gdGhp
cy5zLCBtcyA9IG0uczsKKyAgdmFyIHBtX2FycmF5ID0gcG0uYXJyYXk7CisgIHZhciBuc2ggPSBC
SV9EQi1uYml0cyhwbV9hcnJheVtwbS50LTFdKTsJLy8gbm9ybWFsaXplIG1vZHVsdXMKKyAgaWYo
bnNoID4gMCkgeyBwbS5sU2hpZnRUbyhuc2gseSk7IHB0LmxTaGlmdFRvKG5zaCxyKTsgfQorICBl
bHNlIHsgcG0uY29weVRvKHkpOyBwdC5jb3B5VG8ocik7IH0KKyAgdmFyIHlzID0geS50OworCisg
IHZhciB5X2FycmF5ID0geS5hcnJheTsKKyAgdmFyIHkwID0geV9hcnJheVt5cy0xXTsKKyAgaWYo
eTAgPT0gMCkgcmV0dXJuOworICB2YXIgeXQgPSB5MCooMTw8QklfRjEpKygoeXM+MSk/eV9hcnJh
eVt5cy0yXT4+QklfRjI6MCk7CisgIHZhciBkMSA9IEJJX0ZWL3l0LCBkMiA9ICgxPDxCSV9GMSkv
eXQsIGUgPSAxPDxCSV9GMjsKKyAgdmFyIGkgPSByLnQsIGogPSBpLXlzLCB0ID0gKHE9PW51bGwp
P25iaSgpOnE7CisgIHkuZGxTaGlmdFRvKGosdCk7CisKKyAgdmFyIHJfYXJyYXkgPSByLmFycmF5
OworICBpZihyLmNvbXBhcmVUbyh0KSA+PSAwKSB7CisgICAgcl9hcnJheVtyLnQrK10gPSAxOwor
ICAgIHIuc3ViVG8odCxyKTsKKyAgfQorICBCaWdJbnRlZ2VyLk9ORS5kbFNoaWZ0VG8oeXMsdCk7
CisgIHQuc3ViVG8oeSx5KTsJLy8gIm5lZ2F0aXZlIiB5IHNvIHdlIGNhbiByZXBsYWNlIHN1YiB3
aXRoIGFtIGxhdGVyCisgIHdoaWxlKHkudCA8IHlzKSB5X2FycmF5W3kudCsrXSA9IDA7CisgIHdo
aWxlKC0taiA+PSAwKSB7CisgICAgLy8gRXN0aW1hdGUgcXVvdGllbnQgZGlnaXQKKyAgICB2YXIg
cWQgPSAocl9hcnJheVstLWldPT15MCk/QklfRE06TWF0aC5mbG9vcihyX2FycmF5W2ldKmQxKyhy
X2FycmF5W2ktMV0rZSkqZDIpOworICAgIGlmKChyX2FycmF5W2ldKz15LmFtKDAscWQscixqLDAs
eXMpKSA8IHFkKSB7CS8vIFRyeSBpdCBvdXQKKyAgICAgIHkuZGxTaGlmdFRvKGosdCk7CisgICAg
ICByLnN1YlRvKHQscik7CisgICAgICB3aGlsZShyX2FycmF5W2ldIDwgLS1xZCkgci5zdWJUbyh0
LHIpOworICAgIH0KKyAgfQorICBpZihxICE9IG51bGwpIHsKKyAgICByLmRyU2hpZnRUbyh5cyxx
KTsKKyAgICBpZih0cyAhPSBtcykgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHEscSk7CisgIH0KKyAg
ci50ID0geXM7CisgIHIuY2xhbXAoKTsKKyAgaWYobnNoID4gMCkgci5yU2hpZnRUbyhuc2gscik7
CS8vIERlbm9ybWFsaXplIHJlbWFpbmRlcgorICBpZih0cyA8IDApIEJpZ0ludGVnZXIuWkVSTy5z
dWJUbyhyLHIpOworfQorCisvLyAocHVibGljKSB0aGlzIG1vZCBhCitmdW5jdGlvbiBibk1vZChh
KSB7CisgIHZhciByID0gbmJpKCk7CisgIHRoaXMuYWJzKCkuZGl2UmVtVG8oYSxudWxsLHIpOwor
ICBpZih0aGlzLnMgPCAwICYmIHIuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTykgPiAwKSBhLnN1
YlRvKHIscik7CisgIHJldHVybiByOworfQorCisvLyBNb2R1bGFyIHJlZHVjdGlvbiB1c2luZyAi
Y2xhc3NpYyIgYWxnb3JpdGhtCitmdW5jdGlvbiBDbGFzc2ljKG0pIHsgdGhpcy5tID0gbTsgfQor
ZnVuY3Rpb24gY0NvbnZlcnQoeCkgeworICBpZih4LnMgPCAwIHx8IHguY29tcGFyZVRvKHRoaXMu
bSkgPj0gMCkgcmV0dXJuIHgubW9kKHRoaXMubSk7CisgIGVsc2UgcmV0dXJuIHg7Cit9CitmdW5j
dGlvbiBjUmV2ZXJ0KHgpIHsgcmV0dXJuIHg7IH0KK2Z1bmN0aW9uIGNSZWR1Y2UoeCkgeyB4LmRp
dlJlbVRvKHRoaXMubSxudWxsLHgpOyB9CitmdW5jdGlvbiBjTXVsVG8oeCx5LHIpIHsgeC5tdWx0
aXBseVRvKHkscik7IHRoaXMucmVkdWNlKHIpOyB9CitmdW5jdGlvbiBjU3FyVG8oeCxyKSB7IHgu
c3F1YXJlVG8ocik7IHRoaXMucmVkdWNlKHIpOyB9CisKK0NsYXNzaWMucHJvdG90eXBlLmNvbnZl
cnQgPSBjQ29udmVydDsKK0NsYXNzaWMucHJvdG90eXBlLnJldmVydCA9IGNSZXZlcnQ7CitDbGFz
c2ljLnByb3RvdHlwZS5yZWR1Y2UgPSBjUmVkdWNlOworQ2xhc3NpYy5wcm90b3R5cGUubXVsVG8g
PSBjTXVsVG87CitDbGFzc2ljLnByb3RvdHlwZS5zcXJUbyA9IGNTcXJUbzsKKworLy8gKHByb3Rl
Y3RlZCkgcmV0dXJuICItMS90aGlzICUgMl5EQiI7IHVzZWZ1bCBmb3IgTW9udC4gcmVkdWN0aW9u
CisvLyBqdXN0aWZpY2F0aW9uOgorLy8gICAgICAgICB4eSA9PSAxIChtb2QgbSkKKy8vICAgICAg
ICAgeHkgPSAgMStrbQorLy8gICB4eSgyLXh5KSA9ICgxK2ttKSgxLWttKQorLy8geFt5KDIteHkp
XSA9IDEta14ybV4yCisvLyB4W3koMi14eSldID09IDEgKG1vZCBtXjIpCisvLyBpZiB5IGlzIDEv
eCBtb2QgbSwgdGhlbiB5KDIteHkpIGlzIDEveCBtb2QgbV4yCisvLyBzaG91bGQgcmVkdWNlIHgg
YW5kIHkoMi14eSkgYnkgbV4yIGF0IGVhY2ggc3RlcCB0byBrZWVwIHNpemUgYm91bmRlZC4KKy8v
IEpTIG11bHRpcGx5ICJvdmVyZmxvd3MiIGRpZmZlcmVudGx5IGZyb20gQy9DKyssIHNvIGNhcmUg
aXMgbmVlZGVkIGhlcmUuCitmdW5jdGlvbiBibnBJbnZEaWdpdCgpIHsKKyAgdmFyIHRoaXNfYXJy
YXkgPSB0aGlzLmFycmF5OworICBpZih0aGlzLnQgPCAxKSByZXR1cm4gMDsKKyAgdmFyIHggPSB0
aGlzX2FycmF5WzBdOworICBpZigoeCYxKSA9PSAwKSByZXR1cm4gMDsKKyAgdmFyIHkgPSB4JjM7
CQkvLyB5ID09IDEveCBtb2QgMl4yCisgIHkgPSAoeSooMi0oeCYweGYpKnkpKSYweGY7CS8vIHkg
PT0gMS94IG1vZCAyXjQKKyAgeSA9ICh5KigyLSh4JjB4ZmYpKnkpKSYweGZmOwkvLyB5ID09IDEv
eCBtb2QgMl44CisgIHkgPSAoeSooMi0oKCh4JjB4ZmZmZikqeSkmMHhmZmZmKSkpJjB4ZmZmZjsJ
Ly8geSA9PSAxL3ggbW9kIDJeMTYKKyAgLy8gbGFzdCBzdGVwIC0gY2FsY3VsYXRlIGludmVyc2Ug
bW9kIERWIGRpcmVjdGx5OworICAvLyBhc3N1bWVzIDE2IDwgREIgPD0gMzIgYW5kIGFzc3VtZXMg
YWJpbGl0eSB0byBoYW5kbGUgNDgtYml0IGludHMKKyAgeSA9ICh5KigyLXgqeSVCSV9EVikpJUJJ
X0RWOwkJLy8geSA9PSAxL3ggbW9kIDJeZGJpdHMKKyAgLy8gd2UgcmVhbGx5IHdhbnQgdGhlIG5l
Z2F0aXZlIGludmVyc2UsIGFuZCAtRFYgPCB5IDwgRFYKKyAgcmV0dXJuICh5PjApP0JJX0RWLXk6
LXk7Cit9CisKKy8vIE1vbnRnb21lcnkgcmVkdWN0aW9uCitmdW5jdGlvbiBNb250Z29tZXJ5KG0p
IHsKKyAgdGhpcy5tID0gbTsKKyAgdGhpcy5tcCA9IG0uaW52RGlnaXQoKTsKKyAgdGhpcy5tcGwg
PSB0aGlzLm1wJjB4N2ZmZjsKKyAgdGhpcy5tcGggPSB0aGlzLm1wPj4xNTsKKyAgdGhpcy51bSA9
ICgxPDwoQklfREItMTUpKS0xOworICB0aGlzLm10MiA9IDIqbS50OworfQorCisvLyB4UiBtb2Qg
bQorZnVuY3Rpb24gbW9udENvbnZlcnQoeCkgeworICB2YXIgciA9IG5iaSgpOworICB4LmFicygp
LmRsU2hpZnRUbyh0aGlzLm0udCxyKTsKKyAgci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTsKKyAg
aWYoeC5zIDwgMCAmJiByLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pID4gMCkgdGhpcy5tLnN1
YlRvKHIscik7CisgIHJldHVybiByOworfQorCisvLyB4L1IgbW9kIG0KK2Z1bmN0aW9uIG1vbnRS
ZXZlcnQoeCkgeworICB2YXIgciA9IG5iaSgpOworICB4LmNvcHlUbyhyKTsKKyAgdGhpcy5yZWR1
Y2Uocik7CisgIHJldHVybiByOworfQorCisvLyB4ID0geC9SIG1vZCBtIChIQUMgMTQuMzIpCitm
dW5jdGlvbiBtb250UmVkdWNlKHgpIHsKKyAgdmFyIHhfYXJyYXkgPSB4LmFycmF5OworICB3aGls
ZSh4LnQgPD0gdGhpcy5tdDIpCS8vIHBhZCB4IHNvIGFtIGhhcyBlbm91Z2ggcm9vbSBsYXRlcgor
ICAgIHhfYXJyYXlbeC50KytdID0gMDsKKyAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMubS50OyAr
K2kpIHsKKyAgICAvLyBmYXN0ZXIgd2F5IG9mIGNhbGN1bGF0aW5nIHUwID0geFtpXSptcCBtb2Qg
RFYKKyAgICB2YXIgaiA9IHhfYXJyYXlbaV0mMHg3ZmZmOworICAgIHZhciB1MCA9IChqKnRoaXMu
bXBsKygoKGoqdGhpcy5tcGgrKHhfYXJyYXlbaV0+PjE1KSp0aGlzLm1wbCkmdGhpcy51bSk8PDE1
KSkmQklfRE07CisgICAgLy8gdXNlIGFtIHRvIGNvbWJpbmUgdGhlIG11bHRpcGx5LXNoaWZ0LWFk
ZCBpbnRvIG9uZSBjYWxsCisgICAgaiA9IGkrdGhpcy5tLnQ7CisgICAgeF9hcnJheVtqXSArPSB0
aGlzLm0uYW0oMCx1MCx4LGksMCx0aGlzLm0udCk7CisgICAgLy8gcHJvcGFnYXRlIGNhcnJ5Cisg
ICAgd2hpbGUoeF9hcnJheVtqXSA+PSBCSV9EVikgeyB4X2FycmF5W2pdIC09IEJJX0RWOyB4X2Fy
cmF5Wysral0rKzsgfQorICB9CisgIHguY2xhbXAoKTsKKyAgeC5kclNoaWZ0VG8odGhpcy5tLnQs
eCk7CisgIGlmKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0aGlzLm0seCk7Cit9
CisKKy8vIHIgPSAieF4yL1IgbW9kIG0iOyB4ICE9IHIKK2Z1bmN0aW9uIG1vbnRTcXJUbyh4LHIp
IHsgeC5zcXVhcmVUbyhyKTsgdGhpcy5yZWR1Y2Uocik7IH0KKworLy8gciA9ICJ4eS9SIG1vZCBt
IjsgeCx5ICE9IHIKK2Z1bmN0aW9uIG1vbnRNdWxUbyh4LHkscikgeyB4Lm11bHRpcGx5VG8oeSxy
KTsgdGhpcy5yZWR1Y2Uocik7IH0KKworTW9udGdvbWVyeS5wcm90b3R5cGUuY29udmVydCA9IG1v
bnRDb252ZXJ0OworTW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0ID0gbW9udFJldmVydDsKK01v
bnRnb21lcnkucHJvdG90eXBlLnJlZHVjZSA9IG1vbnRSZWR1Y2U7CitNb250Z29tZXJ5LnByb3Rv
dHlwZS5tdWxUbyA9IG1vbnRNdWxUbzsKK01vbnRnb21lcnkucHJvdG90eXBlLnNxclRvID0gbW9u
dFNxclRvOworCisvLyAocHJvdGVjdGVkKSB0cnVlIGlmZiB0aGlzIGlzIGV2ZW4KK2Z1bmN0aW9u
IGJucElzRXZlbigpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICByZXR1cm4g
KCh0aGlzLnQ+MCk/KHRoaXNfYXJyYXlbMF0mMSk6dGhpcy5zKSA9PSAwOworfQorCisvLyAocHJv
dGVjdGVkKSB0aGlzXmUsIGUgPCAyXjMyLCBkb2luZyBzcXIgYW5kIG11bCB3aXRoICJyIiAoSEFD
IDE0Ljc5KQorZnVuY3Rpb24gYm5wRXhwKGUseikgeworICBpZihlID4gMHhmZmZmZmZmZiB8fCBl
IDwgMSkgcmV0dXJuIEJpZ0ludGVnZXIuT05FOworICB2YXIgciA9IG5iaSgpLCByMiA9IG5iaSgp
LCBnID0gei5jb252ZXJ0KHRoaXMpLCBpID0gbmJpdHMoZSktMTsKKyAgZy5jb3B5VG8ocik7Cisg
IHdoaWxlKC0taSA+PSAwKSB7CisgICAgei5zcXJUbyhyLHIyKTsKKyAgICBpZigoZSYoMTw8aSkp
ID4gMCkgei5tdWxUbyhyMixnLHIpOworICAgIGVsc2UgeyB2YXIgdCA9IHI7IHIgPSByMjsgcjIg
PSB0OyB9CisgIH0KKyAgcmV0dXJuIHoucmV2ZXJ0KHIpOworfQorCisvLyAocHVibGljKSB0aGlz
XmUgJSBtLCAwIDw9IGUgPCAyXjMyCitmdW5jdGlvbiBibk1vZFBvd0ludChlLG0pIHsKKyAgdmFy
IHo7CisgIGlmKGUgPCAyNTYgfHwgbS5pc0V2ZW4oKSkgeiA9IG5ldyBDbGFzc2ljKG0pOyBlbHNl
IHogPSBuZXcgTW9udGdvbWVyeShtKTsKKyAgcmV0dXJuIHRoaXMuZXhwKGUseik7Cit9CisKKy8v
IHByb3RlY3RlZAorQmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvID0gYm5wQ29weVRvOworQmln
SW50ZWdlci5wcm90b3R5cGUuZnJvbUludCA9IGJucEZyb21JbnQ7CitCaWdJbnRlZ2VyLnByb3Rv
dHlwZS5mcm9tU3RyaW5nID0gYm5wRnJvbVN0cmluZzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmNs
YW1wID0gYm5wQ2xhbXA7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5kbFNoaWZ0VG8gPSBibnBETFNo
aWZ0VG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5kclNoaWZ0VG8gPSBibnBEUlNoaWZ0VG87CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbyA9IGJucExTaGlmdFRvOworQmlnSW50ZWdlci5w
cm90b3R5cGUuclNoaWZ0VG8gPSBibnBSU2hpZnRUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnN1
YlRvID0gYm5wU3ViVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvID0gYm5wTXVs
dGlwbHlUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnNxdWFyZVRvID0gYm5wU3F1YXJlVG87CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZSZW1UbyA9IGJucERpdlJlbVRvOworQmlnSW50ZWdlci5w
cm90b3R5cGUuaW52RGlnaXQgPSBibnBJbnZEaWdpdDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmlz
RXZlbiA9IGJucElzRXZlbjsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmV4cCA9IGJucEV4cDsKKwor
Ly8gcHVibGljCitCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGJuVG9TdHJpbmc7CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5uZWdhdGUgPSBibk5lZ2F0ZTsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmFicyA9IGJuQWJzOworQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gYm5Db21w
YXJlVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGggPSBibkJpdExlbmd0aDsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLm1vZCA9IGJuTW9kOworQmlnSW50ZWdlci5wcm90b3R5cGUubW9k
UG93SW50ID0gYm5Nb2RQb3dJbnQ7CisKKy8vICJjb25zdGFudHMiCitCaWdJbnRlZ2VyLlpFUk8g
PSBuYnYoMCk7CitCaWdJbnRlZ2VyLk9ORSA9IG5idigxKTsKKy8vIENvcHlyaWdodCAoYykgMjAw
NSAgVG9tIFd1CisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8gU2VlICJMSUNFTlNFIiBmb3Ig
ZGV0YWlscy4KKworLy8gRXh0ZW5kZWQgSmF2YVNjcmlwdCBCTiBmdW5jdGlvbnMsIHJlcXVpcmVk
IGZvciBSU0EgcHJpdmF0ZSBvcHMuCisKKy8vIChwdWJsaWMpCitmdW5jdGlvbiBibkNsb25lKCkg
eyB2YXIgciA9IG5iaSgpOyB0aGlzLmNvcHlUbyhyKTsgcmV0dXJuIHI7IH0KKworLy8gKHB1Ymxp
YykgcmV0dXJuIHZhbHVlIGFzIGludGVnZXIKK2Z1bmN0aW9uIGJuSW50VmFsdWUoKSB7CisgIHZh
ciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgaWYodGhpcy5zIDwgMCkgeworICAgIGlmKHRo
aXMudCA9PSAxKSByZXR1cm4gdGhpc19hcnJheVswXS1CSV9EVjsKKyAgICBlbHNlIGlmKHRoaXMu
dCA9PSAwKSByZXR1cm4gLTE7CisgIH0KKyAgZWxzZSBpZih0aGlzLnQgPT0gMSkgcmV0dXJuIHRo
aXNfYXJyYXlbMF07CisgIGVsc2UgaWYodGhpcy50ID09IDApIHJldHVybiAwOworICAvLyBhc3N1
bWVzIDE2IDwgREIgPCAzMgorICByZXR1cm4gKCh0aGlzX2FycmF5WzFdJigoMTw8KDMyLUJJX0RC
KSktMSkpPDxCSV9EQil8dGhpc19hcnJheVswXTsKK30KKworLy8gKHB1YmxpYykgcmV0dXJuIHZh
bHVlIGFzIGJ5dGUKK2Z1bmN0aW9uIGJuQnl0ZVZhbHVlKCkgeworICB2YXIgdGhpc19hcnJheSA9
IHRoaXMuYXJyYXk7CisgIHJldHVybiAodGhpcy50PT0wKT90aGlzLnM6KHRoaXNfYXJyYXlbMF08
PDI0KT4+MjQ7Cit9CisKKy8vIChwdWJsaWMpIHJldHVybiB2YWx1ZSBhcyBzaG9ydCAoYXNzdW1l
cyBEQj49MTYpCitmdW5jdGlvbiBiblNob3J0VmFsdWUoKSB7CisgIHZhciB0aGlzX2FycmF5ID0g
dGhpcy5hcnJheTsKKyAgcmV0dXJuICh0aGlzLnQ9PTApP3RoaXMuczoodGhpc19hcnJheVswXTw8
MTYpPj4xNjsKK30KKworLy8gKHByb3RlY3RlZCkgcmV0dXJuIHggcy50LiByXnggPCBEVgorZnVu
Y3Rpb24gYm5wQ2h1bmtTaXplKHIpIHsgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5MTjIqQklfREIv
TWF0aC5sb2cocikpOyB9CisKKy8vIChwdWJsaWMpIDAgaWYgdGhpcyA9PSAwLCAxIGlmIHRoaXMg
PiAwCitmdW5jdGlvbiBiblNpZ051bSgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5
OworICBpZih0aGlzLnMgPCAwKSByZXR1cm4gLTE7CisgIGVsc2UgaWYodGhpcy50IDw9IDAgfHwg
KHRoaXMudCA9PSAxICYmIHRoaXNfYXJyYXlbMF0gPD0gMCkpIHJldHVybiAwOworICBlbHNlIHJl
dHVybiAxOworfQorCisvLyAocHJvdGVjdGVkKSBjb252ZXJ0IHRvIHJhZGl4IHN0cmluZworZnVu
Y3Rpb24gYm5wVG9SYWRpeChiKSB7CisgIGlmKGIgPT0gbnVsbCkgYiA9IDEwOworICBpZih0aGlz
LnNpZ251bSgpID09IDAgfHwgYiA8IDIgfHwgYiA+IDM2KSByZXR1cm4gIjAiOworICB2YXIgY3Mg
PSB0aGlzLmNodW5rU2l6ZShiKTsKKyAgdmFyIGEgPSBNYXRoLnBvdyhiLGNzKTsKKyAgdmFyIGQg
PSBuYnYoYSksIHkgPSBuYmkoKSwgeiA9IG5iaSgpLCByID0gIiI7CisgIHRoaXMuZGl2UmVtVG8o
ZCx5LHopOworICB3aGlsZSh5LnNpZ251bSgpID4gMCkgeworICAgIHIgPSAoYSt6LmludFZhbHVl
KCkpLnRvU3RyaW5nKGIpLnN1YnN0cigxKSArIHI7CisgICAgeS5kaXZSZW1UbyhkLHkseik7Cisg
IH0KKyAgcmV0dXJuIHouaW50VmFsdWUoKS50b1N0cmluZyhiKSArIHI7Cit9CisKKy8vIChwcm90
ZWN0ZWQpIGNvbnZlcnQgZnJvbSByYWRpeCBzdHJpbmcKK2Z1bmN0aW9uIGJucEZyb21SYWRpeChz
LGIpIHsKKyAgdGhpcy5mcm9tSW50KDApOworICBpZihiID09IG51bGwpIGIgPSAxMDsKKyAgdmFy
IGNzID0gdGhpcy5jaHVua1NpemUoYik7CisgIHZhciBkID0gTWF0aC5wb3coYixjcyksIG1pID0g
ZmFsc2UsIGogPSAwLCB3ID0gMDsKKyAgZm9yKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kp
IHsKKyAgICB2YXIgeCA9IGludEF0KHMsaSk7CisgICAgaWYoeCA8IDApIHsKKyAgICAgIGlmKHMu
Y2hhckF0KGkpID09ICItIiAmJiB0aGlzLnNpZ251bSgpID09IDApIG1pID0gdHJ1ZTsKKyAgICAg
IGNvbnRpbnVlOworICAgIH0KKyAgICB3ID0gYip3K3g7CisgICAgaWYoKytqID49IGNzKSB7Cisg
ICAgICB0aGlzLmRNdWx0aXBseShkKTsKKyAgICAgIHRoaXMuZEFkZE9mZnNldCh3LDApOworICAg
ICAgaiA9IDA7CisgICAgICB3ID0gMDsKKyAgICB9CisgIH0KKyAgaWYoaiA+IDApIHsKKyAgICB0
aGlzLmRNdWx0aXBseShNYXRoLnBvdyhiLGopKTsKKyAgICB0aGlzLmRBZGRPZmZzZXQodywwKTsK
KyAgfQorICBpZihtaSkgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyk7Cit9CisKKy8v
IChwcm90ZWN0ZWQpIGFsdGVybmF0ZSBjb25zdHJ1Y3RvcgorZnVuY3Rpb24gYm5wRnJvbU51bWJl
cihhLGIsYykgeworICBpZigibnVtYmVyIiA9PSB0eXBlb2YgYikgeworICAgIC8vIG5ldyBCaWdJ
bnRlZ2VyKGludCxpbnQsUk5HKQorICAgIGlmKGEgPCAyKSB0aGlzLmZyb21JbnQoMSk7CisgICAg
ZWxzZSB7CisgICAgICB0aGlzLmZyb21OdW1iZXIoYSxjKTsKKyAgICAgIGlmKCF0aGlzLnRlc3RC
aXQoYS0xKSkJLy8gZm9yY2UgTVNCIHNldAorICAgICAgICB0aGlzLmJpdHdpc2VUbyhCaWdJbnRl
Z2VyLk9ORS5zaGlmdExlZnQoYS0xKSxvcF9vcix0aGlzKTsKKyAgICAgIGlmKHRoaXMuaXNFdmVu
KCkpIHRoaXMuZEFkZE9mZnNldCgxLDApOyAvLyBmb3JjZSBvZGQKKyAgICAgIHdoaWxlKCF0aGlz
LmlzUHJvYmFibGVQcmltZShiKSkgeworICAgICAgICB0aGlzLmRBZGRPZmZzZXQoMiwwKTsKKyAg
ICAgICAgaWYodGhpcy5iaXRMZW5ndGgoKSA+IGEpIHRoaXMuc3ViVG8oQmlnSW50ZWdlci5PTkUu
c2hpZnRMZWZ0KGEtMSksdGhpcyk7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgeworICAg
IC8vIG5ldyBCaWdJbnRlZ2VyKGludCxSTkcpCisgICAgdmFyIHggPSBuZXcgQXJyYXkoKSwgdCA9
IGEmNzsKKyAgICB4Lmxlbmd0aCA9IChhPj4zKSsxOworICAgIGIubmV4dEJ5dGVzKHgpOworICAg
IGlmKHQgPiAwKSB4WzBdICY9ICgoMTw8dCktMSk7IGVsc2UgeFswXSA9IDA7CisgICAgdGhpcy5m
cm9tU3RyaW5nKHgsMjU2KTsKKyAgfQorfQorCisvLyAocHVibGljKSBjb252ZXJ0IHRvIGJpZ2Vu
ZGlhbiBieXRlIGFycmF5CitmdW5jdGlvbiBiblRvQnl0ZUFycmF5KCkgeworICB2YXIgdGhpc19h
cnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciBpID0gdGhpcy50LCByID0gbmV3IEFycmF5KCk7Cisg
IHJbMF0gPSB0aGlzLnM7CisgIHZhciBwID0gQklfREItKGkqQklfREIpJTgsIGQsIGsgPSAwOwor
ICBpZihpLS0gPiAwKSB7CisgICAgaWYocCA8IEJJX0RCICYmIChkID0gdGhpc19hcnJheVtpXT4+
cCkgIT0gKHRoaXMucyZCSV9ETSk+PnApCisgICAgICByW2srK10gPSBkfCh0aGlzLnM8PChCSV9E
Qi1wKSk7CisgICAgd2hpbGUoaSA+PSAwKSB7CisgICAgICBpZihwIDwgOCkgeworICAgICAgICBk
ID0gKHRoaXNfYXJyYXlbaV0mKCgxPDxwKS0xKSk8PCg4LXApOworICAgICAgICBkIHw9IHRoaXNf
YXJyYXlbLS1pXT4+KHArPUJJX0RCLTgpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IGQgPSAodGhpc19hcnJheVtpXT4+KHAtPTgpKSYweGZmOworICAgICAgICBpZihwIDw9IDApIHsg
cCArPSBCSV9EQjsgLS1pOyB9CisgICAgICB9CisgICAgICBpZigoZCYweDgwKSAhPSAwKSBkIHw9
IC0yNTY7CisgICAgICBpZihrID09IDAgJiYgKHRoaXMucyYweDgwKSAhPSAoZCYweDgwKSkgKytr
OworICAgICAgaWYoayA+IDAgfHwgZCAhPSB0aGlzLnMpIHJbaysrXSA9IGQ7CisgICAgfQorICB9
CisgIHJldHVybiByOworfQorCitmdW5jdGlvbiBibkVxdWFscyhhKSB7IHJldHVybih0aGlzLmNv
bXBhcmVUbyhhKT09MCk7IH0KK2Z1bmN0aW9uIGJuTWluKGEpIHsgcmV0dXJuKHRoaXMuY29tcGFy
ZVRvKGEpPDApP3RoaXM6YTsgfQorZnVuY3Rpb24gYm5NYXgoYSkgeyByZXR1cm4odGhpcy5jb21w
YXJlVG8oYSk+MCk/dGhpczphOyB9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIG9wIGEgKGJp
dHdpc2UpCitmdW5jdGlvbiBibnBCaXR3aXNlVG8oYSxvcCxyKSB7CisgIHZhciB0aGlzX2FycmF5
ID0gdGhpcy5hcnJheTsKKyAgdmFyIGFfYXJyYXkgICAgPSBhLmFycmF5OworICB2YXIgcl9hcnJh
eSAgICA9IHIuYXJyYXk7CisgIHZhciBpLCBmLCBtID0gTWF0aC5taW4oYS50LHRoaXMudCk7Cisg
IGZvcihpID0gMDsgaSA8IG07ICsraSkgcl9hcnJheVtpXSA9IG9wKHRoaXNfYXJyYXlbaV0sYV9h
cnJheVtpXSk7CisgIGlmKGEudCA8IHRoaXMudCkgeworICAgIGYgPSBhLnMmQklfRE07CisgICAg
Zm9yKGkgPSBtOyBpIDwgdGhpcy50OyArK2kpIHJfYXJyYXlbaV0gPSBvcCh0aGlzX2FycmF5W2ld
LGYpOworICAgIHIudCA9IHRoaXMudDsKKyAgfQorICBlbHNlIHsKKyAgICBmID0gdGhpcy5zJkJJ
X0RNOworICAgIGZvcihpID0gbTsgaSA8IGEudDsgKytpKSByX2FycmF5W2ldID0gb3AoZixhX2Fy
cmF5W2ldKTsKKyAgICByLnQgPSBhLnQ7CisgIH0KKyAgci5zID0gb3AodGhpcy5zLGEucyk7Cisg
IHIuY2xhbXAoKTsKK30KKworLy8gKHB1YmxpYykgdGhpcyAmIGEKK2Z1bmN0aW9uIG9wX2FuZCh4
LHkpIHsgcmV0dXJuIHgmeTsgfQorZnVuY3Rpb24gYm5BbmQoYSkgeyB2YXIgciA9IG5iaSgpOyB0
aGlzLmJpdHdpc2VUbyhhLG9wX2FuZCxyKTsgcmV0dXJuIHI7IH0KKworLy8gKHB1YmxpYykgdGhp
cyB8IGEKK2Z1bmN0aW9uIG9wX29yKHgseSkgeyByZXR1cm4geHx5OyB9CitmdW5jdGlvbiBibk9y
KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF9vcixyKTsgcmV0dXJuIHI7
IH0KKworLy8gKHB1YmxpYykgdGhpcyBeIGEKK2Z1bmN0aW9uIG9wX3hvcih4LHkpIHsgcmV0dXJu
IHheeTsgfQorZnVuY3Rpb24gYm5Yb3IoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLmJpdHdpc2VU
byhhLG9wX3hvcixyKTsgcmV0dXJuIHI7IH0KKworLy8gKHB1YmxpYykgdGhpcyAmIH5hCitmdW5j
dGlvbiBvcF9hbmRub3QoeCx5KSB7IHJldHVybiB4Jn55OyB9CitmdW5jdGlvbiBibkFuZE5vdChh
KSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3BfYW5kbm90LHIpOyByZXR1cm4g
cjsgfQorCisvLyAocHVibGljKSB+dGhpcworZnVuY3Rpb24gYm5Ob3QoKSB7CisgIHZhciB0aGlz
X2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHIgPSBuYmkoKTsKKyAgdmFyIHJfYXJyYXkgPSBy
LmFycmF5OworCisgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLnQ7ICsraSkgcl9hcnJheVtpXSA9
IEJJX0RNJn50aGlzX2FycmF5W2ldOworICByLnQgPSB0aGlzLnQ7CisgIHIucyA9IH50aGlzLnM7
CisgIHJldHVybiByOworfQorCisvLyAocHVibGljKSB0aGlzIDw8IG4KK2Z1bmN0aW9uIGJuU2hp
ZnRMZWZ0KG4pIHsKKyAgdmFyIHIgPSBuYmkoKTsKKyAgaWYobiA8IDApIHRoaXMuclNoaWZ0VG8o
LW4scik7IGVsc2UgdGhpcy5sU2hpZnRUbyhuLHIpOworICByZXR1cm4gcjsKK30KKworLy8gKHB1
YmxpYykgdGhpcyA+PiBuCitmdW5jdGlvbiBiblNoaWZ0UmlnaHQobikgeworICB2YXIgciA9IG5i
aSgpOworICBpZihuIDwgMCkgdGhpcy5sU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLnJTaGlmdFRv
KG4scik7CisgIHJldHVybiByOworfQorCisvLyByZXR1cm4gaW5kZXggb2YgbG93ZXN0IDEtYml0
IGluIHgsIHggPCAyXjMxCitmdW5jdGlvbiBsYml0KHgpIHsKKyAgaWYoeCA9PSAwKSByZXR1cm4g
LTE7CisgIHZhciByID0gMDsKKyAgaWYoKHgmMHhmZmZmKSA9PSAwKSB7IHggPj49IDE2OyByICs9
IDE2OyB9CisgIGlmKCh4JjB4ZmYpID09IDApIHsgeCA+Pj0gODsgciArPSA4OyB9CisgIGlmKCh4
JjB4ZikgPT0gMCkgeyB4ID4+PSA0OyByICs9IDQ7IH0KKyAgaWYoKHgmMykgPT0gMCkgeyB4ID4+
PSAyOyByICs9IDI7IH0KKyAgaWYoKHgmMSkgPT0gMCkgKytyOworICByZXR1cm4gcjsKK30KKwor
Ly8gKHB1YmxpYykgcmV0dXJucyBpbmRleCBvZiBsb3dlc3QgMS1iaXQgKG9yIC0xIGlmIG5vbmUp
CitmdW5jdGlvbiBibkdldExvd2VzdFNldEJpdCgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlz
LmFycmF5OworICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpCisgICAgaWYodGhpc19h
cnJheVtpXSAhPSAwKSByZXR1cm4gaSpCSV9EQitsYml0KHRoaXNfYXJyYXlbaV0pOworICBpZih0
aGlzLnMgPCAwKSByZXR1cm4gdGhpcy50KkJJX0RCOworICByZXR1cm4gLTE7Cit9CisKKy8vIHJl
dHVybiBudW1iZXIgb2YgMSBiaXRzIGluIHgKK2Z1bmN0aW9uIGNiaXQoeCkgeworICB2YXIgciA9
IDA7CisgIHdoaWxlKHggIT0gMCkgeyB4ICY9IHgtMTsgKytyOyB9CisgIHJldHVybiByOworfQor
CisvLyAocHVibGljKSByZXR1cm4gbnVtYmVyIG9mIHNldCBiaXRzCitmdW5jdGlvbiBibkJpdENv
dW50KCkgeworICB2YXIgciA9IDAsIHggPSB0aGlzLnMmQklfRE07CisgIGZvcih2YXIgaSA9IDA7
IGkgPCB0aGlzLnQ7ICsraSkgciArPSBjYml0KHRoaXNfYXJyYXlbaV1eeCk7CisgIHJldHVybiBy
OworfQorCisvLyAocHVibGljKSB0cnVlIGlmZiBudGggYml0IGlzIHNldAorZnVuY3Rpb24gYm5U
ZXN0Qml0KG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgaiA9IE1h
dGguZmxvb3Iobi9CSV9EQik7CisgIGlmKGogPj0gdGhpcy50KSByZXR1cm4odGhpcy5zIT0wKTsK
KyAgcmV0dXJuKCh0aGlzX2FycmF5W2pdJigxPDwobiVCSV9EQikpKSE9MCk7Cit9CisKKy8vIChw
cm90ZWN0ZWQpIHRoaXMgb3AgKDE8PG4pCitmdW5jdGlvbiBibnBDaGFuZ2VCaXQobixvcCkgewor
ICB2YXIgciA9IEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChuKTsKKyAgdGhpcy5iaXR3aXNlVG8o
cixvcCxyKTsKKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMpIHRoaXMgfCAoMTw8bikKK2Z1
bmN0aW9uIGJuU2V0Qml0KG4pIHsgcmV0dXJuIHRoaXMuY2hhbmdlQml0KG4sb3Bfb3IpOyB9CisK
Ky8vIChwdWJsaWMpIHRoaXMgJiB+KDE8PG4pCitmdW5jdGlvbiBibkNsZWFyQml0KG4pIHsgcmV0
dXJuIHRoaXMuY2hhbmdlQml0KG4sb3BfYW5kbm90KTsgfQorCisvLyAocHVibGljKSB0aGlzIF4g
KDE8PG4pCitmdW5jdGlvbiBibkZsaXBCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixv
cF94b3IpOyB9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzICsgYQorZnVuY3Rpb24gYm5wQWRk
VG8oYSxyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIGFfYXJyYXkg
PSBhLmFycmF5OworICB2YXIgcl9hcnJheSA9IHIuYXJyYXk7CisgIHZhciBpID0gMCwgYyA9IDAs
IG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKKyAgd2hpbGUoaSA8IG0pIHsKKyAgICBjICs9IHRo
aXNfYXJyYXlbaV0rYV9hcnJheVtpXTsKKyAgICByX2FycmF5W2krK10gPSBjJkJJX0RNOworICAg
IGMgPj49IEJJX0RCOworICB9CisgIGlmKGEudCA8IHRoaXMudCkgeworICAgIGMgKz0gYS5zOwor
ICAgIHdoaWxlKGkgPCB0aGlzLnQpIHsKKyAgICAgIGMgKz0gdGhpc19hcnJheVtpXTsKKyAgICAg
IHJfYXJyYXlbaSsrXSA9IGMmQklfRE07CisgICAgICBjID4+PSBCSV9EQjsKKyAgICB9CisgICAg
YyArPSB0aGlzLnM7CisgIH0KKyAgZWxzZSB7CisgICAgYyArPSB0aGlzLnM7CisgICAgd2hpbGUo
aSA8IGEudCkgeworICAgICAgYyArPSBhX2FycmF5W2ldOworICAgICAgcl9hcnJheVtpKytdID0g
YyZCSV9ETTsKKyAgICAgIGMgPj49IEJJX0RCOworICAgIH0KKyAgICBjICs9IGEuczsKKyAgfQor
ICByLnMgPSAoYzwwKT8tMTowOworICBpZihjID4gMCkgcl9hcnJheVtpKytdID0gYzsKKyAgZWxz
ZSBpZihjIDwgLTEpIHJfYXJyYXlbaSsrXSA9IEJJX0RWK2M7CisgIHIudCA9IGk7CisgIHIuY2xh
bXAoKTsKK30KKworLy8gKHB1YmxpYykgdGhpcyArIGEKK2Z1bmN0aW9uIGJuQWRkKGEpIHsgdmFy
IHIgPSBuYmkoKTsgdGhpcy5hZGRUbyhhLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB0
aGlzIC0gYQorZnVuY3Rpb24gYm5TdWJ0cmFjdChhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuc3Vi
VG8oYSxyKTsgcmV0dXJuIHI7IH0KKworLy8gKHB1YmxpYykgdGhpcyAqIGEKK2Z1bmN0aW9uIGJu
TXVsdGlwbHkoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLm11bHRpcGx5VG8oYSxyKTsgcmV0dXJu
IHI7IH0KKworLy8gKHB1YmxpYykgdGhpcyAvIGEKK2Z1bmN0aW9uIGJuRGl2aWRlKGEpIHsgdmFy
IHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLHIsbnVsbCk7IHJldHVybiByOyB9CisKKy8vIChw
dWJsaWMpIHRoaXMgJSBhCitmdW5jdGlvbiBiblJlbWFpbmRlcihhKSB7IHZhciByID0gbmJpKCk7
IHRoaXMuZGl2UmVtVG8oYSxudWxsLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSBbdGhp
cy9hLHRoaXMlYV0KK2Z1bmN0aW9uIGJuRGl2aWRlQW5kUmVtYWluZGVyKGEpIHsKKyAgdmFyIHEg
PSBuYmkoKSwgciA9IG5iaSgpOworICB0aGlzLmRpdlJlbVRvKGEscSxyKTsKKyAgcmV0dXJuIG5l
dyBBcnJheShxLHIpOworfQorCisvLyAocHJvdGVjdGVkKSB0aGlzICo9IG4sIHRoaXMgPj0gMCwg
MSA8IG4gPCBEVgorZnVuY3Rpb24gYm5wRE11bHRpcGx5KG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkg
PSB0aGlzLmFycmF5OworICB0aGlzX2FycmF5W3RoaXMudF0gPSB0aGlzLmFtKDAsbi0xLHRoaXMs
MCwwLHRoaXMudCk7CisgICsrdGhpcy50OworICB0aGlzLmNsYW1wKCk7Cit9CisKKy8vIChwcm90
ZWN0ZWQpIHRoaXMgKz0gbiA8PCB3IHdvcmRzLCB0aGlzID49IDAKK2Z1bmN0aW9uIGJucERBZGRP
ZmZzZXQobix3KSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgd2hpbGUodGhp
cy50IDw9IHcpIHRoaXNfYXJyYXlbdGhpcy50KytdID0gMDsKKyAgdGhpc19hcnJheVt3XSArPSBu
OworICB3aGlsZSh0aGlzX2FycmF5W3ddID49IEJJX0RWKSB7CisgICAgdGhpc19hcnJheVt3XSAt
PSBCSV9EVjsKKyAgICBpZigrK3cgPj0gdGhpcy50KSB0aGlzX2FycmF5W3RoaXMudCsrXSA9IDA7
CisgICAgKyt0aGlzX2FycmF5W3ddOworICB9Cit9CisKKy8vIEEgIm51bGwiIHJlZHVjZXIKK2Z1
bmN0aW9uIE51bGxFeHAoKSB7fQorZnVuY3Rpb24gbk5vcCh4KSB7IHJldHVybiB4OyB9CitmdW5j
dGlvbiBuTXVsVG8oeCx5LHIpIHsgeC5tdWx0aXBseVRvKHkscik7IH0KK2Z1bmN0aW9uIG5TcXJU
byh4LHIpIHsgeC5zcXVhcmVUbyhyKTsgfQorCitOdWxsRXhwLnByb3RvdHlwZS5jb252ZXJ0ID0g
bk5vcDsKK051bGxFeHAucHJvdG90eXBlLnJldmVydCA9IG5Ob3A7CitOdWxsRXhwLnByb3RvdHlw
ZS5tdWxUbyA9IG5NdWxUbzsKK051bGxFeHAucHJvdG90eXBlLnNxclRvID0gblNxclRvOworCisv
LyAocHVibGljKSB0aGlzXmUKK2Z1bmN0aW9uIGJuUG93KGUpIHsgcmV0dXJuIHRoaXMuZXhwKGUs
bmV3IE51bGxFeHAoKSk7IH0KKworLy8gKHByb3RlY3RlZCkgciA9IGxvd2VyIG4gd29yZHMgb2Yg
InRoaXMgKiBhIiwgYS50IDw9IG4KKy8vICJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUg
aWYgYXBwcm9wcmlhdGUuCitmdW5jdGlvbiBibnBNdWx0aXBseUxvd2VyVG8oYSxuLHIpIHsKKyAg
dmFyIHJfYXJyYXkgPSByLmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIHZhciBp
ID0gTWF0aC5taW4odGhpcy50K2EudCxuKTsKKyAgci5zID0gMDsgLy8gYXNzdW1lcyBhLHRoaXMg
Pj0gMAorICByLnQgPSBpOworICB3aGlsZShpID4gMCkgcl9hcnJheVstLWldID0gMDsKKyAgdmFy
IGo7CisgIGZvcihqID0gci50LXRoaXMudDsgaSA8IGo7ICsraSkgcl9hcnJheVtpK3RoaXMudF0g
PSB0aGlzLmFtKDAsYV9hcnJheVtpXSxyLGksMCx0aGlzLnQpOworICBmb3IoaiA9IE1hdGgubWlu
KGEudCxuKTsgaSA8IGo7ICsraSkgdGhpcy5hbSgwLGFfYXJyYXlbaV0scixpLDAsbi1pKTsKKyAg
ci5jbGFtcCgpOworfQorCisvLyAocHJvdGVjdGVkKSByID0gInRoaXMgKiBhIiB3aXRob3V0IGxv
d2VyIG4gd29yZHMsIG4gPiAwCisvLyAidGhpcyIgc2hvdWxkIGJlIHRoZSBsYXJnZXIgb25lIGlm
IGFwcHJvcHJpYXRlLgorZnVuY3Rpb24gYm5wTXVsdGlwbHlVcHBlclRvKGEsbixyKSB7CisgIHZh
ciByX2FycmF5ID0gci5hcnJheTsKKyAgdmFyIGFfYXJyYXkgPSBhLmFycmF5OworICAtLW47Cisg
IHZhciBpID0gci50ID0gdGhpcy50K2EudC1uOworICByLnMgPSAwOyAvLyBhc3N1bWVzIGEsdGhp
cyA+PSAwCisgIHdoaWxlKC0taSA+PSAwKSByX2FycmF5W2ldID0gMDsKKyAgZm9yKGkgPSBNYXRo
Lm1heChuLXRoaXMudCwwKTsgaSA8IGEudDsgKytpKQorICAgIHJfYXJyYXlbdGhpcy50K2ktbl0g
PSB0aGlzLmFtKG4taSxhX2FycmF5W2ldLHIsMCwwLHRoaXMudCtpLW4pOworICByLmNsYW1wKCk7
CisgIHIuZHJTaGlmdFRvKDEscik7Cit9CisKKy8vIEJhcnJldHQgbW9kdWxhciByZWR1Y3Rpb24K
K2Z1bmN0aW9uIEJhcnJldHQobSkgeworICAvLyBzZXR1cCBCYXJyZXR0CisgIHRoaXMucjIgPSBu
YmkoKTsKKyAgdGhpcy5xMyA9IG5iaSgpOworICBCaWdJbnRlZ2VyLk9ORS5kbFNoaWZ0VG8oMipt
LnQsdGhpcy5yMik7CisgIHRoaXMubXUgPSB0aGlzLnIyLmRpdmlkZShtKTsKKyAgdGhpcy5tID0g
bTsKK30KKworZnVuY3Rpb24gYmFycmV0dENvbnZlcnQoeCkgeworICBpZih4LnMgPCAwIHx8IHgu
dCA+IDIqdGhpcy5tLnQpIHJldHVybiB4Lm1vZCh0aGlzLm0pOworICBlbHNlIGlmKHguY29tcGFy
ZVRvKHRoaXMubSkgPCAwKSByZXR1cm4geDsKKyAgZWxzZSB7IHZhciByID0gbmJpKCk7IHguY29w
eVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgcmV0dXJuIHI7IH0KK30KKworZnVuY3Rpb24gYmFycmV0
dFJldmVydCh4KSB7IHJldHVybiB4OyB9CisKKy8vIHggPSB4IG1vZCBtIChIQUMgMTQuNDIpCitm
dW5jdGlvbiBiYXJyZXR0UmVkdWNlKHgpIHsKKyAgeC5kclNoaWZ0VG8odGhpcy5tLnQtMSx0aGlz
LnIyKTsKKyAgaWYoeC50ID4gdGhpcy5tLnQrMSkgeyB4LnQgPSB0aGlzLm0udCsxOyB4LmNsYW1w
KCk7IH0KKyAgdGhpcy5tdS5tdWx0aXBseVVwcGVyVG8odGhpcy5yMix0aGlzLm0udCsxLHRoaXMu
cTMpOworICB0aGlzLm0ubXVsdGlwbHlMb3dlclRvKHRoaXMucTMsdGhpcy5tLnQrMSx0aGlzLnIy
KTsKKyAgd2hpbGUoeC5jb21wYXJlVG8odGhpcy5yMikgPCAwKSB4LmRBZGRPZmZzZXQoMSx0aGlz
Lm0udCsxKTsKKyAgeC5zdWJUbyh0aGlzLnIyLHgpOworICB3aGlsZSh4LmNvbXBhcmVUbyh0aGlz
Lm0pID49IDApIHguc3ViVG8odGhpcy5tLHgpOworfQorCisvLyByID0geF4yIG1vZCBtOyB4ICE9
IHIKK2Z1bmN0aW9uIGJhcnJldHRTcXJUbyh4LHIpIHsgeC5zcXVhcmVUbyhyKTsgdGhpcy5yZWR1
Y2Uocik7IH0KKworLy8gciA9IHgqeSBtb2QgbTsgeCx5ICE9IHIKK2Z1bmN0aW9uIGJhcnJldHRN
dWxUbyh4LHkscikgeyB4Lm11bHRpcGx5VG8oeSxyKTsgdGhpcy5yZWR1Y2Uocik7IH0KKworQmFy
cmV0dC5wcm90b3R5cGUuY29udmVydCA9IGJhcnJldHRDb252ZXJ0OworQmFycmV0dC5wcm90b3R5
cGUucmV2ZXJ0ID0gYmFycmV0dFJldmVydDsKK0JhcnJldHQucHJvdG90eXBlLnJlZHVjZSA9IGJh
cnJldHRSZWR1Y2U7CitCYXJyZXR0LnByb3RvdHlwZS5tdWxUbyA9IGJhcnJldHRNdWxUbzsKK0Jh
cnJldHQucHJvdG90eXBlLnNxclRvID0gYmFycmV0dFNxclRvOworCisvLyAocHVibGljKSB0aGlz
XmUgJSBtIChIQUMgMTQuODUpCitmdW5jdGlvbiBibk1vZFBvdyhlLG0pIHsKKyAgdmFyIGVfYXJy
YXkgPSBlLmFycmF5OworICB2YXIgaSA9IGUuYml0TGVuZ3RoKCksIGssIHIgPSBuYnYoMSksIHo7
CisgIGlmKGkgPD0gMCkgcmV0dXJuIHI7CisgIGVsc2UgaWYoaSA8IDE4KSBrID0gMTsKKyAgZWxz
ZSBpZihpIDwgNDgpIGsgPSAzOworICBlbHNlIGlmKGkgPCAxNDQpIGsgPSA0OworICBlbHNlIGlm
KGkgPCA3NjgpIGsgPSA1OworICBlbHNlIGsgPSA2OworICBpZihpIDwgOCkKKyAgICB6ID0gbmV3
IENsYXNzaWMobSk7CisgIGVsc2UgaWYobS5pc0V2ZW4oKSkKKyAgICB6ID0gbmV3IEJhcnJldHQo
bSk7CisgIGVsc2UKKyAgICB6ID0gbmV3IE1vbnRnb21lcnkobSk7CisKKyAgLy8gcHJlY29tcHV0
YXRpb24KKyAgdmFyIGcgPSBuZXcgQXJyYXkoKSwgbiA9IDMsIGsxID0gay0xLCBrbSA9ICgxPDxr
KS0xOworICBnWzFdID0gei5jb252ZXJ0KHRoaXMpOworICBpZihrID4gMSkgeworICAgIHZhciBn
MiA9IG5iaSgpOworICAgIHouc3FyVG8oZ1sxXSxnMik7CisgICAgd2hpbGUobiA8PSBrbSkgewor
ICAgICAgZ1tuXSA9IG5iaSgpOworICAgICAgei5tdWxUbyhnMixnW24tMl0sZ1tuXSk7CisgICAg
ICBuICs9IDI7CisgICAgfQorICB9CisKKyAgdmFyIGogPSBlLnQtMSwgdywgaXMxID0gdHJ1ZSwg
cjIgPSBuYmkoKSwgdDsKKyAgaSA9IG5iaXRzKGVfYXJyYXlbal0pLTE7CisgIHdoaWxlKGogPj0g
MCkgeworICAgIGlmKGkgPj0gazEpIHcgPSAoZV9hcnJheVtqXT4+KGktazEpKSZrbTsKKyAgICBl
bHNlIHsKKyAgICAgIHcgPSAoZV9hcnJheVtqXSYoKDE8PChpKzEpKS0xKSk8PChrMS1pKTsKKyAg
ICAgIGlmKGogPiAwKSB3IHw9IGVfYXJyYXlbai0xXT4+KEJJX0RCK2ktazEpOworICAgIH0KKwor
ICAgIG4gPSBrOworICAgIHdoaWxlKCh3JjEpID09IDApIHsgdyA+Pj0gMTsgLS1uOyB9CisgICAg
aWYoKGkgLT0gbikgPCAwKSB7IGkgKz0gQklfREI7IC0tajsgfQorICAgIGlmKGlzMSkgewkvLyBy
ZXQgPT0gMSwgZG9uJ3QgYm90aGVyIHNxdWFyaW5nIG9yIG11bHRpcGx5aW5nIGl0CisgICAgICBn
W3ddLmNvcHlUbyhyKTsKKyAgICAgIGlzMSA9IGZhbHNlOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHdoaWxlKG4gPiAxKSB7IHouc3FyVG8ocixyMik7IHouc3FyVG8ocjIscik7IG4gLT0gMjsg
fQorICAgICAgaWYobiA+IDApIHouc3FyVG8ocixyMik7IGVsc2UgeyB0ID0gcjsgciA9IHIyOyBy
MiA9IHQ7IH0KKyAgICAgIHoubXVsVG8ocjIsZ1t3XSxyKTsKKyAgICB9CisKKyAgICB3aGlsZShq
ID49IDAgJiYgKGVfYXJyYXlbal0mKDE8PGkpKSA9PSAwKSB7CisgICAgICB6LnNxclRvKHIscjIp
OyB0ID0gcjsgciA9IHIyOyByMiA9IHQ7CisgICAgICBpZigtLWkgPCAwKSB7IGkgPSBCSV9EQi0x
OyAtLWo7IH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHoucmV2ZXJ0KHIpOworfQorCisvLyAocHVi
bGljKSBnY2QodGhpcyxhKSAoSEFDIDE0LjU0KQorZnVuY3Rpb24gYm5HQ0QoYSkgeworICB2YXIg
eCA9ICh0aGlzLnM8MCk/dGhpcy5uZWdhdGUoKTp0aGlzLmNsb25lKCk7CisgIHZhciB5ID0gKGEu
czwwKT9hLm5lZ2F0ZSgpOmEuY2xvbmUoKTsKKyAgaWYoeC5jb21wYXJlVG8oeSkgPCAwKSB7IHZh
ciB0ID0geDsgeCA9IHk7IHkgPSB0OyB9CisgIHZhciBpID0geC5nZXRMb3dlc3RTZXRCaXQoKSwg
ZyA9IHkuZ2V0TG93ZXN0U2V0Qml0KCk7CisgIGlmKGcgPCAwKSByZXR1cm4geDsKKyAgaWYoaSA8
IGcpIGcgPSBpOworICBpZihnID4gMCkgeworICAgIHguclNoaWZ0VG8oZyx4KTsKKyAgICB5LnJT
aGlmdFRvKGcseSk7CisgIH0KKyAgd2hpbGUoeC5zaWdudW0oKSA+IDApIHsKKyAgICBpZigoaSA9
IHguZ2V0TG93ZXN0U2V0Qml0KCkpID4gMCkgeC5yU2hpZnRUbyhpLHgpOworICAgIGlmKChpID0g
eS5nZXRMb3dlc3RTZXRCaXQoKSkgPiAwKSB5LnJTaGlmdFRvKGkseSk7CisgICAgaWYoeC5jb21w
YXJlVG8oeSkgPj0gMCkgeworICAgICAgeC5zdWJUbyh5LHgpOworICAgICAgeC5yU2hpZnRUbygx
LHgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHkuc3ViVG8oeCx5KTsKKyAgICAgIHkuclNo
aWZ0VG8oMSx5KTsKKyAgICB9CisgIH0KKyAgaWYoZyA+IDApIHkubFNoaWZ0VG8oZyx5KTsKKyAg
cmV0dXJuIHk7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHRoaXMgJSBuLCBuIDwgMl4yNgorZnVuY3Rp
b24gYm5wTW9kSW50KG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICBpZihu
IDw9IDApIHJldHVybiAwOworICB2YXIgZCA9IEJJX0RWJW4sIHIgPSAodGhpcy5zPDApP24tMTow
OworICBpZih0aGlzLnQgPiAwKQorICAgIGlmKGQgPT0gMCkgciA9IHRoaXNfYXJyYXlbMF0lbjsK
KyAgICBlbHNlIGZvcih2YXIgaSA9IHRoaXMudC0xOyBpID49IDA7IC0taSkgciA9IChkKnIrdGhp
c19hcnJheVtpXSklbjsKKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMpIDEvdGhpcyAlIG0g
KEhBQyAxNC42MSkKK2Z1bmN0aW9uIGJuTW9kSW52ZXJzZShtKSB7CisgIHZhciBhYyA9IG0uaXNF
dmVuKCk7CisgIGlmKCh0aGlzLmlzRXZlbigpICYmIGFjKSB8fCBtLnNpZ251bSgpID09IDApIHJl
dHVybiBCaWdJbnRlZ2VyLlpFUk87CisgIHZhciB1ID0gbS5jbG9uZSgpLCB2ID0gdGhpcy5jbG9u
ZSgpOworICB2YXIgYSA9IG5idigxKSwgYiA9IG5idigwKSwgYyA9IG5idigwKSwgZCA9IG5idigx
KTsKKyAgd2hpbGUodS5zaWdudW0oKSAhPSAwKSB7CisgICAgd2hpbGUodS5pc0V2ZW4oKSkgewor
ICAgICAgdS5yU2hpZnRUbygxLHUpOworICAgICAgaWYoYWMpIHsKKyAgICAgICAgaWYoIWEuaXNF
dmVuKCkgfHwgIWIuaXNFdmVuKCkpIHsgYS5hZGRUbyh0aGlzLGEpOyBiLnN1YlRvKG0sYik7IH0K
KyAgICAgICAgYS5yU2hpZnRUbygxLGEpOworICAgICAgfQorICAgICAgZWxzZSBpZighYi5pc0V2
ZW4oKSkgYi5zdWJUbyhtLGIpOworICAgICAgYi5yU2hpZnRUbygxLGIpOworICAgIH0KKyAgICB3
aGlsZSh2LmlzRXZlbigpKSB7CisgICAgICB2LnJTaGlmdFRvKDEsdik7CisgICAgICBpZihhYykg
eworICAgICAgICBpZighYy5pc0V2ZW4oKSB8fCAhZC5pc0V2ZW4oKSkgeyBjLmFkZFRvKHRoaXMs
Yyk7IGQuc3ViVG8obSxkKTsgfQorICAgICAgICBjLnJTaGlmdFRvKDEsYyk7CisgICAgICB9Cisg
ICAgICBlbHNlIGlmKCFkLmlzRXZlbigpKSBkLnN1YlRvKG0sZCk7CisgICAgICBkLnJTaGlmdFRv
KDEsZCk7CisgICAgfQorICAgIGlmKHUuY29tcGFyZVRvKHYpID49IDApIHsKKyAgICAgIHUuc3Vi
VG8odix1KTsKKyAgICAgIGlmKGFjKSBhLnN1YlRvKGMsYSk7CisgICAgICBiLnN1YlRvKGQsYik7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgdi5zdWJUbyh1LHYpOworICAgICAgaWYoYWMpIGMu
c3ViVG8oYSxjKTsKKyAgICAgIGQuc3ViVG8oYixkKTsKKyAgICB9CisgIH0KKyAgaWYodi5jb21w
YXJlVG8oQmlnSW50ZWdlci5PTkUpICE9IDApIHJldHVybiBCaWdJbnRlZ2VyLlpFUk87CisgIGlm
KGQuY29tcGFyZVRvKG0pID49IDApIHJldHVybiBkLnN1YnRyYWN0KG0pOworICBpZihkLnNpZ251
bSgpIDwgMCkgZC5hZGRUbyhtLGQpOyBlbHNlIHJldHVybiBkOworICBpZihkLnNpZ251bSgpIDwg
MCkgcmV0dXJuIGQuYWRkKG0pOyBlbHNlIHJldHVybiBkOworfQorCit2YXIgbG93cHJpbWVzID0g
WzIsMyw1LDcsMTEsMTMsMTcsMTksMjMsMjksMzEsMzcsNDEsNDMsNDcsNTMsNTksNjEsNjcsNzEs
NzMsNzksODMsODksOTcsMTAxLDEwMywxMDcsMTA5LDExMywxMjcsMTMxLDEzNywxMzksMTQ5LDE1
MSwxNTcsMTYzLDE2NywxNzMsMTc5LDE4MSwxOTEsMTkzLDE5NywxOTksMjExLDIyMywyMjcsMjI5
LDIzMywyMzksMjQxLDI1MSwyNTcsMjYzLDI2OSwyNzEsMjc3LDI4MSwyODMsMjkzLDMwNywzMTEs
MzEzLDMxNywzMzEsMzM3LDM0NywzNDksMzUzLDM1OSwzNjcsMzczLDM3OSwzODMsMzg5LDM5Nyw0
MDEsNDA5LDQxOSw0MjEsNDMxLDQzMyw0MzksNDQzLDQ0OSw0NTcsNDYxLDQ2Myw0NjcsNDc5LDQ4
Nyw0OTEsNDk5LDUwMyw1MDldOwordmFyIGxwbGltID0gKDE8PDI2KS9sb3dwcmltZXNbbG93cHJp
bWVzLmxlbmd0aC0xXTsKKworLy8gKHB1YmxpYykgdGVzdCBwcmltYWxpdHkgd2l0aCBjZXJ0YWlu
dHkgPj0gMS0uNV50CitmdW5jdGlvbiBibklzUHJvYmFibGVQcmltZSh0KSB7CisgIHZhciBpLCB4
ID0gdGhpcy5hYnMoKTsKKyAgdmFyIHhfYXJyYXkgPSB4LmFycmF5OworICBpZih4LnQgPT0gMSAm
JiB4X2FycmF5WzBdIDw9IGxvd3ByaW1lc1tsb3dwcmltZXMubGVuZ3RoLTFdKSB7CisgICAgZm9y
KGkgPSAwOyBpIDwgbG93cHJpbWVzLmxlbmd0aDsgKytpKQorICAgICAgaWYoeF9hcnJheVswXSA9
PSBsb3dwcmltZXNbaV0pIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBp
Zih4LmlzRXZlbigpKSByZXR1cm4gZmFsc2U7CisgIGkgPSAxOworICB3aGlsZShpIDwgbG93cHJp
bWVzLmxlbmd0aCkgeworICAgIHZhciBtID0gbG93cHJpbWVzW2ldLCBqID0gaSsxOworICAgIHdo
aWxlKGogPCBsb3dwcmltZXMubGVuZ3RoICYmIG0gPCBscGxpbSkgbSAqPSBsb3dwcmltZXNbaisr
XTsKKyAgICBtID0geC5tb2RJbnQobSk7CisgICAgd2hpbGUoaSA8IGopIGlmKG0lbG93cHJpbWVz
W2krK10gPT0gMCkgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB4Lm1pbGxlclJhYmluKHQp
OworfQorCisvLyAocHJvdGVjdGVkKSB0cnVlIGlmIHByb2JhYmx5IHByaW1lIChIQUMgNC4yNCwg
TWlsbGVyLVJhYmluKQorZnVuY3Rpb24gYm5wTWlsbGVyUmFiaW4odCkgeworICB2YXIgbjEgPSB0
aGlzLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKKyAgdmFyIGsgPSBuMS5nZXRMb3dlc3RTZXRC
aXQoKTsKKyAgaWYoayA8PSAwKSByZXR1cm4gZmFsc2U7CisgIHZhciByID0gbjEuc2hpZnRSaWdo
dChrKTsKKyAgdCA9ICh0KzEpPj4xOworICBpZih0ID4gbG93cHJpbWVzLmxlbmd0aCkgdCA9IGxv
d3ByaW1lcy5sZW5ndGg7CisgIHZhciBhID0gbmJpKCk7CisgIGZvcih2YXIgaSA9IDA7IGkgPCB0
OyArK2kpIHsKKyAgICBhLmZyb21JbnQobG93cHJpbWVzW2ldKTsKKyAgICB2YXIgeSA9IGEubW9k
UG93KHIsdGhpcyk7CisgICAgaWYoeS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpICE9IDAgJiYg
eS5jb21wYXJlVG8objEpICE9IDApIHsKKyAgICAgIHZhciBqID0gMTsKKyAgICAgIHdoaWxlKGor
KyA8IGsgJiYgeS5jb21wYXJlVG8objEpICE9IDApIHsKKyAgICAgICAgeSA9IHkubW9kUG93SW50
KDIsdGhpcyk7CisgICAgICAgIGlmKHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAwKSBy
ZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZih5LmNvbXBhcmVUbyhuMSkgIT0gMCkgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworLy8gcHJvdGVjdGVk
CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5jaHVua1NpemUgPSBibnBDaHVua1NpemU7CitCaWdJbnRl
Z2VyLnByb3RvdHlwZS50b1JhZGl4ID0gYm5wVG9SYWRpeDsKK0JpZ0ludGVnZXIucHJvdG90eXBl
LmZyb21SYWRpeCA9IGJucEZyb21SYWRpeDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmZyb21OdW1i
ZXIgPSBibnBGcm9tTnVtYmVyOworQmlnSW50ZWdlci5wcm90b3R5cGUuYml0d2lzZVRvID0gYm5w
Qml0d2lzZVRvOworQmlnSW50ZWdlci5wcm90b3R5cGUuY2hhbmdlQml0ID0gYm5wQ2hhbmdlQml0
OworQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG8gPSBibnBBZGRUbzsKK0JpZ0ludGVnZXIucHJv
dG90eXBlLmRNdWx0aXBseSA9IGJucERNdWx0aXBseTsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmRB
ZGRPZmZzZXQgPSBibnBEQWRkT2Zmc2V0OworQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHlM
b3dlclRvID0gYm5wTXVsdGlwbHlMb3dlclRvOworQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlw
bHlVcHBlclRvID0gYm5wTXVsdGlwbHlVcHBlclRvOworQmlnSW50ZWdlci5wcm90b3R5cGUubW9k
SW50ID0gYm5wTW9kSW50OworQmlnSW50ZWdlci5wcm90b3R5cGUubWlsbGVyUmFiaW4gPSBibnBN
aWxsZXJSYWJpbjsKKworLy8gcHVibGljCitCaWdJbnRlZ2VyLnByb3RvdHlwZS5jbG9uZSA9IGJu
Q2xvbmU7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5pbnRWYWx1ZSA9IGJuSW50VmFsdWU7CitCaWdJ
bnRlZ2VyLnByb3RvdHlwZS5ieXRlVmFsdWUgPSBibkJ5dGVWYWx1ZTsKK0JpZ0ludGVnZXIucHJv
dG90eXBlLnNob3J0VmFsdWUgPSBiblNob3J0VmFsdWU7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5z
aWdudW0gPSBiblNpZ051bTsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnRvQnl0ZUFycmF5ID0gYm5U
b0J5dGVBcnJheTsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IGJuRXF1YWxzOworQmln
SW50ZWdlci5wcm90b3R5cGUubWluID0gYm5NaW47CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tYXgg
PSBibk1heDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmFuZCA9IGJuQW5kOworQmlnSW50ZWdlci5w
cm90b3R5cGUub3IgPSBibk9yOworQmlnSW50ZWdlci5wcm90b3R5cGUueG9yID0gYm5Yb3I7CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS5hbmROb3QgPSBibkFuZE5vdDsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLm5vdCA9IGJuTm90OworQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gYm5TaGlm
dExlZnQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gYm5TaGlmdFJpZ2h0Owor
QmlnSW50ZWdlci5wcm90b3R5cGUuZ2V0TG93ZXN0U2V0Qml0ID0gYm5HZXRMb3dlc3RTZXRCaXQ7
CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRDb3VudCA9IGJuQml0Q291bnQ7CitCaWdJbnRlZ2Vy
LnByb3RvdHlwZS50ZXN0Qml0ID0gYm5UZXN0Qml0OworQmlnSW50ZWdlci5wcm90b3R5cGUuc2V0
Qml0ID0gYm5TZXRCaXQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5jbGVhckJpdCA9IGJuQ2xlYXJC
aXQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5mbGlwQml0ID0gYm5GbGlwQml0OworQmlnSW50ZWdl
ci5wcm90b3R5cGUuYWRkID0gYm5BZGQ7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9
IGJuU3VidHJhY3Q7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseSA9IGJuTXVsdGlwbHk7
CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBibkRpdmlkZTsKK0JpZ0ludGVnZXIucHJv
dG90eXBlLnJlbWFpbmRlciA9IGJuUmVtYWluZGVyOworQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2
aWRlQW5kUmVtYWluZGVyID0gYm5EaXZpZGVBbmRSZW1haW5kZXI7CitCaWdJbnRlZ2VyLnByb3Rv
dHlwZS5tb2RQb3cgPSBibk1vZFBvdzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludmVyc2Ug
PSBibk1vZEludmVyc2U7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBiblBvdzsKK0JpZ0lu
dGVnZXIucHJvdG90eXBlLmdjZCA9IGJuR0NEOworQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9i
YWJsZVByaW1lID0gYm5Jc1Byb2JhYmxlUHJpbWU7CisKKy8vIEJpZ0ludGVnZXIgaW50ZXJmYWNl
cyBub3QgaW1wbGVtZW50ZWQgaW4ganNibjoKKworLy8gQmlnSW50ZWdlcihpbnQgc2lnbnVtLCBi
eXRlW10gbWFnbml0dWRlKQorLy8gZG91YmxlIGRvdWJsZVZhbHVlKCkKKy8vIGZsb2F0IGZsb2F0
VmFsdWUoKQorLy8gaW50IGhhc2hDb2RlKCkKKy8vIGxvbmcgbG9uZ1ZhbHVlKCkKKy8vIHN0YXRp
YyBCaWdJbnRlZ2VyIHZhbHVlT2YobG9uZyB2YWwpCisvLyBwcm5nNC5qcyAtIHVzZXMgQXJjZm91
ciBhcyBhIFBSTkcKKworZnVuY3Rpb24gQXJjZm91cigpIHsKKyAgdGhpcy5pID0gMDsKKyAgdGhp
cy5qID0gMDsKKyAgdGhpcy5TID0gbmV3IEFycmF5KCk7Cit9CisKKy8vIEluaXRpYWxpemUgYXJj
Zm91ciBjb250ZXh0IGZyb20ga2V5LCBhbiBhcnJheSBvZiBpbnRzLCBlYWNoIGZyb20gWzAuLjI1
NV0KK2Z1bmN0aW9uIEFSQzRpbml0KGtleSkgeworICB2YXIgaSwgaiwgdDsKKyAgZm9yKGkgPSAw
OyBpIDwgMjU2OyArK2kpCisgICAgdGhpcy5TW2ldID0gaTsKKyAgaiA9IDA7CisgIGZvcihpID0g
MDsgaSA8IDI1NjsgKytpKSB7CisgICAgaiA9IChqICsgdGhpcy5TW2ldICsga2V5W2kgJSBrZXku
bGVuZ3RoXSkgJiAyNTU7CisgICAgdCA9IHRoaXMuU1tpXTsKKyAgICB0aGlzLlNbaV0gPSB0aGlz
LlNbal07CisgICAgdGhpcy5TW2pdID0gdDsKKyAgfQorICB0aGlzLmkgPSAwOworICB0aGlzLmog
PSAwOworfQorCitmdW5jdGlvbiBBUkM0bmV4dCgpIHsKKyAgdmFyIHQ7CisgIHRoaXMuaSA9ICh0
aGlzLmkgKyAxKSAmIDI1NTsKKyAgdGhpcy5qID0gKHRoaXMuaiArIHRoaXMuU1t0aGlzLmldKSAm
IDI1NTsKKyAgdCA9IHRoaXMuU1t0aGlzLmldOworICB0aGlzLlNbdGhpcy5pXSA9IHRoaXMuU1t0
aGlzLmpdOworICB0aGlzLlNbdGhpcy5qXSA9IHQ7CisgIHJldHVybiB0aGlzLlNbKHQgKyB0aGlz
LlNbdGhpcy5pXSkgJiAyNTVdOworfQorCitBcmNmb3VyLnByb3RvdHlwZS5pbml0ID0gQVJDNGlu
aXQ7CitBcmNmb3VyLnByb3RvdHlwZS5uZXh0ID0gQVJDNG5leHQ7CisKKy8vIFBsdWcgaW4geW91
ciBSTkcgY29uc3RydWN0b3IgaGVyZQorZnVuY3Rpb24gcHJuZ19uZXdzdGF0ZSgpIHsKKyAgcmV0
dXJuIG5ldyBBcmNmb3VyKCk7Cit9CisKKy8vIFBvb2wgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUg
b2YgNCBhbmQgZ3JlYXRlciB0aGFuIDMyLgorLy8gQW4gYXJyYXkgb2YgYnl0ZXMgdGhlIHNpemUg
b2YgdGhlIHBvb2wgd2lsbCBiZSBwYXNzZWQgdG8gaW5pdCgpCit2YXIgcm5nX3BzaXplID0gMjU2
OworLy8gUmFuZG9tIG51bWJlciBnZW5lcmF0b3IgLSByZXF1aXJlcyBhIFBSTkcgYmFja2VuZCwg
ZS5nLiBwcm5nNC5qcworCisvLyBGb3IgYmVzdCByZXN1bHRzLCBwdXQgY29kZSBsaWtlCisvLyA8
Ym9keSBvbkNsaWNrPSdybmdfc2VlZF90aW1lKCk7JyBvbktleVByZXNzPSdybmdfc2VlZF90aW1l
KCk7Jz4KKy8vIGluIHlvdXIgbWFpbiBIVE1MIGRvY3VtZW50LgorCit2YXIgcm5nX3N0YXRlOwor
dmFyIHJuZ19wb29sOwordmFyIHJuZ19wcHRyOworCisvLyBNaXggaW4gYSAzMi1iaXQgaW50ZWdl
ciBpbnRvIHRoZSBwb29sCitmdW5jdGlvbiBybmdfc2VlZF9pbnQoeCkgeworICBybmdfcG9vbFty
bmdfcHB0cisrXSBePSB4ICYgMjU1OworICBybmdfcG9vbFtybmdfcHB0cisrXSBePSAoeCA+PiA4
KSAmIDI1NTsKKyAgcm5nX3Bvb2xbcm5nX3BwdHIrK10gXj0gKHggPj4gMTYpICYgMjU1OworICBy
bmdfcG9vbFtybmdfcHB0cisrXSBePSAoeCA+PiAyNCkgJiAyNTU7CisgIGlmKHJuZ19wcHRyID49
IHJuZ19wc2l6ZSkgcm5nX3BwdHIgLT0gcm5nX3BzaXplOworfQorCisvLyBNaXggaW4gdGhlIGN1
cnJlbnQgdGltZSAody9taWxsaXNlY29uZHMpIGludG8gdGhlIHBvb2wKK2Z1bmN0aW9uIHJuZ19z
ZWVkX3RpbWUoKSB7CisgIC8vIFVzZSBwcmUtY29tcHV0ZWQgZGF0ZSB0byBhdm9pZCBtYWtpbmcg
dGhlIGJlbmNobWFyayAKKyAgLy8gcmVzdWx0cyBkZXBlbmRlbnQgb24gdGhlIGN1cnJlbnQgZGF0
ZS4KKyAgcm5nX3NlZWRfaW50KDExMjI5MjY5ODk0ODcpOworfQorCisvLyBJbml0aWFsaXplIHRo
ZSBwb29sIHdpdGgganVuayBpZiBuZWVkZWQuCitpZihybmdfcG9vbCA9PSBudWxsKSB7CisgIHJu
Z19wb29sID0gbmV3IEFycmF5KCk7CisgIHJuZ19wcHRyID0gMDsKKyAgdmFyIHQ7CisgIHdoaWxl
KHJuZ19wcHRyIDwgcm5nX3BzaXplKSB7ICAvLyBleHRyYWN0IHNvbWUgcmFuZG9tbmVzcyBmcm9t
IE1hdGgucmFuZG9tKCkKKyAgICB0ID0gTWF0aC5mbG9vcig2NTUzNiAqIE1hdGgucmFuZG9tKCkp
OworICAgIHJuZ19wb29sW3JuZ19wcHRyKytdID0gdCA+Pj4gODsKKyAgICBybmdfcG9vbFtybmdf
cHB0cisrXSA9IHQgJiAyNTU7CisgIH0KKyAgcm5nX3BwdHIgPSAwOworICBybmdfc2VlZF90aW1l
KCk7CisgIC8vcm5nX3NlZWRfaW50KHdpbmRvdy5zY3JlZW5YKTsKKyAgLy9ybmdfc2VlZF9pbnQo
d2luZG93LnNjcmVlblkpOworfQorCitmdW5jdGlvbiBybmdfZ2V0X2J5dGUoKSB7CisgIGlmKHJu
Z19zdGF0ZSA9PSBudWxsKSB7CisgICAgcm5nX3NlZWRfdGltZSgpOworICAgIHJuZ19zdGF0ZSA9
IHBybmdfbmV3c3RhdGUoKTsKKyAgICBybmdfc3RhdGUuaW5pdChybmdfcG9vbCk7CisgICAgZm9y
KHJuZ19wcHRyID0gMDsgcm5nX3BwdHIgPCBybmdfcG9vbC5sZW5ndGg7ICsrcm5nX3BwdHIpCisg
ICAgICBybmdfcG9vbFtybmdfcHB0cl0gPSAwOworICAgIHJuZ19wcHRyID0gMDsKKyAgICAvL3Ju
Z19wb29sID0gbnVsbDsKKyAgfQorICAvLyBUT0RPOiBhbGxvdyByZXNlZWRpbmcgYWZ0ZXIgZmly
c3QgcmVxdWVzdAorICByZXR1cm4gcm5nX3N0YXRlLm5leHQoKTsKK30KKworZnVuY3Rpb24gcm5n
X2dldF9ieXRlcyhiYSkgeworICB2YXIgaTsKKyAgZm9yKGkgPSAwOyBpIDwgYmEubGVuZ3RoOyAr
K2kpIGJhW2ldID0gcm5nX2dldF9ieXRlKCk7Cit9CisKK2Z1bmN0aW9uIFNlY3VyZVJhbmRvbSgp
IHt9CisKK1NlY3VyZVJhbmRvbS5wcm90b3R5cGUubmV4dEJ5dGVzID0gcm5nX2dldF9ieXRlczsK
Ky8vIERlcGVuZHMgb24ganNibi5qcyBhbmQgcm5nLmpzCisKKy8vIGNvbnZlcnQgYSAoaGV4KSBz
dHJpbmcgdG8gYSBiaWdudW0gb2JqZWN0CitmdW5jdGlvbiBwYXJzZUJpZ0ludChzdHIscikgewor
ICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3RyLHIpOworfQorCitmdW5jdGlvbiBsaW5lYnJrKHMs
bikgeworICB2YXIgcmV0ID0gIiI7CisgIHZhciBpID0gMDsKKyAgd2hpbGUoaSArIG4gPCBzLmxl
bmd0aCkgeworICAgIHJldCArPSBzLnN1YnN0cmluZyhpLGkrbikgKyAiXG4iOworICAgIGkgKz0g
bjsKKyAgfQorICByZXR1cm4gcmV0ICsgcy5zdWJzdHJpbmcoaSxzLmxlbmd0aCk7Cit9CisKK2Z1
bmN0aW9uIGJ5dGUySGV4KGIpIHsKKyAgaWYoYiA8IDB4MTApCisgICAgcmV0dXJuICIwIiArIGIu
dG9TdHJpbmcoMTYpOworICBlbHNlCisgICAgcmV0dXJuIGIudG9TdHJpbmcoMTYpOworfQorCisv
LyBQS0NTIzEgKHR5cGUgMiwgcmFuZG9tKSBwYWQgaW5wdXQgc3RyaW5nIHMgdG8gbiBieXRlcywg
YW5kIHJldHVybiBhIGJpZ2ludAorZnVuY3Rpb24gcGtjczFwYWQyKHMsbikgeworICBpZihuIDwg
cy5sZW5ndGggKyAxMSkgeworICAgIGFsZXJ0KCJNZXNzYWdlIHRvbyBsb25nIGZvciBSU0EiKTsK
KyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB2YXIgYmEgPSBuZXcgQXJyYXkoKTsKKyAgdmFyIGkg
PSBzLmxlbmd0aCAtIDE7CisgIHdoaWxlKGkgPj0gMCAmJiBuID4gMCkgYmFbLS1uXSA9IHMuY2hh
ckNvZGVBdChpLS0pOworICBiYVstLW5dID0gMDsKKyAgdmFyIHJuZyA9IG5ldyBTZWN1cmVSYW5k
b20oKTsKKyAgdmFyIHggPSBuZXcgQXJyYXkoKTsKKyAgd2hpbGUobiA+IDIpIHsgLy8gcmFuZG9t
IG5vbi16ZXJvIHBhZAorICAgIHhbMF0gPSAwOworICAgIHdoaWxlKHhbMF0gPT0gMCkgcm5nLm5l
eHRCeXRlcyh4KTsKKyAgICBiYVstLW5dID0geFswXTsKKyAgfQorICBiYVstLW5dID0gMjsKKyAg
YmFbLS1uXSA9IDA7CisgIHJldHVybiBuZXcgQmlnSW50ZWdlcihiYSk7Cit9CisKKy8vICJlbXB0
eSIgUlNBIGtleSBjb25zdHJ1Y3RvcgorZnVuY3Rpb24gUlNBS2V5KCkgeworICB0aGlzLm4gPSBu
dWxsOworICB0aGlzLmUgPSAwOworICB0aGlzLmQgPSBudWxsOworICB0aGlzLnAgPSBudWxsOwor
ICB0aGlzLnEgPSBudWxsOworICB0aGlzLmRtcDEgPSBudWxsOworICB0aGlzLmRtcTEgPSBudWxs
OworICB0aGlzLmNvZWZmID0gbnVsbDsKK30KKworLy8gU2V0IHRoZSBwdWJsaWMga2V5IGZpZWxk
cyBOIGFuZCBlIGZyb20gaGV4IHN0cmluZ3MKK2Z1bmN0aW9uIFJTQVNldFB1YmxpYyhOLEUpIHsK
KyAgaWYoTiAhPSBudWxsICYmIEUgIT0gbnVsbCAmJiBOLmxlbmd0aCA+IDAgJiYgRS5sZW5ndGgg
PiAwKSB7CisgICAgdGhpcy5uID0gcGFyc2VCaWdJbnQoTiwxNik7CisgICAgdGhpcy5lID0gcGFy
c2VJbnQoRSwxNik7CisgIH0KKyAgZWxzZQorICAgIGFsZXJ0KCJJbnZhbGlkIFJTQSBwdWJsaWMg
a2V5Iik7Cit9CisKKy8vIFBlcmZvcm0gcmF3IHB1YmxpYyBvcGVyYXRpb24gb24gIngiOiByZXR1
cm4geF5lIChtb2QgbikKK2Z1bmN0aW9uIFJTQURvUHVibGljKHgpIHsKKyAgcmV0dXJuIHgubW9k
UG93SW50KHRoaXMuZSwgdGhpcy5uKTsKK30KKworLy8gUmV0dXJuIHRoZSBQS0NTIzEgUlNBIGVu
Y3J5cHRpb24gb2YgInRleHQiIGFzIGFuIGV2ZW4tbGVuZ3RoIGhleCBzdHJpbmcKK2Z1bmN0aW9u
IFJTQUVuY3J5cHQodGV4dCkgeworICB2YXIgbSA9IHBrY3MxcGFkMih0ZXh0LCh0aGlzLm4uYml0
TGVuZ3RoKCkrNyk+PjMpOworICBpZihtID09IG51bGwpIHJldHVybiBudWxsOworICB2YXIgYyA9
IHRoaXMuZG9QdWJsaWMobSk7CisgIGlmKGMgPT0gbnVsbCkgcmV0dXJuIG51bGw7CisgIHZhciBo
ID0gYy50b1N0cmluZygxNik7CisgIGlmKChoLmxlbmd0aCAmIDEpID09IDApIHJldHVybiBoOyBl
bHNlIHJldHVybiAiMCIgKyBoOworfQorCisvLyBSZXR1cm4gdGhlIFBLQ1MjMSBSU0EgZW5jcnlw
dGlvbiBvZiAidGV4dCIgYXMgYSBCYXNlNjQtZW5jb2RlZCBzdHJpbmcKKy8vZnVuY3Rpb24gUlNB
RW5jcnlwdEI2NCh0ZXh0KSB7CisvLyAgdmFyIGggPSB0aGlzLmVuY3J5cHQodGV4dCk7CisvLyAg
aWYoaCkgcmV0dXJuIGhleDJiNjQoaCk7IGVsc2UgcmV0dXJuIG51bGw7CisvL30KKworLy8gcHJv
dGVjdGVkCitSU0FLZXkucHJvdG90eXBlLmRvUHVibGljID0gUlNBRG9QdWJsaWM7CisKKy8vIHB1
YmxpYworUlNBS2V5LnByb3RvdHlwZS5zZXRQdWJsaWMgPSBSU0FTZXRQdWJsaWM7CitSU0FLZXku
cHJvdG90eXBlLmVuY3J5cHQgPSBSU0FFbmNyeXB0OworLy9SU0FLZXkucHJvdG90eXBlLmVuY3J5
cHRfYjY0ID0gUlNBRW5jcnlwdEI2NDsKKy8vIERlcGVuZHMgb24gcnNhLmpzIGFuZCBqc2JuMi5q
cworCisvLyBVbmRvIFBLQ1MjMSAodHlwZSAyLCByYW5kb20pIHBhZGRpbmcgYW5kLCBpZiB2YWxp
ZCwgcmV0dXJuIHRoZSBwbGFpbnRleHQKK2Z1bmN0aW9uIHBrY3MxdW5wYWQyKGQsbikgeworICB2
YXIgYiA9IGQudG9CeXRlQXJyYXkoKTsKKyAgdmFyIGkgPSAwOworICB3aGlsZShpIDwgYi5sZW5n
dGggJiYgYltpXSA9PSAwKSArK2k7CisgIGlmKGIubGVuZ3RoLWkgIT0gbi0xIHx8IGJbaV0gIT0g
MikKKyAgICByZXR1cm4gbnVsbDsKKyAgKytpOworICB3aGlsZShiW2ldICE9IDApCisgICAgaWYo
KytpID49IGIubGVuZ3RoKSByZXR1cm4gbnVsbDsKKyAgdmFyIHJldCA9ICIiOworICB3aGlsZSgr
K2kgPCBiLmxlbmd0aCkKKyAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiW2ldKTsKKyAg
cmV0dXJuIHJldDsKK30KKworLy8gU2V0IHRoZSBwcml2YXRlIGtleSBmaWVsZHMgTiwgZSwgYW5k
IGQgZnJvbSBoZXggc3RyaW5ncworZnVuY3Rpb24gUlNBU2V0UHJpdmF0ZShOLEUsRCkgeworICBp
ZihOICE9IG51bGwgJiYgRSAhPSBudWxsICYmIE4ubGVuZ3RoID4gMCAmJiBFLmxlbmd0aCA+IDAp
IHsKKyAgICB0aGlzLm4gPSBwYXJzZUJpZ0ludChOLDE2KTsKKyAgICB0aGlzLmUgPSBwYXJzZUlu
dChFLDE2KTsKKyAgICB0aGlzLmQgPSBwYXJzZUJpZ0ludChELDE2KTsKKyAgfQorICBlbHNlCisg
ICAgYWxlcnQoIkludmFsaWQgUlNBIHByaXZhdGUga2V5Iik7Cit9CisKKy8vIFNldCB0aGUgcHJp
dmF0ZSBrZXkgZmllbGRzIE4sIGUsIGQgYW5kIENSVCBwYXJhbXMgZnJvbSBoZXggc3RyaW5ncwor
ZnVuY3Rpb24gUlNBU2V0UHJpdmF0ZUV4KE4sRSxELFAsUSxEUCxEUSxDKSB7CisgIGlmKE4gIT0g
bnVsbCAmJiBFICE9IG51bGwgJiYgTi5sZW5ndGggPiAwICYmIEUubGVuZ3RoID4gMCkgeworICAg
IHRoaXMubiA9IHBhcnNlQmlnSW50KE4sMTYpOworICAgIHRoaXMuZSA9IHBhcnNlSW50KEUsMTYp
OworICAgIHRoaXMuZCA9IHBhcnNlQmlnSW50KEQsMTYpOworICAgIHRoaXMucCA9IHBhcnNlQmln
SW50KFAsMTYpOworICAgIHRoaXMucSA9IHBhcnNlQmlnSW50KFEsMTYpOworICAgIHRoaXMuZG1w
MSA9IHBhcnNlQmlnSW50KERQLDE2KTsKKyAgICB0aGlzLmRtcTEgPSBwYXJzZUJpZ0ludChEUSwx
Nik7CisgICAgdGhpcy5jb2VmZiA9IHBhcnNlQmlnSW50KEMsMTYpOworICB9CisgIGVsc2UKKyAg
ICBhbGVydCgiSW52YWxpZCBSU0EgcHJpdmF0ZSBrZXkiKTsKK30KKworLy8gR2VuZXJhdGUgYSBu
ZXcgcmFuZG9tIHByaXZhdGUga2V5IEIgYml0cyBsb25nLCB1c2luZyBwdWJsaWMgZXhwdCBFCitm
dW5jdGlvbiBSU0FHZW5lcmF0ZShCLEUpIHsKKyAgdmFyIHJuZyA9IG5ldyBTZWN1cmVSYW5kb20o
KTsKKyAgdmFyIHFzID0gQj4+MTsKKyAgdGhpcy5lID0gcGFyc2VJbnQoRSwxNik7CisgIHZhciBl
ZSA9IG5ldyBCaWdJbnRlZ2VyKEUsMTYpOworICBmb3IoOzspIHsKKyAgICBmb3IoOzspIHsKKyAg
ICAgIHRoaXMucCA9IG5ldyBCaWdJbnRlZ2VyKEItcXMsMSxybmcpOworICAgICAgaWYodGhpcy5w
LnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKS5nY2QoZWUpLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9O
RSkgPT0gMCAmJiB0aGlzLnAuaXNQcm9iYWJsZVByaW1lKDEwKSkgYnJlYWs7CisgICAgfQorICAg
IGZvcig7OykgeworICAgICAgdGhpcy5xID0gbmV3IEJpZ0ludGVnZXIocXMsMSxybmcpOworICAg
ICAgaWYodGhpcy5xLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKS5nY2QoZWUpLmNvbXBhcmVUbyhC
aWdJbnRlZ2VyLk9ORSkgPT0gMCAmJiB0aGlzLnEuaXNQcm9iYWJsZVByaW1lKDEwKSkgYnJlYWs7
CisgICAgfQorICAgIGlmKHRoaXMucC5jb21wYXJlVG8odGhpcy5xKSA8PSAwKSB7CisgICAgICB2
YXIgdCA9IHRoaXMucDsKKyAgICAgIHRoaXMucCA9IHRoaXMucTsKKyAgICAgIHRoaXMucSA9IHQ7
CisgICAgfQorICAgIHZhciBwMSA9IHRoaXMucC5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSk7Cisg
ICAgdmFyIHExID0gdGhpcy5xLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKKyAgICB2YXIgcGhp
ID0gcDEubXVsdGlwbHkocTEpOworICAgIGlmKHBoaS5nY2QoZWUpLmNvbXBhcmVUbyhCaWdJbnRl
Z2VyLk9ORSkgPT0gMCkgeworICAgICAgdGhpcy5uID0gdGhpcy5wLm11bHRpcGx5KHRoaXMucSk7
CisgICAgICB0aGlzLmQgPSBlZS5tb2RJbnZlcnNlKHBoaSk7CisgICAgICB0aGlzLmRtcDEgPSB0
aGlzLmQubW9kKHAxKTsKKyAgICAgIHRoaXMuZG1xMSA9IHRoaXMuZC5tb2QocTEpOworICAgICAg
dGhpcy5jb2VmZiA9IHRoaXMucS5tb2RJbnZlcnNlKHRoaXMucCk7CisgICAgICBicmVhazsKKyAg
ICB9CisgIH0KK30KKworLy8gUGVyZm9ybSByYXcgcHJpdmF0ZSBvcGVyYXRpb24gb24gIngiOiBy
ZXR1cm4geF5kIChtb2QgbikKK2Z1bmN0aW9uIFJTQURvUHJpdmF0ZSh4KSB7CisgIGlmKHRoaXMu
cCA9PSBudWxsIHx8IHRoaXMucSA9PSBudWxsKQorICAgIHJldHVybiB4Lm1vZFBvdyh0aGlzLmQs
IHRoaXMubik7CisKKyAgLy8gVE9ETzogcmUtY2FsY3VsYXRlIGFueSBtaXNzaW5nIENSVCBwYXJh
bXMKKyAgdmFyIHhwID0geC5tb2QodGhpcy5wKS5tb2RQb3codGhpcy5kbXAxLCB0aGlzLnApOwor
ICB2YXIgeHEgPSB4Lm1vZCh0aGlzLnEpLm1vZFBvdyh0aGlzLmRtcTEsIHRoaXMucSk7CisKKyAg
d2hpbGUoeHAuY29tcGFyZVRvKHhxKSA8IDApCisgICAgeHAgPSB4cC5hZGQodGhpcy5wKTsKKyAg
cmV0dXJuIHhwLnN1YnRyYWN0KHhxKS5tdWx0aXBseSh0aGlzLmNvZWZmKS5tb2QodGhpcy5wKS5t
dWx0aXBseSh0aGlzLnEpLmFkZCh4cSk7Cit9CisKKy8vIFJldHVybiB0aGUgUEtDUyMxIFJTQSBk
ZWNyeXB0aW9uIG9mICJjdGV4dCIuCisvLyAiY3RleHQiIGlzIGFuIGV2ZW4tbGVuZ3RoIGhleCBz
dHJpbmcgYW5kIHRoZSBvdXRwdXQgaXMgYSBwbGFpbiBzdHJpbmcuCitmdW5jdGlvbiBSU0FEZWNy
eXB0KGN0ZXh0KSB7CisgIHZhciBjID0gcGFyc2VCaWdJbnQoY3RleHQsIDE2KTsKKyAgdmFyIG0g
PSB0aGlzLmRvUHJpdmF0ZShjKTsKKyAgaWYobSA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgcmV0
dXJuIHBrY3MxdW5wYWQyKG0sICh0aGlzLm4uYml0TGVuZ3RoKCkrNyk+PjMpOworfQorCisvLyBS
ZXR1cm4gdGhlIFBLQ1MjMSBSU0EgZGVjcnlwdGlvbiBvZiAiY3RleHQiLgorLy8gImN0ZXh0IiBp
cyBhIEJhc2U2NC1lbmNvZGVkIHN0cmluZyBhbmQgdGhlIG91dHB1dCBpcyBhIHBsYWluIHN0cmlu
Zy4KKy8vZnVuY3Rpb24gUlNBQjY0RGVjcnlwdChjdGV4dCkgeworLy8gIHZhciBoID0gYjY0dG9o
ZXgoY3RleHQpOworLy8gIGlmKGgpIHJldHVybiB0aGlzLmRlY3J5cHQoaCk7IGVsc2UgcmV0dXJu
IG51bGw7CisvL30KKworLy8gcHJvdGVjdGVkCitSU0FLZXkucHJvdG90eXBlLmRvUHJpdmF0ZSA9
IFJTQURvUHJpdmF0ZTsKKworLy8gcHVibGljCitSU0FLZXkucHJvdG90eXBlLnNldFByaXZhdGUg
PSBSU0FTZXRQcml2YXRlOworUlNBS2V5LnByb3RvdHlwZS5zZXRQcml2YXRlRXggPSBSU0FTZXRQ
cml2YXRlRXg7CitSU0FLZXkucHJvdG90eXBlLmdlbmVyYXRlID0gUlNBR2VuZXJhdGU7CitSU0FL
ZXkucHJvdG90eXBlLmRlY3J5cHQgPSBSU0FEZWNyeXB0OworLy9SU0FLZXkucHJvdG90eXBlLmI2
NF9kZWNyeXB0ID0gUlNBQjY0RGVjcnlwdDsKKworCituVmFsdWU9ImE1MjYxOTM5OTc1OTQ4YmI3
YTU4ZGZmZTVmZjU0ZTY1ZjA0OThmOTE3NWY1YTA5Mjg4ODEwYjg5NzU4NzFlOTlhZjNiNWRkOTQw
NTdiMGZjMDc1MzVmNWY5NzQ0NDUwNGZhMzUxNjlkNDYxZDBkMzBjZjAxOTJlMzA3NzI3YzA2NTE2
OGM3ODg3NzFjNTYxYTk0MDBmYjQ5MTc1ZTllNmFhNGUyM2ZlMTFhZjY5ZTk0MTJkZDIzYjBjYjY2
ODRjNGMyNDI5YmNlMTM5ZTg0OGFiMjZkMDgyOTA3MzM1MWY0YWNkMzYwNzRlYWZkMDM2YTVlYjgz
MzU5ZDJhNjk4ZDMiOworZVZhbHVlPSIxMDAwMSI7CitkVmFsdWU9IjhlOTkxMmY2ZDM2NDU4OTRl
OGQzOGNiNThjMGRiODFmZjUxNmNmNGM3ZTVhMTRjN2YxZWRkYjE0NTlkMmNkZWQ0ZDhkMjkzZmM5
N2FlZTZhZWZiODYxODU5YzhiNmEzZDFkZmU3MTA0NjNlMWY5ZGRjNzIwNDhjMDk3NTE5NzFjNGE1
ODBhYTUxZWI1MjMzNTdhM2NjNDhkMzFjZmFkMWQ0YTE2NTA2NmVkOTJkNDc0OGZiNjU3MTIxMWRh
NWNiMTRiYzExYjZlMmRmN2MxYTU1OWU2ZDVhYzFjZDVjOTQ3MDNhMjI4OTE0NjRmYmEyM2QwZDk2
NTA4NjI3N2ExNjEiOworcFZhbHVlPSJkMDkwY2U1OGE5MmM3NTIzM2E2NDg2Y2IwYTkyMDliZjM1
ODNiNjRmNTQwYzc2ZjUyOTRiYjk3ZDI4NWVlZDMzYWVjMjIwYmRlMTRiMjQxNzk1MTE3OGFjMTUy
Y2VhYjZkYTcwOTA5MDViNDc4MTk1NDk4YjM1MjA0OGYxNWU3ZCI7CitxVmFsdWU9ImNhYjU3NWRj
NjUyYmI2NmRmMTVhMDM1OTYwOWQ1MWQxZGIxODQ3NTBjMDBjNjY5OGI5MGVmMzQ2NWM5OTY1NTEw
M2VkYmYwZDU0YzU2YWVjMGNlM2M0ZDIyNTkyMzM4MDkyYTEyNmEwY2M0OWY2NWE0YTMwZDIyMmI0
MTFlNThmIjsKK2RtcDFWYWx1ZT0iMWEyNGJjYThlMjczZGYyZjBlNDdjMTk5YmJmNjc4NjA0ZTdk
ZjcyMTU0ODBjNzdjOGRiMzlmNDliMDAwY2UyY2Y3NTAwMDM4YWNmZmY1NDMzYjdkNTgyYTAxZjE4
MjZlNmY0ZDQyZTFjNTdmNWUxZmVmN2IxMmFhYmM1OWZkMjUiOworZG1xMVZhbHVlPSIzZDA2OTgy
ZWZiYmU0NzMzOWUxZjZkMzZiMTIxNmI4YTc0MWQ0MTBiMGM2NjJmNTRmNzExOGIyN2I5YTRlYzlk
OTE0MzM3ZWIzOTg0MWQ4NjY2ZjMwMzQ0MDhjZjk0ZjViNjJmMTFjNDAyZmM5OTRmZTE1YTA1NDkz
MTUwZDlmZCI7Citjb2VmZlZhbHVlPSIzYTNlNzMxYWNkODk2MGI3ZmY5ZWI4MWE3ZmY5M2JkMWNm
YTc0Y2JkNTY5ODdkYjU4YjQ1OTRmYjA5YzA5MDg0ZGIxNzM0YzgxNDNmOThiNjAyYjk4MWFhYTky
NDNjYTI4ZGViNjliNWIyODBlZThkY2VlMGZkMjYyNWU1MzI1MCI7CisKK3NldHVwRW5naW5lKGFt
MywgMjgpOworCit2YXIgVEVYVCA9ICJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIHRo
ZSBleHRyZW1lbHkgbGF6eSBmcm9nISAiICsKKyAgICAiTm93IGlzIHRoZSB0aW1lIGZvciBhbGwg
Z29vZCBtZW4gdG8gY29tZSB0byB0aGUgcGFydHkuIjsKK3ZhciBlbmNyeXB0ZWQ7CisKK2Z1bmN0
aW9uIGVuY3J5cHQoKSB7CisgIHZhciBSU0EgPSBuZXcgUlNBS2V5KCk7CisgIFJTQS5zZXRQdWJs
aWMoblZhbHVlLCBlVmFsdWUpOworICBSU0Euc2V0UHJpdmF0ZUV4KG5WYWx1ZSwgZVZhbHVlLCBk
VmFsdWUsIHBWYWx1ZSwgcVZhbHVlLCBkbXAxVmFsdWUsIGRtcTFWYWx1ZSwgY29lZmZWYWx1ZSk7
CisgIGVuY3J5cHRlZCA9IFJTQS5lbmNyeXB0KFRFWFQpOworfQorCitmdW5jdGlvbiBkZWNyeXB0
KCkgeworICB2YXIgUlNBID0gbmV3IFJTQUtleSgpOworICBSU0Euc2V0UHVibGljKG5WYWx1ZSwg
ZVZhbHVlKTsKKyAgUlNBLnNldFByaXZhdGVFeChuVmFsdWUsIGVWYWx1ZSwgZFZhbHVlLCBwVmFs
dWUsIHFWYWx1ZSwgZG1wMVZhbHVlLCBkbXExVmFsdWUsIGNvZWZmVmFsdWUpOworICB2YXIgZGVj
cnlwdGVkID0gUlNBLmRlY3J5cHQoZW5jcnlwdGVkKTsKKyAgaWYgKGRlY3J5cHRlZCAhPSBURVhU
KSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJDcnlwdG8gb3BlcmF0aW9uIGZhaWxlZCIpOworICB9
Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgODsgKytpKSB7CisgIGVuY3J5cHQoKTsKKyAgZGVj
cnlwdCgpOworfQpJbmRleDogU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LWRlbHRhYmx1ZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTdW5TcGlkZXIvdGVzdHMvdjgtdjYvdjgtZGVsdGFibHVlLmpzCShyZXZp
c2lvbiAwKQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LWRlbHRhYmx1ZS5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NzcgQEAKKy8vIENvcHlyaWdodCAyMDA4IHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMTk5NiBKb2huIE1h
bG9uZXkgYW5kIE1hcmlvIFdvbGN6a28uCisKKy8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvLyBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eQorLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IKKy8vIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisv
LworLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLy8gYWxvbmcgd2l0aCB0
aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy8vIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjEx
MS0xMzA3ICBVU0EKKworCisvLyBUaGlzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0YUJsdWUg
YmVuY2htYXJrIGlzIGRlcml2ZWQKKy8vIGZyb20gdGhlIFNtYWxsdGFsayBpbXBsZW1lbnRhdGlv
biBieSBKb2huIE1hbG9uZXkgYW5kIE1hcmlvCisvLyBXb2xjemtvLiBTb21lIHBhcnRzIGhhdmUg
YmVlbiB0cmFuc2xhdGVkIGRpcmVjdGx5LCB3aGVyZWFzCisvLyBvdGhlcnMgaGF2ZSBiZWVuIG1v
ZGlmaWVkIG1vcmUgYWdncmVzaXZlbHkgdG8gbWFrZSBpdCBmZWVsCisvLyBtb3JlIGxpa2UgYSBK
YXZhU2NyaXB0IHByb2dyYW0uCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9u
IG9mIHRoZSBEZWx0YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRl
c2NyaWJlZCBpbjoKKyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVu
dGFsIENvbnN0cmFpbnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1C
ZW5zb24gYW5kIEpvaG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMg
b2YgdGhlIEFDTSwKKyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5n
dG9uIFRSIDg5LTA4LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRl
biBpbiBhIGdyb3Rlc3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMg
YnVpbHQgYnkgc2lkZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0
IHRoaXMgd2F5IHRvIGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAor
ICogaW1wbGVtZW50YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBl
IGwgLS0tICovCisKK09iamVjdC5wcm90b3R5cGUuaW5oZXJpdHNGcm9tID0gZnVuY3Rpb24gKHNo
dXBlcikgeworICBmdW5jdGlvbiBJbmhlcml0ZXIoKSB7IH0KKyAgSW5oZXJpdGVyLnByb3RvdHlw
ZSA9IHNodXBlci5wcm90b3R5cGU7CisgIHRoaXMucHJvdG90eXBlID0gbmV3IEluaGVyaXRlcigp
OworICB0aGlzLnN1cGVyQ29uc3RydWN0b3IgPSBzaHVwZXI7Cit9CisKK2Z1bmN0aW9uIE9yZGVy
ZWRDb2xsZWN0aW9uKCkgeworICB0aGlzLmVsbXMgPSBuZXcgQXJyYXkoKTsKK30KKworT3JkZXJl
ZENvbGxlY3Rpb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlbG0pIHsKKyAgdGhpcy5lbG1z
LnB1c2goZWxtKTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rp
b24gKGluZGV4KSB7CisgIHJldHVybiB0aGlzLmVsbXNbaW5kZXhdOworfQorCitPcmRlcmVkQ29s
bGVjdGlvbi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZWxt
cy5sZW5ndGg7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVGaXJzdCA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZWxtcy5wb3AoKTsKK30KKworT3JkZXJlZENv
bGxlY3Rpb24ucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChlbG0pIHsKKyAgdmFyIGluZGV4
ID0gMCwgc2tpcHBlZCA9IDA7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5lbG1zLmxlbmd0
aDsgaSsrKSB7CisgICAgdmFyIHZhbHVlID0gdGhpcy5lbG1zW2ldOworICAgIGlmICh2YWx1ZSAh
PSBlbG0pIHsKKyAgICAgIHRoaXMuZWxtc1tpbmRleF0gPSB2YWx1ZTsKKyAgICAgIGluZGV4Kys7
CisgICAgfSBlbHNlIHsKKyAgICAgIHNraXBwZWQrKzsKKyAgICB9CisgIH0KKyAgZm9yICh2YXIg
aSA9IDA7IGkgPCBza2lwcGVkOyBpKyspCisgICAgdGhpcy5lbG1zLnBvcCgpOworfQorCisvKiAt
LS0gKgorICogUyB0IHIgZSBuIGcgdCBoCisgKiAtLS0gKi8KKworLyoqCisgKiBTdHJlbmd0aHMg
YXJlIHVzZWQgdG8gbWVhc3VyZSB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiBjb25zdHJhaW50
cy4KKyAqIE5ldyBzdHJlbmd0aHMgbWF5IGJlIGluc2VydGVkIGluIHRoZSBzdHJlbmd0aCBoaWVy
YXJjaHkgd2l0aG91dAorICogZGlzcnVwdGluZyBjdXJyZW50IGNvbnN0cmFpbnRzLiAgU3RyZW5n
dGhzIGNhbm5vdCBiZSBjcmVhdGVkIG91dHNpZGUKKyAqIHRoaXMgY2xhc3MsIHNvIHBvaW50ZXIg
Y29tcGFyaXNvbiBjYW4gYmUgdXNlZCBmb3IgdmFsdWUgY29tcGFyaXNvbi4KKyAqLworZnVuY3Rp
b24gU3RyZW5ndGgoc3RyZW5ndGhWYWx1ZSwgbmFtZSkgeworICB0aGlzLnN0cmVuZ3RoVmFsdWUg
PSBzdHJlbmd0aFZhbHVlOworICB0aGlzLm5hbWUgPSBuYW1lOworfQorCitTdHJlbmd0aC5zdHJv
bmdlciA9IGZ1bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPCBz
Mi5zdHJlbmd0aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXIgPSBmdW5jdGlvbiAoczEsIHMy
KSB7CisgIHJldHVybiBzMS5zdHJlbmd0aFZhbHVlID4gczIuc3RyZW5ndGhWYWx1ZTsKK30KKwor
U3RyZW5ndGgud2Vha2VzdE9mID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy53
ZWFrZXIoczEsIHMyKSA/IHMxIDogczI7Cit9CisKK1N0cmVuZ3RoLnN0cm9uZ2VzdCA9IGZ1bmN0
aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHRoaXMuc3Ryb25nZXIoczEsIHMyKSA/IHMxIDogczI7
Cit9CisKK1N0cmVuZ3RoLnByb3RvdHlwZS5uZXh0V2Vha2VyID0gZnVuY3Rpb24gKCkgeworICBz
d2l0Y2ggKHRoaXMuc3RyZW5ndGhWYWx1ZSkgeworICAgIGNhc2UgMDogcmV0dXJuIFN0cmVuZ3Ro
LldFQUtFU1Q7CisgICAgY2FzZSAxOiByZXR1cm4gU3RyZW5ndGguV0VBS19ERUZBVUxUOworICAg
IGNhc2UgMjogcmV0dXJuIFN0cmVuZ3RoLk5PUk1BTDsKKyAgICBjYXNlIDM6IHJldHVybiBTdHJl
bmd0aC5TVFJPTkdfREVGQVVMVDsKKyAgICBjYXNlIDQ6IHJldHVybiBTdHJlbmd0aC5QUkVGRVJS
RUQ7CisgICAgY2FzZSA1OiByZXR1cm4gU3RyZW5ndGguUkVRVUlSRUQ7CisgIH0KK30KKworLy8g
U3RyZW5ndGggY29uc3RhbnRzLgorU3RyZW5ndGguUkVRVUlSRUQgICAgICAgID0gbmV3IFN0cmVu
Z3RoKDAsICJyZXF1aXJlZCIpOworU3RyZW5ndGguU1RPTkdfUFJFRkVSUkVEID0gbmV3IFN0cmVu
Z3RoKDEsICJzdHJvbmdQcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlBSRUZFUlJFRCAgICAgICA9IG5l
dyBTdHJlbmd0aCgyLCAicHJlZmVycmVkIik7CitTdHJlbmd0aC5TVFJPTkdfREVGQVVMVCAgPSBu
ZXcgU3RyZW5ndGgoMywgInN0cm9uZ0RlZmF1bHQiKTsKK1N0cmVuZ3RoLk5PUk1BTCAgICAgICAg
ICA9IG5ldyBTdHJlbmd0aCg0LCAibm9ybWFsIik7CitTdHJlbmd0aC5XRUFLX0RFRkFVTFQgICAg
PSBuZXcgU3RyZW5ndGgoNSwgIndlYWtEZWZhdWx0Iik7CitTdHJlbmd0aC5XRUFLRVNUICAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoNiwgIndlYWtlc3QiKTsKKworLyogLS0tICoKKyAqIEMgbyBuIHMg
dCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIEFuIGFic3RyYWN0IGNsYXNzIHJlcHJl
c2VudGluZyBhIHN5c3RlbS1tYWludGFpbmFibGUgcmVsYXRpb25zaGlwCisgKiAob3IgImNvbnN0
cmFpbnQiKSBiZXR3ZWVuIGEgc2V0IG9mIHZhcmlhYmxlcy4gQSBjb25zdHJhaW50IHN1cHBsaWVz
CisgKiBhIHN0cmVuZ3RoIGluc3RhbmNlIHZhcmlhYmxlOyBjb25jcmV0ZSBzdWJjbGFzc2VzIHBy
b3ZpZGUgYSBtZWFucworICogb2Ygc3RvcmluZyB0aGUgY29uc3RyYWluZWQgdmFyaWFibGVzIGFu
ZCBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZAorICogdG8gcmVwcmVzZW50IGEgY29uc3RyYWlu
dC4KKyAqLworZnVuY3Rpb24gQ29uc3RyYWludChzdHJlbmd0aCkgeworICB0aGlzLnN0cmVuZ3Ro
ID0gc3RyZW5ndGg7Cit9CisKKy8qKgorICogQWN0aXZhdGUgdGhpcyBjb25zdHJhaW50IGFuZCBh
dHRlbXB0IHRvIHNhdGlzZnkgaXQuCisgKi8KK0NvbnN0cmFpbnQucHJvdG90eXBlLmFkZENvbnN0
cmFpbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuYWRkVG9HcmFwaCgpOworICBwbGFubmVyLmlu
Y3JlbWVudGFsQWRkKHRoaXMpOworfQorCisvKioKKyAqIEF0dGVtcHQgdG8gZmluZCBhIHdheSB0
byBlbmZvcmNlIHRoaXMgY29uc3RyYWludC4gSWYgc3VjY2Vzc2Z1bCwKKyAqIHJlY29yZCB0aGUg
c29sdXRpb24sIHBlcmhhcHMgbW9kaWZ5aW5nIHRoZSBjdXJyZW50IGRhdGFmbG93CisgKiBncmFw
aC4gQW5zd2VyIHRoZSBjb25zdHJhaW50IHRoYXQgdGhpcyBjb25zdHJhaW50IG92ZXJyaWRlcywg
aWYKKyAqIHRoZXJlIGlzIG9uZSwgb3IgbmlsLCBpZiB0aGVyZSBpc24ndC4KKyAqIEFzc3VtZTog
SSBhbSBub3QgYWxyZWFkeSBzYXRpc2ZpZWQuCisgKi8KK0NvbnN0cmFpbnQucHJvdG90eXBlLnNh
dGlzZnkgPSBmdW5jdGlvbiAobWFyaykgeworICB0aGlzLmNob29zZU1ldGhvZChtYXJrKTsKKyAg
aWYgKCF0aGlzLmlzU2F0aXNmaWVkKCkpIHsKKyAgICBpZiAodGhpcy5zdHJlbmd0aCA9PSBTdHJl
bmd0aC5SRVFVSVJFRCkKKyAgICAgIGFsZXJ0KCJDb3VsZCBub3Qgc2F0aXNmeSBhIHJlcXVpcmVk
IGNvbnN0cmFpbnQhIik7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgdGhpcy5tYXJrSW5wdXRz
KG1hcmspOworICB2YXIgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAgdmFyIG92ZXJyaWRkZW4gPSBv
dXQuZGV0ZXJtaW5lZEJ5OworICBpZiAob3ZlcnJpZGRlbiAhPSBudWxsKSBvdmVycmlkZGVuLm1h
cmtVbnNhdGlzZmllZCgpOworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gdGhpczsKKyAgaWYgKCFwbGFu
bmVyLmFkZFByb3BhZ2F0ZSh0aGlzLCBtYXJrKSkKKyAgICBhbGVydCgiQ3ljbGUgZW5jb3VudGVy
ZWQiKTsKKyAgb3V0Lm1hcmsgPSBtYXJrOworICByZXR1cm4gb3ZlcnJpZGRlbjsKK30KKworQ29u
c3RyYWludC5wcm90b3R5cGUuZGVzdHJveUNvbnN0cmFpbnQgPSBmdW5jdGlvbiAoKSB7CisgIGlm
ICh0aGlzLmlzU2F0aXNmaWVkKCkpIHBsYW5uZXIuaW5jcmVtZW50YWxSZW1vdmUodGhpcyk7Cisg
IGVsc2UgdGhpcy5yZW1vdmVGcm9tR3JhcGgoKTsKK30KKworLyoqCisgKiBOb3JtYWwgY29uc3Ry
YWludHMgYXJlIG5vdCBpbnB1dCBjb25zdHJhaW50cy4gIEFuIGlucHV0IGNvbnN0cmFpbnQKKyAq
IGlzIG9uZSB0aGF0IGRlcGVuZHMgb24gZXh0ZXJuYWwgc3RhdGUsIHN1Y2ggYXMgdGhlIG1vdXNl
LCB0aGUKKyAqIGtleWJvcmQsIGEgY2xvY2ssIG9yIHNvbWUgYXJiaXRyYXR5IHBpZWNlIG9mIGlt
cGVyYXRpdmUgY29kZS4KKyAqLworQ29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCA9IGZ1bmN0
aW9uICgpIHsKKyAgcmV0dXJuIGZhbHNlOworfQorCisvKiAtLS0gKgorICogVSBuIGEgciB5ICAg
QyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQWJzdHJhY3Qgc3VwZXJj
bGFzcyBmb3IgY29uc3RyYWludHMgaGF2aW5nIGEgc2luZ2xlIHBvc3NpYmxlIG91dHB1dAorICog
dmFyaWFibGUuCisgKi8KK2Z1bmN0aW9uIFVuYXJ5Q29uc3RyYWludCh2LCBzdHJlbmd0aCkgewor
ICBVbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHN0cmVuZ3RoKTsK
KyAgdGhpcy5teU91dHB1dCA9IHY7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7CisgIHRoaXMu
YWRkQ29uc3RyYWludCgpOworfQorCitVbmFyeUNvbnN0cmFpbnQuaW5oZXJpdHNGcm9tKENvbnN0
cmFpbnQpOworCisvKioKKyAqIEFkZHMgdGhpcyBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW50
IGdyYXBoCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0
aW9uICgpIHsKKyAgdGhpcy5teU91dHB1dC5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnNh
dGlzZmllZCA9IGZhbHNlOworfQorCisvKioKKyAqIERlY2lkZXMgaWYgdGhpcyBjb25zdHJhaW50
IGNhbiBiZSBzYXRpc2ZpZWQgYW5kIHJlY29yZHMgdGhhdAorICogZGVjaXNpb24uCisgKi8KK1Vu
YXJ5Q29uc3RyYWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kID0gZnVuY3Rpb24gKG1hcmspIHsK
KyAgdGhpcy5zYXRpc2ZpZWQgPSAodGhpcy5teU91dHB1dC5tYXJrICE9IG1hcmspCisgICAgJiYg
U3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy5teU91dHB1dC53YWxrU3RyZW5n
dGgpOworfQorCisvKioKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0
aXNmaWVkIGluIHRoZSBjdXJyZW50IHNvbHV0aW9uLgorICovCitVbmFyeUNvbnN0cmFpbnQucHJv
dG90eXBlLmlzU2F0aXNmaWVkID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5zYXRpc2Zp
ZWQ7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9u
IChtYXJrKSB7CisgIC8vIGhhcyBubyBpbnB1dHMKK30KKworLyoqCisgKiBSZXR1cm5zIHRoZSBj
dXJyZW50IG91dHB1dCB2YXJpYWJsZS4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5v
dXRwdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLm15T3V0cHV0OworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rpb24g
KCkgeworICB0aGlzLm15T3V0cHV0LndhbGtTdHJlbmd0aCA9IHRoaXMuc3RyZW5ndGg7CisgIHRo
aXMubXlPdXRwdXQuc3RheSA9ICF0aGlzLmlzSW5wdXQoKTsKKyAgaWYgKHRoaXMubXlPdXRwdXQu
c3RheSkgdGhpcy5leGVjdXRlKCk7IC8vIFN0YXkgb3B0aW1pemF0aW9uCit9CisKKy8qKgorICog
UmVjb3JkcyB0aGF0IHRoaXMgY29uc3RyYWludCBpcyB1bnNhdGlzZmllZAorICovCitVbmFyeUNv
bnN0cmFpbnQucHJvdG90eXBlLm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhp
cy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pbnB1
dHNLbm93biA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRydWU7Cit9CisKK1VuYXJ5Q29uc3Ry
YWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkgeworICBpZiAodGhp
cy5teU91dHB1dCAhPSBudWxsKSB0aGlzLm15T3V0cHV0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7
CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgYSB5ICAg
QyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogVmFyaWFibGVzIHRoYXQg
c2hvdWxkLCB3aXRoIHNvbWUgbGV2ZWwgb2YgcHJlZmVyZW5jZSwgc3RheSB0aGUgc2FtZS4KKyAq
IFBsYW5uZXJzIG1heSBleHBsb2l0IHRoZSBmYWN0IHRoYXQgaW5zdGFuY2VzLCBpZiBzYXRpc2Zp
ZWQsIHdpbGwgbm90CisgKiBjaGFuZ2UgdGhlaXIgb3V0cHV0IGR1cmluZyBwbGFuIGV4ZWN1dGlv
bi4gIFRoaXMgaXMgY2FsbGVkICJzdGF5CisgKiBvcHRpbWl6YXRpb24iLgorICovCitmdW5jdGlv
biBTdGF5Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgU3RheUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1
Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK1N0YXlDb25zdHJhaW50LmluaGVyaXRzRnJv
bShVbmFyeUNvbnN0cmFpbnQpOworCitTdGF5Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgLy8gU3RheSBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8q
IC0tLSAqCisgKiBFIGQgaSB0ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8q
KgorICogQSB1bmFyeSBpbnB1dCBjb25zdHJhaW50IHVzZWQgdG8gbWFyayBhIHZhcmlhYmxlIHRo
YXQgdGhlIGNsaWVudAorICogd2lzaGVzIHRvIGNoYW5nZS4KKyAqLworZnVuY3Rpb24gRWRpdENv
bnN0cmFpbnQodiwgc3RyKSB7CisgIEVkaXRDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2LCBzdHIpOworfQorCitFZGl0Q29uc3RyYWludC5pbmhlcml0c0Zyb20oVW5hcnlD
b25zdHJhaW50KTsKKworLyoqCisgKiBFZGl0cyBpbmRpY2F0ZSB0aGF0IGEgdmFyaWFibGUgaXMg
dG8gYmUgY2hhbmdlZCBieSBpbXBlcmF0aXZlIGNvZGUuCisgKi8KK0VkaXRDb25zdHJhaW50LnBy
b3RvdHlwZS5pc0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30KKworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIC8vIEVkaXQg
Y29uc3RyYWludHMgZG8gbm90aGluZworfQorCisvKiAtLS0gKgorICogQiBpIG4gYSByIHkgICBD
IG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKwordmFyIERpcmVjdGlvbiA9IG5ldyBPYmpl
Y3QoKTsKK0RpcmVjdGlvbi5OT05FICAgICA9IDA7CitEaXJlY3Rpb24uRk9SV0FSRCAgPSAxOwor
RGlyZWN0aW9uLkJBQ0tXQVJEID0gLTE7CisKKy8qKgorICogQWJzdHJhY3Qgc3VwZXJjbGFzcyBm
b3IgY29uc3RyYWludHMgaGF2aW5nIHR3byBwb3NzaWJsZSBvdXRwdXQKKyAqIHZhcmlhYmxlcy4K
KyAqLworZnVuY3Rpb24gQmluYXJ5Q29uc3RyYWludCh2YXIxLCB2YXIyLCBzdHJlbmd0aCkgewor
ICBCaW5hcnlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCBzdHJlbmd0aCk7
CisgIHRoaXMudjEgPSB2YXIxOworICB0aGlzLnYyID0gdmFyMjsKKyAgdGhpcy5kaXJlY3Rpb24g
PSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK0JpbmFyeUNv
bnN0cmFpbnQuaW5oZXJpdHNGcm9tKENvbnN0cmFpbnQpOworCisvKioKKyAqIERlY2lkZXMgaWYg
dGhpcyBjb25zdHJhaW50IGNhbiBiZSBzYXRpc2ZpZWQgYW5kIHdoaWNoIHdheSBpdAorICogc2hv
dWxkIGZsb3cgYmFzZWQgb24gdGhlIHJlbGF0aXZlIHN0cmVuZ3RoIG9mIHRoZSB2YXJpYWJsZXMg
cmVsYXRlZCwKKyAqIGFuZCByZWNvcmQgdGhhdCBkZWNpc2lvbi4KKyAqLworQmluYXJ5Q29uc3Ry
YWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgaWYgKHRo
aXMudjEubWFyayA9PSBtYXJrKSB7CisgICAgdGhpcy5kaXJlY3Rpb24gPSAodGhpcy52Mi5tYXJr
ICE9IG1hcmsgJiYgU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy52Mi53YWxr
U3RyZW5ndGgpKQorICAgICAgPyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24u
Tk9ORTsKKyAgfQorICBpZiAodGhpcy52Mi5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVj
dGlvbiA9ICh0aGlzLnYxLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0
cmVuZ3RoLCB0aGlzLnYxLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FS
RAorICAgICAgOiBEaXJlY3Rpb24uTk9ORTsKKyAgfQorICBpZiAoU3RyZW5ndGgud2Vha2VyKHRo
aXMudjEud2Fsa1N0cmVuZ3RoLCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpIHsKKyAgICB0aGlzLmRp
cmVjdGlvbiA9IFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0
cmVuZ3RoKQorICAgICAgPyBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgICAgIDogRGlyZWN0aW9uLk5P
TkU7CisgIH0gZWxzZSB7CisgICAgdGhpcy5kaXJlY3Rpb24gPSBTdHJlbmd0aC5zdHJvbmdlcih0
aGlzLnN0cmVuZ3RoLCB0aGlzLnYyLndhbGtTdHJlbmd0aCkKKyAgICAgID8gRGlyZWN0aW9uLkZP
UldBUkQKKyAgICAgIDogRGlyZWN0aW9uLkJBQ0tXQVJECisgIH0KK30KKworLyoqCisgKiBBZGQg
dGhpcyBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW50IGdyYXBoCisgKi8KK0JpbmFyeUNvbnN0
cmFpbnQucHJvdG90eXBlLmFkZFRvR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMudjEuYWRk
Q29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy52Mi5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlz
LmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKioKKyAqIEFuc3dlciB0cnVlIGlm
IHRoaXMgY29uc3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisg
Ki8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlzU2F0aXNmaWVkID0gZnVuY3Rpb24gKCkg
eworICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gIT0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgor
ICogTWFyayB0aGUgaW5wdXQgdmFyaWFibGUgd2l0aCB0aGUgZ2l2ZW4gbWFyay4KKyAqLworQmlu
YXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7Cisg
IHRoaXMuaW5wdXQoKS5tYXJrID0gbWFyazsKK30KKworLyoqCisgKiBSZXR1cm5zIHRoZSBjdXJy
ZW50IGlucHV0IHZhcmlhYmxlCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlucHV0
ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5G
T1JXQVJEKSA/IHRoaXMudjEgOiB0aGlzLnYyOworfQorCisvKioKKyAqIFJldHVybnMgdGhlIGN1
cnJlbnQgb3V0cHV0IHZhcmlhYmxlCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm91
dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLmRpcmVjdGlvbiA9PSBEaXJlY3Rp
b24uRk9SV0FSRCkgPyB0aGlzLnYyIDogdGhpcy52MTsKK30KKworLyoqCisgKiBDYWxjdWxhdGUg
dGhlIHdhbGthYm91dCBzdHJlbmd0aCwgdGhlIHN0YXkgZmxhZywgYW5kLCBpZiBpdCBpcworICog
J3N0YXknLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IG91dHB1dCBvZiB0aGlzCisgKiBjb25z
dHJhaW50LiBBc3N1bWUgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZC4KKyAqLworQmluYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxhdGUgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBp
aG4gPSB0aGlzLmlucHV0KCksIG91dCA9IHRoaXMub3V0cHV0KCk7CisgIG91dC53YWxrU3RyZW5n
dGggPSBTdHJlbmd0aC53ZWFrZXN0T2YodGhpcy5zdHJlbmd0aCwgaWhuLndhbGtTdHJlbmd0aCk7
CisgIG91dC5zdGF5ID0gaWhuLnN0YXk7CisgIGlmIChvdXQuc3RheSkgdGhpcy5leGVjdXRlKCk7
Cit9CisKKy8qKgorICogUmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVu
c2F0aXNmaWVkLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrVW5zYXRpc2Zp
ZWQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9
CisKK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKG1h
cmspIHsKKyAgdmFyIGkgPSB0aGlzLmlucHV0KCk7CisgIHJldHVybiBpLm1hcmsgPT0gbWFyayB8
fCBpLnN0YXkgfHwgaS5kZXRlcm1pbmVkQnkgPT0gbnVsbDsKK30KKworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkgeworICBpZiAodGhpcy52
MSAhPSBudWxsKSB0aGlzLnYxLnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7CisgIGlmICh0aGlzLnYy
ICE9IG51bGwpIHRoaXMudjIucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy5kaXJlY3Rp
b24gPSBEaXJlY3Rpb24uTk9ORTsKK30KKworLyogLS0tICoKKyAqIFMgYyBhIGwgZSAgIEMgbyBu
IHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIFJlbGF0ZXMgdHdvIHZhcmlhYmxl
cyBieSB0aGUgbGluZWFyIHNjYWxpbmcgcmVsYXRpb25zaGlwOiAidjIgPQorICogKHYxICogc2Nh
bGUpICsgb2Zmc2V0Ii4gRWl0aGVyIHYxIG9yIHYyIG1heSBiZSBjaGFuZ2VkIHRvIG1haW50YWlu
CisgKiB0aGlzIHJlbGF0aW9uc2hpcCBidXQgdGhlIHNjYWxlIGZhY3RvciBhbmQgb2Zmc2V0IGFy
ZSBjb25zaWRlcmVkCisgKiByZWFkLW9ubHkuCisgKi8KK2Z1bmN0aW9uIFNjYWxlQ29uc3RyYWlu
dChzcmMsIHNjYWxlLCBvZmZzZXQsIGRlc3QsIHN0cmVuZ3RoKSB7CisgIHRoaXMuZGlyZWN0aW9u
ID0gRGlyZWN0aW9uLk5PTkU7CisgIHRoaXMuc2NhbGUgPSBzY2FsZTsKKyAgdGhpcy5vZmZzZXQg
PSBvZmZzZXQ7CisgIFNjYWxlQ29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywg
c3JjLCBkZXN0LCBzdHJlbmd0aCk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5pbmhlcml0c0Zyb20o
QmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8gdGhl
IGNvbnN0cmFpbnQgZ3JhcGguCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9H
cmFwaCA9IGZ1bmN0aW9uICgpIHsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3Iu
cHJvdG90eXBlLmFkZFRvR3JhcGguY2FsbCh0aGlzKTsKKyAgdGhpcy5zY2FsZS5hZGRDb25zdHJh
aW50KHRoaXMpOworICB0aGlzLm9mZnNldC5hZGRDb25zdHJhaW50KHRoaXMpOworfQorCitTY2Fs
ZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCA9IGZ1bmN0aW9uICgpIHsKKyAg
U2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbW92ZUZyb21HcmFw
aC5jYWxsKHRoaXMpOworICBpZiAodGhpcy5zY2FsZSAhPSBudWxsKSB0aGlzLnNjYWxlLnJlbW92
ZUNvbnN0cmFpbnQodGhpcyk7CisgIGlmICh0aGlzLm9mZnNldCAhPSBudWxsKSB0aGlzLm9mZnNl
dC5yZW1vdmVDb25zdHJhaW50KHRoaXMpOworfQorCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtJbnB1dHMgPSBmdW5jdGlvbiAobWFyaykgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5wcm90b3R5cGUubWFya0lucHV0cy5jYWxsKHRoaXMsIG1hcmspOworICB0aGlz
LnNjYWxlLm1hcmsgPSB0aGlzLm9mZnNldC5tYXJrID0gbWFyazsKK30KKworLyoqCisgKiBFbmZv
cmNlIHRoaXMgY29uc3RyYWludC4gQXNzdW1lIHRoYXQgaXQgaXMgc2F0aXNmaWVkLgorICovCitT
Y2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIGlmICh0
aGlzLmRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRk9SV0FSRCkgeworICAgIHRoaXMudjIudmFsdWUg
PSB0aGlzLnYxLnZhbHVlICogdGhpcy5zY2FsZS52YWx1ZSArIHRoaXMub2Zmc2V0LnZhbHVlOwor
ICB9IGVsc2UgeworICAgIHRoaXMudjEudmFsdWUgPSAodGhpcy52Mi52YWx1ZSAtIHRoaXMub2Zm
c2V0LnZhbHVlKSAvIHRoaXMuc2NhbGUudmFsdWU7CisgIH0KK30KKworLyoqCisgKiBDYWxjdWxh
dGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aCwgdGhlIHN0YXkgZmxhZywgYW5kLCBpZiBpdCBpcwor
ICogJ3N0YXknLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IG91dHB1dCBvZiB0aGlzIGNvbnN0
cmFpbnQuIEFzc3VtZQorICogdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZC4KKyAqLworU2Nh
bGVDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdmFy
IGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAgb3V0LndhbGtTdHJl
bmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4ud2Fsa1N0cmVuZ3Ro
KTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheSAmJiB0aGlzLnNjYWxlLnN0YXkgJiYgdGhpcy5vZmZz
ZXQuc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsKK30KKworLyogLS0tICoK
KyAqIEUgcSB1IGEgbCBpIHQgIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKwor
LyoqCisgKiBDb25zdHJhaW5zIHR3byB2YXJpYWJsZXMgdG8gaGF2ZSB0aGUgc2FtZSB2YWx1ZS4K
KyAqLworZnVuY3Rpb24gRXF1YWxpdHlDb25zdHJhaW50KHZhcjEsIHZhcjIsIHN0cmVuZ3RoKSB7
CisgIEVxdWFsaXR5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdmFyMSwg
dmFyMiwgc3RyZW5ndGgpOworfQorCitFcXVhbGl0eUNvbnN0cmFpbnQuaW5oZXJpdHNGcm9tKEJp
bmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1
bWUgdGhhdCBpdCBpcyBzYXRpc2ZpZWQuCisgKi8KK0VxdWFsaXR5Q29uc3RyYWludC5wcm90b3R5
cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5vdXRwdXQoKS52YWx1ZSA9IHRoaXMu
aW5wdXQoKS52YWx1ZTsKK30KKworLyogLS0tICoKKyAqIFYgYSByIGkgYSBiIGwgZQorICogLS0t
ICovCisKKy8qKgorICogQSBjb25zdHJhaW5lZCB2YXJpYWJsZS4gSW4gYWRkaXRpb24gdG8gaXRz
IHZhbHVlLCBpdCBtYWludGFpbiB0aGUKKyAqIHN0cnVjdHVyZSBvZiB0aGUgY29uc3RyYWludCBn
cmFwaCwgdGhlIGN1cnJlbnQgZGF0YWZsb3cgZ3JhcGgsIGFuZAorICogdmFyaW91cyBwYXJhbWV0
ZXJzIG9mIGludGVyZXN0IHRvIHRoZSBEZWx0YUJsdWUgaW5jcmVtZW50YWwKKyAqIGNvbnN0cmFp
bnQgc29sdmVyLgorICoqLworZnVuY3Rpb24gVmFyaWFibGUobmFtZSwgaW5pdGlhbFZhbHVlKSB7
CisgIHRoaXMudmFsdWUgPSBpbml0aWFsVmFsdWUgfHwgMDsKKyAgdGhpcy5jb25zdHJhaW50cyA9
IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICB0aGlzLmRldGVybWluZWRCeSA9IG51bGw7Cisg
IHRoaXMubWFyayA9IDA7CisgIHRoaXMud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGguV0VBS0VTVDsK
KyAgdGhpcy5zdGF5ID0gdHJ1ZTsKKyAgdGhpcy5uYW1lID0gbmFtZTsKK30KKworLyoqCisgKiBB
ZGQgdGhlIGdpdmVuIGNvbnN0cmFpbnQgdG8gdGhlIHNldCBvZiBhbGwgY29uc3RyYWludHMgdGhh
dCByZWZlcgorICogdGhpcyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLmFkZENv
bnN0cmFpbnQgPSBmdW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLmFkZChjKTsKK30K
KworLyoqCisgKiBSZW1vdmVzIGFsbCB0cmFjZXMgb2YgYyBmcm9tIHRoaXMgdmFyaWFibGUuCisg
Ki8KK1ZhcmlhYmxlLnByb3RvdHlwZS5yZW1vdmVDb25zdHJhaW50ID0gZnVuY3Rpb24gKGMpIHsK
KyAgdGhpcy5jb25zdHJhaW50cy5yZW1vdmUoYyk7CisgIGlmICh0aGlzLmRldGVybWluZWRCeSA9
PSBjKSB0aGlzLmRldGVybWluZWRCeSA9IG51bGw7Cit9CisKKy8qIC0tLSAqCisgKiBQIGwgYSBu
IG4gZSByCisgKiAtLS0gKi8KKworLyoqCisgKiBUaGUgRGVsdGFCbHVlIHBsYW5uZXIKKyAqLwor
ZnVuY3Rpb24gUGxhbm5lcigpIHsKKyAgdGhpcy5jdXJyZW50TWFyayA9IDA7Cit9CisKKy8qKgor
ICogQXR0ZW1wdCB0byBzYXRpc2Z5IHRoZSBnaXZlbiBjb25zdHJhaW50IGFuZCwgaWYgc3VjY2Vz
c2Z1bCwKKyAqIGluY3JlbWVudGFsbHkgdXBkYXRlIHRoZSBkYXRhZmxvdyBncmFwaC4gIERldGFp
bHM6IElmIHNhdGlmeWluZworICogdGhlIGNvbnN0cmFpbnQgaXMgc3VjY2Vzc2Z1bCwgaXQgbWF5
IG92ZXJyaWRlIGEgd2Vha2VyIGNvbnN0cmFpbnQKKyAqIG9uIGl0cyBvdXRwdXQuIFRoZSBhbGdv
cml0aG0gYXR0ZW1wdHMgdG8gcmVzYXRpc2Z5IHRoYXQKKyAqIGNvbnN0cmFpbnQgdXNpbmcgc29t
ZSBvdGhlciBtZXRob2QuIFRoaXMgcHJvY2VzcyBpcyByZXBlYXRlZAorICogdW50aWwgZWl0aGVy
IGEpIGl0IHJlYWNoZXMgYSB2YXJpYWJsZSB0aGF0IHdhcyBub3QgcHJldmlvdXNseQorICogZGV0
ZXJtaW5lZCBieSBhbnkgY29uc3RyYWludCBvciBiKSBpdCByZWFjaGVzIGEgY29uc3RyYWludCB0
aGF0CisgKiBpcyB0b28gd2VhayB0byBiZSBzYXRpc2ZpZWQgdXNpbmcgYW55IG9mIGl0cyBtZXRo
b2RzLiBUaGUKKyAqIHZhcmlhYmxlcyBvZiBjb25zdHJhaW50cyB0aGF0IGhhdmUgYmVlbiBwcm9j
ZXNzZWQgYXJlIG1hcmtlZCB3aXRoCisgKiBhIHVuaXF1ZSBtYXJrIHZhbHVlIHNvIHRoYXQgd2Ug
a25vdyB3aGVyZSB3ZSd2ZSBiZWVuLiBUaGlzIGFsbG93cworICogdGhlIGFsZ29yaXRobSB0byBh
dm9pZCBnZXR0aW5nIGludG8gYW4gaW5maW5pdGUgbG9vcCBldmVuIGlmIHRoZQorICogY29uc3Ry
YWludCBncmFwaCBoYXMgYW4gaW5hZHZlcnRlbnQgY3ljbGUuCisgKi8KK1BsYW5uZXIucHJvdG90
eXBlLmluY3JlbWVudGFsQWRkID0gZnVuY3Rpb24gKGMpIHsKKyAgdmFyIG1hcmsgPSB0aGlzLm5l
d01hcmsoKTsKKyAgdmFyIG92ZXJyaWRkZW4gPSBjLnNhdGlzZnkobWFyayk7CisgIHdoaWxlIChv
dmVycmlkZGVuICE9IG51bGwpCisgICAgb3ZlcnJpZGRlbiA9IG92ZXJyaWRkZW4uc2F0aXNmeSht
YXJrKTsKK30KKworLyoqCisgKiBFbnRyeSBwb2ludCBmb3IgcmV0cmFjdGluZyBhIGNvbnN0cmFp
bnQuIFJlbW92ZSB0aGUgZ2l2ZW4KKyAqIGNvbnN0cmFpbnQgYW5kIGluY3JlbWVudGFsbHkgdXBk
YXRlIHRoZSBkYXRhZmxvdyBncmFwaC4KKyAqIERldGFpbHM6IFJldHJhY3RpbmcgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgbWF5IGFsbG93IHNvbWUgY3VycmVudGx5CisgKiB1bnNhdGlzZmlhYmxlIGRv
d25zdHJlYW0gY29uc3RyYWludCB0byBiZSBzYXRpc2ZpZWQuIFdlIHRoZXJlZm9yZSBjb2xsZWN0
CisgKiBhIGxpc3Qgb2YgdW5zYXRpc2ZpZWQgZG93bnN0cmVhbSBjb25zdHJhaW50cyBhbmQgYXR0
ZW1wdCB0bworICogc2F0aXNmeSBlYWNoIG9uZSBpbiB0dXJuLiBUaGlzIGxpc3QgaXMgdHJhdmVy
c2VkIGJ5IGNvbnN0cmFpbnQKKyAqIHN0cmVuZ3RoLCBzdHJvbmdlc3QgZmlyc3QsIGFzIGEgaGV1
cmlzdGljIGZvciBhdm9pZGluZworICogdW5uZWNlc3NhcmlseSBhZGRpbmcgYW5kIHRoZW4gb3Zl
cnJpZGluZyB3ZWFrIGNvbnN0cmFpbnRzLgorICogQXNzdW1lOiBjIGlzIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxSZW1vdmUgPSBmdW5jdGlvbiAoYykgewor
ICB2YXIgb3V0ID0gYy5vdXRwdXQoKTsKKyAgYy5tYXJrVW5zYXRpc2ZpZWQoKTsKKyAgYy5yZW1v
dmVGcm9tR3JhcGgoKTsKKyAgdmFyIHVuc2F0aXNmaWVkID0gdGhpcy5yZW1vdmVQcm9wYWdhdGVG
cm9tKG91dCk7CisgIHZhciBzdHJlbmd0aCA9IFN0cmVuZ3RoLlJFUVVJUkVEOworICBkbyB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bnNhdGlzZmllZC5zaXplKCk7IGkrKykgeworICAgICAg
dmFyIHUgPSB1bnNhdGlzZmllZC5hdChpKTsKKyAgICAgIGlmICh1LnN0cmVuZ3RoID09IHN0cmVu
Z3RoKQorICAgICAgICB0aGlzLmluY3JlbWVudGFsQWRkKHUpOworICAgIH0KKyAgICBzdHJlbmd0
aCA9IHN0cmVuZ3RoLm5leHRXZWFrZXIoKTsKKyAgfSB3aGlsZSAoc3RyZW5ndGggIT0gU3RyZW5n
dGguV0VBS0VTVCk7Cit9CisKKy8qKgorICogU2VsZWN0IGEgcHJldmlvdXNseSB1bnVzZWQgbWFy
ayB2YWx1ZS4KKyAqLworUGxhbm5lci5wcm90b3R5cGUubmV3TWFyayA9IGZ1bmN0aW9uICgpIHsK
KyAgcmV0dXJuICsrdGhpcy5jdXJyZW50TWFyazsKK30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxh
biBmb3IgcmVzYXRpc2ZhY3Rpb24gc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gc291cmNlCisgKiBj
b25zdHJhaW50cywgdXN1YWxseSBhIHNldCBvZiBpbnB1dCBjb25zdHJhaW50cy4gVGhpcyBtZXRo
b2QKKyAqIGFzc3VtZXMgdGhhdCBzdGF5IG9wdGltaXphdGlvbiBpcyBkZXNpcmVkOyB0aGUgcGxh
biB3aWxsIGNvbnRhaW4KKyAqIG9ubHkgY29uc3RyYWludHMgd2hvc2Ugb3V0cHV0IHZhcmlhYmxl
cyBhcmUgbm90IHN0YXkuIENvbnN0cmFpbnRzCisgKiB0aGF0IGRvIG5vIGNvbXB1dGF0aW9uLCBz
dWNoIGFzIHN0YXkgYW5kIGVkaXQgY29uc3RyYWludHMsIGFyZQorICogbm90IGluY2x1ZGVkIGlu
IHRoZSBwbGFuLgorICogRGV0YWlsczogVGhlIG91dHB1dHMgb2YgYSBjb25zdHJhaW50IGFyZSBt
YXJrZWQgd2hlbiBpdCBpcyBhZGRlZAorICogdG8gdGhlIHBsYW4gdW5kZXIgY29uc3RydWN0aW9u
LiBBIGNvbnN0cmFpbnQgbWF5IGJlIGFwcGVuZGVkIHRvCisgKiB0aGUgcGxhbiB3aGVuIGFsbCBp
dHMgaW5wdXQgdmFyaWFibGVzIGFyZSBrbm93bi4gQSB2YXJpYWJsZSBpcworICoga25vd24gaWYg
ZWl0aGVyIGEpIHRoZSB2YXJpYWJsZSBpcyBtYXJrZWQgKGluZGljYXRpbmcgdGhhdCBoYXMKKyAq
IGJlZW4gY29tcHV0ZWQgYnkgYSBjb25zdHJhaW50IGFwcGVhcmluZyBlYXJsaWVyIGluIHRoZSBw
bGFuKSwgYikKKyAqIHRoZSB2YXJpYWJsZSBpcyAnc3RheScgKGkuZS4gaXQgaXMgYSBjb25zdGFu
dCBhdCBwbGFuIGV4ZWN1dGlvbgorICogdGltZSksIG9yIGMpIHRoZSB2YXJpYWJsZSBpcyBub3Qg
ZGV0ZXJtaW5lZCBieSBhbnkKKyAqIGNvbnN0cmFpbnQuIFRoZSBsYXN0IHByb3Zpc2lvbiBpcyBm
b3IgcGFzdCBzdGF0ZXMgb2YgaGlzdG9yeQorICogdmFyaWFibGVzLCB3aGljaCBhcmUgbm90IHN0
YXkgYnV0IHdoaWNoIGFyZSBhbHNvIG5vdCBjb21wdXRlZCBieQorICogYW55IGNvbnN0cmFpbnQu
CisgKiBBc3N1bWU6IHNvdXJjZXMgYXJlIGFsbCBzYXRpc2ZpZWQuCisgKi8KK1BsYW5uZXIucHJv
dG90eXBlLm1ha2VQbGFuID0gZnVuY3Rpb24gKHNvdXJjZXMpIHsKKyAgdmFyIG1hcmsgPSB0aGlz
Lm5ld01hcmsoKTsKKyAgdmFyIHBsYW4gPSBuZXcgUGxhbigpOworICB2YXIgdG9kbyA9IHNvdXJj
ZXM7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsKKyAgICB2YXIgYyA9IHRvZG8ucmVtb3Zl
Rmlyc3QoKTsKKyAgICBpZiAoYy5vdXRwdXQoKS5tYXJrICE9IG1hcmsgJiYgYy5pbnB1dHNLbm93
bihtYXJrKSkgeworICAgICAgcGxhbi5hZGRDb25zdHJhaW50KGMpOworICAgICAgYy5vdXRwdXQo
KS5tYXJrID0gbWFyazsKKyAgICAgIHRoaXMuYWRkQ29uc3RyYWludHNDb25zdW1pbmdUbyhjLm91
dHB1dCgpLCB0b2RvKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHBsYW47Cit9CisKKy8qKgorICog
RXh0cmFjdCBhIHBsYW4gZm9yIHJlc2F0aXNmeWluZyBzdGFydGluZyBmcm9tIHRoZSBvdXRwdXQg
b2YgdGhlCisgKiBnaXZlbiBjb25zdHJhaW50cywgdXN1YWxseSBhIHNldCBvZiBpbnB1dCBjb25z
dHJhaW50cy4KKyAqLworUGxhbm5lci5wcm90b3R5cGUuZXh0cmFjdFBsYW5Gcm9tQ29uc3RyYWlu
dHMgPSBmdW5jdGlvbiAoY29uc3RyYWludHMpIHsKKyAgdmFyIHNvdXJjZXMgPSBuZXcgT3JkZXJl
ZENvbGxlY3Rpb24oKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25zdHJhaW50cy5zaXplKCk7
IGkrKykgeworICAgIHZhciBjID0gY29uc3RyYWludHMuYXQoaSk7CisgICAgaWYgKGMuaXNJbnB1
dCgpICYmIGMuaXNTYXRpc2ZpZWQoKSkKKyAgICAgIC8vIG5vdCBpbiBwbGFuIGFscmVhZHkgYW5k
IGVsaWdpYmxlIGZvciBpbmNsdXNpb24KKyAgICAgIHNvdXJjZXMuYWRkKGMpOworICB9CisgIHJl
dHVybiB0aGlzLm1ha2VQbGFuKHNvdXJjZXMpOworfQorCisvKioKKyAqIFJlY29tcHV0ZSB0aGUg
d2Fsa2Fib3V0IHN0cmVuZ3RocyBhbmQgc3RheSBmbGFncyBvZiBhbGwgdmFyaWFibGVzCisgKiBk
b3duc3RyZWFtIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IGFuZCByZWNvbXB1dGUgdGhlIGFjdHVh
bAorICogdmFsdWVzIG9mIGFsbCB2YXJpYWJsZXMgd2hvc2Ugc3RheSBmbGFnIGlzIHRydWUuIElm
IGEgY3ljbGUgaXMKKyAqIGRldGVjdGVkLCByZW1vdmUgdGhlIGdpdmVuIGNvbnN0cmFpbnQgYW5k
IGFuc3dlcgorICogZmFsc2UuIE90aGVyd2lzZSwgYW5zd2VyIHRydWUuCisgKiBEZXRhaWxzOiBD
eWNsZXMgYXJlIGRldGVjdGVkIHdoZW4gYSBtYXJrZWQgdmFyaWFibGUgaXMKKyAqIGVuY291bnRl
cmVkIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIFRoZSBzZW5kZXIgaXMKKyAq
IGFzc3VtZWQgdG8gaGF2ZSBtYXJrZWQgdGhlIGlucHV0cyBvZiB0aGUgZ2l2ZW4gY29uc3RyYWlu
dCB3aXRoCisgKiB0aGUgZ2l2ZW4gbWFyay4gVGh1cywgZW5jb3VudGVyaW5nIGEgbWFya2VkIG5v
ZGUgZG93bnN0cmVhbSBvZgorICogdGhlIG91dHB1dCBjb25zdHJhaW50IG1lYW5zIHRoYXQgdGhl
cmUgaXMgYSBwYXRoIGZyb20gdGhlCisgKiBjb25zdHJhaW50J3Mgb3V0cHV0IHRvIG9uZSBvZiBp
dHMgaW5wdXRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5hZGRQcm9wYWdhdGUgPSBmdW5jdGlv
biAoYywgbWFyaykgeworICB2YXIgdG9kbyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICB0
b2RvLmFkZChjKTsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBkID0gdG9k
by5yZW1vdmVGaXJzdCgpOworICAgIGlmIChkLm91dHB1dCgpLm1hcmsgPT0gbWFyaykgeworICAg
ICAgdGhpcy5pbmNyZW1lbnRhbFJlbW92ZShjKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgZC5yZWNhbGN1bGF0ZSgpOworICAgIHRoaXMuYWRkQ29uc3RyYWludHNDb25zdW1pbmdU
byhkLm91dHB1dCgpLCB0b2RvKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworCisvKioKKyAq
IFVwZGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RocyBhbmQgc3RheSBmbGFncyBvZiBhbGwgdmFy
aWFibGVzCisgKiBkb3duc3RyZWFtIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50LiBBbnN3ZXIgYSBj
b2xsZWN0aW9uIG9mCisgKiB1bnNhdGlzZmllZCBjb25zdHJhaW50cyBzb3J0ZWQgaW4gb3JkZXIg
b2YgZGVjcmVhc2luZyBzdHJlbmd0aC4KKyAqLworUGxhbm5lci5wcm90b3R5cGUucmVtb3ZlUHJv
cGFnYXRlRnJvbSA9IGZ1bmN0aW9uIChvdXQpIHsKKyAgb3V0LmRldGVybWluZWRCeSA9IG51bGw7
CisgIG91dC53YWxrU3RyZW5ndGggPSBTdHJlbmd0aC5XRUFLRVNUOworICBvdXQuc3RheSA9IHRy
dWU7CisgIHZhciB1bnNhdGlzZmllZCA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICB2YXIg
dG9kbyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICB0b2RvLmFkZChvdXQpOworICB3aGls
ZSAodG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIHYgPSB0b2RvLnJlbW92ZUZpcnN0KCk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAg
ICB2YXIgYyA9IHYuY29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAoIWMuaXNTYXRpc2ZpZWQo
KSkKKyAgICAgICAgdW5zYXRpc2ZpZWQuYWRkKGMpOworICAgIH0KKyAgICB2YXIgZGV0ZXJtaW5p
bmcgPSB2LmRldGVybWluZWRCeTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHYuY29uc3RyYWlu
dHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBuZXh0ID0gdi5jb25zdHJhaW50cy5hdChpKTsK
KyAgICAgIGlmIChuZXh0ICE9IGRldGVybWluaW5nICYmIG5leHQuaXNTYXRpc2ZpZWQoKSkgewor
ICAgICAgICBuZXh0LnJlY2FsY3VsYXRlKCk7CisgICAgICAgIHRvZG8uYWRkKG5leHQub3V0cHV0
KCkpOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisKK1Bs
YW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAodiwg
Y29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNjID0g
di5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykgewor
ICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1Nh
dGlzZmllZCgpKQorICAgICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAg
bCBhIG4KKyAqIC0tLSAqLworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2Yg
Y29uc3RyYWludHMgdG8gYmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBh
bGwgY3VycmVudGx5IHNhdGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBv
bmUgb3IgbW9yZSBjaGFuZ2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRo
aXMudiA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRD
b25zdHJhaW50ID0gZnVuY3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5w
cm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9
CisKK1BsYW4ucHJvdG90eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICBy
ZXR1cm4gdGhpcy52LmF0KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1
bmN0aW9uICgpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7Cisg
ICAgdmFyIGMgPSB0aGlzLmNvbnN0cmFpbnRBdChpKTsKKyAgICBjLmV4ZWN1dGUoKTsKKyAgfQor
fQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0tICovCisKKy8qKgorICogVGhpcyBpcyB0
aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4gQSBsb25nIGNoYWluIG9mIGVxdWFsaXR5
CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3aXRoIGEgc3RheSBjb25zdHJhaW50IG9u
IG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQgaXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bw
b3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVhc3VyZWQgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFjdGluZworICogYW5kIGV4ZWN1dGluZyBh
IGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRoZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJ
biBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlzIHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkK
KyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHByb3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUg
bGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2UgMiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQg
aXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgc28gaXQgY2Fubm90IGJlIGFj
Y29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2UgaXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkg
bG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0
d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWluVGVzdChuKSB7CisgIHBsYW5uZXIgPSBu
ZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGwsIGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51
bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVhbGl0eSBjb25zdHJhaW50cworICBmb3Ig
KHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2YXIgbmFtZSA9ICJ2IiArIGk7CisgICAg
dmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAgaWYgKHByZXYgIT0gbnVsbCkKKyAgICAg
IG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwgU3RyZW5ndGguUkVRVUlSRUQpOworICAg
IGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAoaSA9PSBuKSBsYXN0ID0gdjsKKyAgICBw
cmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0aC5TVFJP
TkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0LCBTdHJl
bmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsK
KyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9t
Q29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsrKSB7Cisg
ICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChsYXN0LnZh
bHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgIH0KK30KKwor
LyoqCisgKiBUaGlzIHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxh
dGVkIHRvIGVhY2gKKyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAo
c2NhbGUgYW5kIG9mZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2
YXJpYWJsZSBvbiBlaXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0
aGUgc2NhbGUgYW5kIG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVz
dChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFy
aWFibGUoInNjYWxlIiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQi
LCAxMDAwKTsKKyAgdmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0g
bmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7
CisgICAgc3JjID0gbmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZh
cmlhYmxlKCJkc3QiICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgbmV3IFN0YXlD
b25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFMKTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50
KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJlbmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBj
aGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFsdWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rp
b24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwgMTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0g
NSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQiKTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZh
bHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFsZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7
CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAt
IDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSArIDIwMDApCisg
ICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICB9Cit9CisKK2Z1bmN0aW9uIGNo
YW5nZSh2LCBuZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBT
dHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24o
KTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5G
cm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsK
KyAgICB2LnZhbHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRp
dC5kZXN0cm95Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0
aGUgY3VycmVudCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0
YUJsdWUoKSB7CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQor
Citmb3IgKHZhciBpID0gMDsgaSA8IDE1NTsgKytpKQorICAgIGRlbHRhQmx1ZSgpOwpJbmRleDog
U3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LWVhcmxleS1ib3llci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
dW5TcGlkZXIvdGVzdHMvdjgtdjYvdjgtZWFybGV5LWJveWVyLmpzCShyZXZpc2lvbiAwKQorKysg
U3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LWVhcmxleS1ib3llci5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NjgzIEBACisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
Ynkgc2NoZW1lMmpzLCBleGNlcHQgZm9yIHRoZQorLy8gYmVuY2htYXJrIGhhcm5lc3MgY29kZSBh
dCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGZpbGUuCisKKy8qKioqKioqKioqKioqIEdF
TkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioq
IEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8qKioqKioqKioq
KioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8qKioqKioq
KioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8qKioq
KioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8q
KioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8K
Ky8qKioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioq
Ki8KKy8qKioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioq
KioqKi8KKy8qCisgKiBUbyB1c2Ugd3JpdGUvcHJpbnRzLy4uLiB0aGUgZGVmYXVsdC1vdXRwdXQg
cG9ydCBoYXMgdG8gYmUgc2V0IGZpcnN0LgorICogU2ltcGx5IHNldHRpbmcgU0NfREVGQVVMVF9P
VVQgYW5kIFNDX0VSUk9SX09VVCB0byB0aGUgZGVzaXJlZCB2YWx1ZXMKKyAqIHNob3VsZCBkbyB0
aGUgdHJpY2suCisgKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdGhlIHN0ZC1vdXQgYW5kIGVy
cm9yLXBvcnQgYXJlIHJlZGlyZWN0ZWQgdG8KKyAqIGEgRElWLgorZnVuY3Rpb24gaW5pdFJ1bnRp
bWUoKSB7CisgICAgZnVuY3Rpb24gZXNjYXBlSFRNTChzKSB7CisJdmFyIHRtcCA9IHM7CisJdG1w
ID0gdG1wLnJlcGxhY2UoLyYvZywgIiZhbXA7Iik7CisJdG1wID0gdG1wLnJlcGxhY2UoLzwvZywg
IiZsdDsiKTsKKwl0bXAgPSB0bXAucmVwbGFjZSgvPi9nLCAiJmd0OyIpOworCXRtcCA9IHRtcC5y
ZXBsYWNlKC8gL2csICImbmJzcDsiKTsKKwl0bXAgPSB0bXAucmVwbGFjZSgvXG4vZywgIjxiciAv
PiIpOworCXRtcCA9IHRtcC5yZXBsYWNlKC9cdC9nLCAiJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3Ai
KTsKKwlyZXR1cm4gdG1wOworCQorICAgIH0KKworICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IGlk
PSdzdGRvdXQnPjwvZGl2PiIpOworICAgIFNDX0RFRkFVTFRfT1VUID0gbmV3IHNjX0dlbmVyaWNP
dXRwdXRQb3J0KAorCWZ1bmN0aW9uKHMpIHsKKwkgICAgdmFyIHN0ZG91dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzdGRvdXQnKTsKKwkgICAgc3Rkb3V0LmlubmVySFRNTCA9IHN0ZG91dC5p
bm5lckhUTUwgKyBlc2NhcGVIVE1MKHMpOworCX0pOworICAgIFNDX0VSUk9SX09VVCA9IFNDX0RF
RkFVTFRfT1VUOworfQorKi8KKworCitmdW5jdGlvbiBzY19wcmludF9kZWJ1ZygpIHsKKyAgICBz
Y19wcmludC5hcHBseShudWxsLCBhcmd1bWVudHMpOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICpq
cyopKSAqLwordmFyIHNjX0pTX0dMT0JBTFMgPSB0aGlzOworCit2YXIgX19zY19MSU5FPS0xOwor
dmFyIF9fc2NfRklMRT0iIjsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX2FsZXJ0KCkgeworICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7CisgICB2YXIgcyA9
ICIiOworICAgdmFyIGk7CisKKyAgIGZvciggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAg
ICBzICs9IHNjX3RvRGlzcGxheVN0cmluZyhhcmd1bWVudHNbIGkgXSk7CisgICB9CisKKyAgIHJl
dHVybiBhbGVydCggcyApOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2NfdHlwZW9mKCB4ICkgeworICAgcmV0dXJuIHR5cGVvZiB4OworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZXJyb3IoKSB7CisgICAgdmFyIGEgPSBbc2Nf
anNzdHJpbmcyc3ltYm9sKCIqZXJyb3IqIildOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJn
dW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJYVtpKzFdID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAg
ICB0aHJvdyBhOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocHJlZml4ICJ0aHJvdyAiKSkpCisqLworZnVuY3Rpb24gc2NfcmFpc2Uob2JqKSB7Cisg
ICAgdGhyb3cgb2JqOworfQorCisvKioqIE1FVEEgKChleHBvcnQgd2l0aC1oYW5kbGVyLWxhbWJk
YSkpICovCitmdW5jdGlvbiBzY193aXRoSGFuZGxlckxhbWJkYShoYW5kbGVyLCBib2R5KSB7Cisg
ICAgdHJ5IHsKKwlyZXR1cm4gYm9keSgpOworICAgIH0gY2F0Y2goZSkgeworCWlmICghZS5faW50
ZXJuYWxFeGNlcHRpb24pCisJICAgIHJldHVybiBoYW5kbGVyKGUpOworCWVsc2UKKwkgICAgdGhy
b3cgZTsKKyAgICB9Cit9CisKK3ZhciBzY19wcm9wZXJ0aWVzID0gbmV3IE9iamVjdCgpOworCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHV0cHJvcEJhbmcoc3ltLCBr
ZXksIHZhbCkgeworICAgIHZhciBodCA9IHNjX3Byb3BlcnRpZXNbc3ltXTsKKyAgICBpZiAoIWh0
KSB7CisJaHQgPSBuZXcgT2JqZWN0KCk7CisJc2NfcHJvcGVydGllc1tzeW1dID0gaHQ7CisgICAg
fQorICAgIGh0W2tleV0gPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19nZXRwcm9wKHN5bSwga2V5KSB7CisgICAgdmFyIGh0ID0gc2NfcHJvcGVydGll
c1tzeW1dOworICAgIGlmIChodCkgeworCWlmIChrZXkgaW4gaHQpCisJICAgIHJldHVybiBodFtr
ZXldOworCWVsc2UKKwkgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZQorCXJldHVybiBmYWxz
ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3JlbXByb3BC
YW5nKHN5bSwga2V5KSB7CisgICAgdmFyIGh0ID0gc2NfcHJvcGVydGllc1tzeW1dOworICAgIGlm
IChodCkKKwlkZWxldGUgaHRba2V5XTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2FueTJTdHJpbmcobykgeworICAgIHJldHVybiBqc3N0cmluZzJzdHJpbmco
c2NfdG9EaXNwbGF5U3RyaW5nKG8pKTsKK30gICAgCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj09PSIpKQorICAgICAgICAgICAodHlw
ZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0VxdihvMSwgbzIpIHsKKyAgICByZXR1cm4gKG8x
ID09PSBvMik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChpbmZpeCAyIDIgIj09PSIpKQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5j
dGlvbiBzY19pc0VxKG8xLCBvMikgeworICAgIHJldHVybiAobzEgPT09IG8yKTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlv
biBzY19pc051bWJlcihuKSB7CisgICAgcmV0dXJuICh0eXBlb2YgbiA9PT0gIm51bWJlciIpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzQ29tcGxleChuKSB7CisgICAgcmV0dXJuIHNjX2lzTnVtYmVyKG4pOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzUmVhbChuKSB7CisgICAgcmV0dXJuIHNjX2lzTnVtYmVyKG4pOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1
bmN0aW9uIHNjX2lzUmF0aW9uYWwobikgeworICAgIHJldHVybiBzY19pc1JlYWwobik7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVu
Y3Rpb24gc2NfaXNJbnRlZ2VyKG4pIHsKKyAgICByZXR1cm4gKHBhcnNlSW50KG4pID09PSBuKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAg
ICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIiwgZmFsc2UiKSkpCisqLworLy8gd2UgZG9uJ3Qg
aGF2ZSBleGFjdCBudW1iZXJzLi4uCitmdW5jdGlvbiBzY19pc0V4YWN0KG4pIHsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChwb3N0Zml4ICIsIHRydWUiKSkKKwkgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBz
Y19pc0luZXhhY3QobikgeworICAgIHJldHVybiB0cnVlOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgPSA9ZnggPWZsKQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhv
bGUgKGluZml4IDIgMiAiPT09IikpKQorKi8KK2Z1bmN0aW9uIHNjX2VxdWFsKHgpIHsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlpZiAoeCAhPT0gYXJn
dW1lbnRzW2ldKQorCSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCA8IDxmeCA8ZmwpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICI8IikpKQorKi8KK2Z1bmN0aW9uIHNjX2xlc3Mo
eCkgeworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJ
aWYgKHggPj0gYXJndW1lbnRzW2ldKQorCSAgICByZXR1cm4gZmFsc2U7CisJeCA9IGFyZ3VtZW50
c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCA+
ID5meCA+ZmwpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aW5maXggMiAyICI+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2dyZWF0ZXIoeCwgeSkgeworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJaWYgKHggPD0gYXJn
dW1lbnRzW2ldKQorCSAgICByZXR1cm4gZmFsc2U7CisJeCA9IGFyZ3VtZW50c1tpXTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCA8PSA8PWZ4IDw9Zmwp
CisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAy
ICI8PSIpKSkKKyovCitmdW5jdGlvbiBzY19sZXNzRXF1YWwoeCwgeSkgeworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJaWYgKHggPiBhcmd1bWVudHNb
aV0pCisJICAgIHJldHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ID49ID49ZmwgPj1meCkKKyAgICAg
ICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj49Iikp
KQorKi8KK2Z1bmN0aW9uIHNjX2dyZWF0ZXJFcXVhbCh4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA8IGFyZ3VtZW50c1tpXSkK
KwkgICAgcmV0dXJuIGZhbHNlOworCXggPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJv
b2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiPT09IDAiKSkpCisqLworZnVuY3Rp
b24gc2NfaXNaZXJvKHgpIHsKKyAgICByZXR1cm4gKHggPT09IDApOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiPiAwIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzUG9zaXRpdmUoeCkgeworICAg
IHJldHVybiAoeCA+IDApOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
ICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiPCAwIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzTmVnYXRpdmUoeCkgeworICAgIHJldHVybiAoeCA8IDApOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAg
IChwZWVwaG9sZSAocG9zdGZpeCAiJTI9PT0xIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzT2RkKHgp
IHsKKyAgICByZXR1cm4gKHggJSAyID09PSAxKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
IiUyPT09MCIpKSkKKyovCitmdW5jdGlvbiBzY19pc0V2ZW4oeCkgeworICAgIHJldHVybiAoeCAl
IDIgPT09IDApOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX21heCA9
IE1hdGgubWF4OworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19taW4gPSBNYXRo
Lm1pbjsKKworLyoqKiBNRVRBICgoZXhwb3J0ICsgK2Z4ICtmbCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChpbmZpeCAwICNmICIrIiAiMCIpKSkKKyovCitmdW5jdGlvbiBzY19wbHVzKCkgeworICAg
IHZhciBzdW0gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKQorCXN1bSArPSBhcmd1bWVudHNbaV07CisgICAgcmV0dXJuIHN1bTsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICogKmZ4ICpmbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAwICNm
ICIqIiAiMSIpKSkKKyovCitmdW5jdGlvbiBzY19tdWx0aSgpIHsKKyAgICB2YXIgcHJvZHVjdCA9
IDE7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcHJv
ZHVjdCAqPSBhcmd1bWVudHNbaV07CisgICAgcmV0dXJuIHByb2R1Y3Q7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAtIC1meCAtZmwpCisgICAgICAgICAgIChwZWVwaG9sZSAobWludXMpKSkKKyov
CitmdW5jdGlvbiBzY19taW51cyh4KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEp
CisJcmV0dXJuIC14OworICAgIGVsc2UgeworCXZhciByZXMgPSB4OworCWZvciAodmFyIGkgPSAx
OyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCSAgICByZXMgLT0gYXJndW1lbnRzW2ldOwor
CXJldHVybiByZXM7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgLyAvZmwpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoZGl2KSkpCisqLworZnVuY3Rpb24gc2NfZGl2KHgpIHsKKyAgICBp
ZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKwlyZXR1cm4gMS94OworICAgIGVsc2UgeworCXZh
ciByZXMgPSB4OworCWZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQor
CSAgICByZXMgLz0gYXJndW1lbnRzW2ldOworCXJldHVybiByZXM7CisgICAgfQorfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2FicyA9IE1hdGguYWJzOworCisvKioqIE1F
VEEgKChleHBvcnQgcXVvdGllbnQgL2Z4KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAi
cGFyc2VJbnQoIiB4ICIvIiB5ICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX3F1b3RpZW50KHgsIHkp
IHsKKyAgICByZXR1cm4gcGFyc2VJbnQoeCAvIHkpOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICIlIikpKQorKi8KK2Z1bmN0aW9u
IHNjX3JlbWFpbmRlcih4LCB5KSB7CisgICAgcmV0dXJuIHggJSB5OworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAobW9kdWxvKSkpCisqLworZnVuY3Rp
b24gc2NfbW9kdWxvKHgsIHkpIHsKKyAgICB2YXIgcmVtYWluZGVyID0geCAlIHk7CisgICAgLy8g
aWYgdGhleSBkb24ndCBoYXZlIHRoZSBzYW1lIHNpZ24KKyAgICBpZiAoKHJlbWFpbmRlciAqIHkp
IDwgMCkKKwlyZXR1cm4gcmVtYWluZGVyICsgeTsKKyAgICBlbHNlCisJcmV0dXJuIHJlbWFpbmRl
cjsKK30KKworZnVuY3Rpb24gc2NfZXVjbGlkX2djZChhLCBiKSB7CisgICAgdmFyIHRlbXA7Cisg
ICAgaWYgKGEgPT09IDApIHJldHVybiBiOworICAgIGlmIChiID09PSAwKSByZXR1cm4gYTsKKyAg
ICBpZiAoYSA8IDApIHthID0gLWE7fTsKKyAgICBpZiAoYiA8IDApIHtiID0gLWI7fTsKKyAgICBp
ZiAoYiA+IGEpIHt0ZW1wID0gYTsgYSA9IGI7IGIgPSB0ZW1wO307CisgICAgd2hpbGUgKHRydWUp
IHsKKwlhICU9IGI7CisJaWYoYSA9PT0gMCkge3JldHVybiBiO307CisJYiAlPSBhOworCWlmKGIg
PT09IDApIHtyZXR1cm4gYTt9OworICAgIH07CisgICAgcmV0dXJuIGI7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19nY2QoKSB7CisgICAgdmFyIGdjZCA9IDA7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJZ2NkID0g
c2NfZXVjbGlkX2djZChnY2QsIGFyZ3VtZW50c1tpXSk7CisgICAgcmV0dXJuIGdjZDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xjbSgpIHsKKyAgICB2YXIg
bGNtID0gMTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykg
eworCXZhciBmID0gTWF0aC5yb3VuZChhcmd1bWVudHNbaV0gLyBzY19ldWNsaWRfZ2NkKGFyZ3Vt
ZW50c1tpXSwgbGNtKSk7CisJbGNtICo9IE1hdGguYWJzKGYpOworICAgIH0KKyAgICByZXR1cm4g
bGNtOworfQorCisvLyBMSU1JVEFUSU9OOiBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGRvbid0
IG1ha2Ugc2Vuc2UgaW4gZmxvYXRpbmcgcG9pbnQgd29ybGQuCisvL3ZhciBTQ19NQVhfREVDSU1B
TFMgPSAxMDAwMDAwCisvLworLy8gZnVuY3Rpb24gc2NfbnVtZXJhdG9yKHgpIHsKKy8vICAgICB2
YXIgcm91bmRlZCA9IE1hdGgucm91bmQoeCAqIFNDX01BWF9ERUNJTUFMUyk7CisvLyAgICAgcmV0
dXJuIE1hdGgucm91bmQocm91bmRlZCAvIHNjX2V1Y2xpZF9nY2Qocm91bmRlZCwgU0NfTUFYX0RF
Q0lNQUxTKSk7CisvLyB9CisKKy8vIGZ1bmN0aW9uIHNjX2Rlbm9taW5hdG9yKHgpIHsKKy8vICAg
ICB2YXIgcm91bmRlZCA9IE1hdGgucm91bmQoeCAqIFNDX01BWF9ERUNJTUFMUyk7CisvLyAgICAg
cmV0dXJuIE1hdGgucm91bmQoU0NfTUFYX0RFQ0lNQUxTIC8gc2NfZXVjbGlkX2djZChyb3VuZGVk
LCBTQ19NQVhfREVDSU1BTFMpKTsKKy8vIH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K3ZhciBzY19mbG9vciA9IE1hdGguZmxvb3I7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
dmFyIHNjX2NlaWxpbmcgPSBNYXRoLmNlaWw7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
dmFyIHNjX3RydW5jYXRlID0gcGFyc2VJbnQ7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
dmFyIHNjX3JvdW5kID0gTWF0aC5yb3VuZDsKKworLy8gTElNSVRBVElPTjogc2NfcmF0aW9uYWxp
emUgZG9lc24ndCBtYWtlIHNlbnNlIGluIGEgZmxvYXRpbmcgcG9pbnQgd29ybGQuCisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfZXhwID0gTWF0aC5leHA7CisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLwordmFyIHNjX2xvZyA9IE1hdGgubG9nOworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK3ZhciBzY19zaW4gPSBNYXRoLnNpbjsKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCit2YXIgc2NfY29zID0gTWF0aC5jb3M7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAq
LwordmFyIHNjX3RhbiA9IE1hdGgudGFuOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3Zh
ciBzY19hc2luID0gTWF0aC5hc2luOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBz
Y19hY29zID0gTWF0aC5hY29zOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19h
dGFuID0gTWF0aC5hdGFuOworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX3Nx
cnQgPSBNYXRoLnNxcnQ7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2V4cHQg
PSBNYXRoLnBvdzsKKworLy8gTElNSVRBVElPTjogd2UgZG9uJ3QgaGF2ZSBjb21wbGV4IG51bWJl
cnMuCisvLyBMSU1JVEFUSU9OOiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgaGVuY2Ugbm90
IGltcGxlbWVudGVkLgorLy8gTElNSVRBVElPTjogbWFrZS1yZWN0YW5ndWxhciwgbWFrZS1wb2xh
ciwgcmVhbC1wYXJ0LCBpbWFnLXBhcnQsIG1hZ25pdHVkZSwgYW5nbGUKKy8vIExJTUlUQVRJT046
IDIgYXJndW1lbnQgYXRhbgorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChw
ZWVwaG9sZSAoaWQpKSkKKyovCitmdW5jdGlvbiBzY19leGFjdDJpbmV4YWN0KHgpIHsKKyAgICBy
ZXR1cm4geDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGlkKSkpCisqLworZnVuY3Rpb24gc2NfaW5leGFjdDJleGFjdCh4KSB7CisgICAgcmV0dXJu
IHg7Cit9CisKK2Z1bmN0aW9uIHNjX251bWJlcjJqc3N0cmluZyh4LCByYWRpeCkgeworICAgIGlm
IChyYWRpeCkKKwlyZXR1cm4geC50b1N0cmluZyhyYWRpeCk7CisgICAgZWxzZQorCXJldHVybiB4
LnRvU3RyaW5nKCk7Cit9CisKK2Z1bmN0aW9uIHNjX2pzc3RyaW5nMm51bWJlcihzLCByYWRpeCkg
eworICAgIGlmIChzID09PSAiIikgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHJhZGl4KSB7CisJ
dmFyIHQgPSBwYXJzZUludChzLCByYWRpeCk7CisJaWYgKCF0ICYmIHQgIT09IDApIHJldHVybiBm
YWxzZTsKKwkvLyB2ZXJpZnkgdGhhdCBlYWNoIGNoYXIgaXMgaW4gcmFuZ2UuIChwYXJzZUludCBp
Z25vcmVzIGxlYWRpbmcKKwkvLyB3aGl0ZSBhbmQgdHJhaWxpbmcgY2hhcnMpCisJdmFyIGFsbG93
ZWRDaGFycyA9ICIwMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ii5zdWJzdHJp
bmcoMCwgcmFkaXgrMSk7CisJaWYgKChuZXcgUmVnRXhwKCJeWyIrYWxsb3dlZENoYXJzKyJdKiQi
LCAiaSIpKS50ZXN0KHMpKQorCSAgICByZXR1cm4gdDsKKwllbHNlIHJldHVybiBmYWxzZTsKKyAg
ICB9IGVsc2UgeworCXZhciB0ID0gK3M7IC8vIGRvZXMgbm90IGlnbm9yZSB0cmFpbGluZyBjaGFy
cy4KKwlpZiAoIXQgJiYgdCAhPT0gMCkgcmV0dXJuIGZhbHNlOworCS8vIHNpbXBseSB2ZXJpZnkg
dGhhdCBmaXJzdCBjaGFyIGlzIG5vdCB3aGl0ZXNwYWNlLgorCXZhciBjID0gcy5jaGFyQXQoMCk7
CisJLy8gaWYgK2MgaXMgMCwgYnV0IHRoZSBjaGFyIGlzIG5vdCAiMCIsIHRoZW4gd2UgaGF2ZSBh
IHdoaXRlc3BhY2UuCisJaWYgKCtjID09PSAwICYmIGMgIT09ICIwIikgcmV0dXJuIGZhbHNlOwor
CXJldHVybiB0OworICAgIH0KK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKG5vdCkpKQorKi8KK2Z1bmN0aW9u
IHNjX25vdChiKSB7CisgICAgcmV0dXJuIGIgPT09IGZhbHNlOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzQm9v
bGVhbihiKSB7CisgICAgcmV0dXJuIChiID09PSB0cnVlKSB8fCAoYiA9PT0gZmFsc2UpOworfQor
CitmdW5jdGlvbiBzY19QYWlyKGNhciwgY2RyKSB7CisgICAgdGhpcy5jYXIgPSBjYXI7CisgICAg
dGhpcy5jZHIgPSBjZHI7Cit9CisKK3NjX1BhaXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIHNjX3RvRGlzcGxheVN0cmluZyh0aGlzKTsKK307CitzY19QYWly
LnByb3RvdHlwZS5zY190b1dyaXRlT3JEaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24od3JpdGVPckRp
c3BsYXkpIHsKKyAgICB2YXIgY3VycmVudCA9IHRoaXM7CisKKyAgICB2YXIgcmVzID0gIigiOwor
CisgICAgd2hpbGUodHJ1ZSkgeworCXJlcyArPSB3cml0ZU9yRGlzcGxheShjdXJyZW50LmNhcik7
CisJaWYgKHNjX2lzUGFpcihjdXJyZW50LmNkcikpIHsKKwkgICAgcmVzICs9ICIgIjsKKwkgICAg
Y3VycmVudCA9IGN1cnJlbnQuY2RyOworCX0gZWxzZSBpZiAoY3VycmVudC5jZHIgIT09IG51bGwp
IHsKKwkgICAgcmVzICs9ICIgLiAiICsgd3JpdGVPckRpc3BsYXkoY3VycmVudC5jZHIpOworCSAg
ICBicmVhazsKKwl9IGVsc2UgLy8gY3VycmVudC5jZHIgPT0gbnVsbAorCSAgICBicmVhazsKKyAg
ICB9CisJCisgICAgcmVzICs9ICIpIjsKKworICAgIHJldHVybiByZXM7Cit9Oworc2NfUGFpci5w
cm90b3R5cGUuc2NfdG9EaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRo
aXMuc2NfdG9Xcml0ZU9yRGlzcGxheVN0cmluZyhzY190b0Rpc3BsYXlTdHJpbmcpOworfTsKK3Nj
X1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gdGhpcy5zY190b1dyaXRlT3JEaXNwbGF5U3RyaW5nKHNjX3RvV3JpdGVTdHJpbmcpOworfTsK
Ky8vIHNjX1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcgaW4gSU8uanMKKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAg
ICAocGVlcGhvbGUgKHBvc3RmaXggIiBpbnN0YW5jZW9mIHNjX1BhaXIiKSkpCisqLworZnVuY3Rp
b24gc2NfaXNQYWlyKHApIHsKKyAgICByZXR1cm4gKHAgaW5zdGFuY2VvZiBzY19QYWlyKTsKK30K
KworZnVuY3Rpb24gc2NfaXNQYWlyRXF1YWwocDEsIHAyLCBjb21wKSB7CisgICAgcmV0dXJuIChj
b21wKHAxLmNhciwgcDIuY2FyKSAmJiBjb21wKHAxLmNkciwgcDIuY2RyKSk7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgIm5ldyBzY19Q
YWlyKCIgY2FyICIsICIgY2RyICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NvbnMoY2FyLCBjZHIp
IHsKKyAgICByZXR1cm4gbmV3IHNjX1BhaXIoY2FyLCBjZHIpOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgY29ucyopKSAqLworZnVuY3Rpb24gc2NfY29uc1N0YXIoKSB7CisgICAgdmFyIHJlcyA9
IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgZm9yICh2YXIgaSA9IGFyZ3Vt
ZW50cy5sZW5ndGgtMjsgaSA+PSAwOyBpLS0pCisJcmVzID0gbmV3IHNjX1BhaXIoYXJndW1lbnRz
W2ldLCByZXMpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNj
X2NhcihwKSB7CisgICAgcmV0dXJuIHAuY2FyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkciIpKSkKKyovCitmdW5jdGlvbiBz
Y19jZHIocCkgeworICAgIHJldHVybiBwLmNkcjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBwICIuY2FyID0gIiB2YWwpKSkKKyovCitm
dW5jdGlvbiBzY19zZXRDYXJCYW5nKHAsIHZhbCkgeworICAgIHAuY2FyID0gdmFsOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHAgIi5j
ZHIgPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNjX3NldENkckJhbmcocCwgdmFsKSB7CisgICAg
cC5jZHIgPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChwb3N0Zml4ICIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWFyKHApIHsg
cmV0dXJuIHAuY2FyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhZHIocCkg
eyByZXR1cm4gcC5jZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2Rhcihw
KSB7IHJldHVybiBwLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGRy
KHApIHsgcmV0dXJuIHAuY2RyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBz
Y19jYWFhcihwKSB7IHJldHVybiBwLmNhci5jYXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2FyIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2NhZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNkci5jYXI7IH0KKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5j
YXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FhZHIocCkgeyByZXR1cm4gcC5jZHIuY2FyLmNhcjsg
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
Ii5jZHIuY2RyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWRkcihwKSB7IHJldHVybiBwLmNk
ci5jZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiLmNhci5jYXIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkYWFyKHApIHsg
cmV0dXJuIHAuY2FyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2Nf
Y2RhZHIocCkgeyByZXR1cm4gcC5jZHIuY2FyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0
KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2RyLmNkciIpKSkKKyovCitm
dW5jdGlvbiBzY19jZGRhcihwKSB7IHJldHVybiBwLmNhci5jZHIuY2RyOyB9CisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIuY2Ry
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5jZHI7IH0K
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIu
Y2FyLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYWFhcihwKSB7IHJldHVybiBw
LmNhci5jYXIuY2FyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2RyLmNhci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2Nf
Y2FhZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNkci5jYXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jYXIuY2FyLmNhciIp
KSkKKyovCitmdW5jdGlvbiBzY19jYWFhZHIocCkgeyByZXR1cm4gcC5jZHIuY2FyLmNhci5jYXI7
IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4
ICIuY2RyLmNkci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYWRkcihwKSB7IHJldHVy
biBwLmNkci5jZHIuY2FyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2FyLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24g
c2NfY2RhYWFyKHApIHsgcmV0dXJuIHAuY2FyLmNhci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2FyLmNk
ciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNhci5j
ZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0
Zml4ICIuY2RyLmNhci5jYXIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkYWFkcihwKSB7IHJl
dHVybiBwLmNkci5jYXIuY2FyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2RyLmNhci5jZHIiKSkpCisqLworZnVuY3Rp
b24gc2NfY2RhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5jYXIuY2RyOyB9CisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jYXIuY2Ry
LmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWRhYXIocCkgeyByZXR1cm4gcC5jYXIuY2FyLmNk
ci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChw
b3N0Zml4ICIuY2FyLmNkci5jZHIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhZGRhcihwKSB7
IHJldHVybiBwLmNhci5jZHIuY2RyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2FyLmNkci5jYXIiKSkpCisqLworZnVu
Y3Rpb24gc2NfY2FkYWRyKHApIHsgcmV0dXJuIHAuY2RyLmNhci5jZHIuY2FyOyB9CisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIu
Y2RyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWRkZHIocCkgeyByZXR1cm4gcC5jZHIuY2Ry
LmNkci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChwb3N0Zml4ICIuY2FyLmNhci5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZGFhcihw
KSB7IHJldHVybiBwLmNhci5jYXIuY2RyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2RyLmNkci5jZHIiKSkpCisqLwor
ZnVuY3Rpb24gc2NfY2RkZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNkci5jZHIuY2RyOyB9CisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5j
YXIuY2RyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGRhZHIocCkgeyByZXR1cm4gcC5jZHIu
Y2FyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZGRk
cihwKSB7IHJldHVybiBwLmNkci5jZHIuY2RyLmNkcjsgfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2NfbGFzdFBhaXIobCkgeworICAgIGlmICghc2NfaXNQYWlyKGwp
KSBzY19lcnJvcigic2NfbGFzdFBhaXI6IHBhaXIgZXhwZWN0ZWQiKTsKKyAgICB2YXIgcmVzID0g
bDsKKyAgICB2YXIgY2RyID0gbC5jZHI7CisgICAgd2hpbGUgKHNjX2lzUGFpcihjZHIpKSB7CisJ
cmVzID0gY2RyOworCWNkciA9IHJlcy5jZHI7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIgPT09IG51bGwiKSkpCisqLworZnVuY3Rpb24gc2NfaXNO
dWxsKG8pIHsKKyAgICByZXR1cm4gKG8gPT09IG51bGwpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzTGlzdChv
KSB7CisgICAgdmFyIHJhYmJpdDsKKyAgICB2YXIgdHVydGxlOworCisgICAgdmFyIHJhYmJpdCA9
IG87CisgICAgdmFyIHR1cnRsZSA9IG87CisgICAgd2hpbGUgKHRydWUpIHsKKwlpZiAocmFiYml0
ID09PSBudWxsIHx8CisJICAgIChyYWJiaXQgaW5zdGFuY2VvZiBzY19QYWlyICYmIHJhYmJpdC5j
ZHIgPT09IG51bGwpKQorCSAgICByZXR1cm4gdHJ1ZTsgIC8vIGVuZCBvZiBsaXN0CisJZWxzZSBp
ZiAoKHJhYmJpdCBpbnN0YW5jZW9mIHNjX1BhaXIpICYmCisJCSAocmFiYml0LmNkciBpbnN0YW5j
ZW9mIHNjX1BhaXIpKSB7CisJICAgIHJhYmJpdCA9IHJhYmJpdC5jZHIuY2RyOworCSAgICB0dXJ0
bGUgPSB0dXJ0bGUuY2RyOworCSAgICBpZiAocmFiYml0ID09PSB0dXJ0bGUpIHJldHVybiBmYWxz
ZTsgLy8gY3ljbGUKKwl9IGVsc2UKKwkgICAgcmV0dXJuIGZhbHNlOyAvLyBub3QgcGFpcgorICAg
IH0KK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xpc3QoKSB7
CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAgdmFyIGEgPSBhcmd1bWVudHM7CisgICAgZm9yICh2
YXIgaSA9IGEubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKQorCXJlcyA9IG5ldyBzY19QYWlyKGFbaV0s
IHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2lvdGEobnVtLCBpbml0KSB7CisgICB2YXIgcmVzID0gbnVsbDsKKyAgIGlm
ICghaW5pdCkgaW5pdCA9IDA7CisgICBmb3IgKHZhciBpID0gbnVtIC0gMTsgaSA+PSAwOyBpLS0p
CisgICAgICByZXMgPSBuZXcgc2NfUGFpcihpICsgaW5pdCwgcmVzKTsKKyAgIHJldHVybiByZXM7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tYWtlTGlzdChu
YkVscywgZmlsbCkgeworICAgIHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbmJFbHM7IGkrKykKKwlyZXMgPSBuZXcgc2NfUGFpcihmaWxsLCByZXMpOworICAgIHJldHVy
biByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19sZW5n
dGgobCkgeworICAgIHZhciByZXMgPSAwOworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJcmVz
Kys7CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVtcShvLCBsKSB7CisgICAgdmFyIGR1bW15
ID0geyBjZHIgOiBudWxsIH07CisgICAgdmFyIHRhaWwgPSBkdW1teTsKKyAgICB3aGlsZSAobCAh
PT0gbnVsbCkgeworCWlmIChsLmNhciAhPT0gbykgeworCSAgICB0YWlsLmNkciA9IHNjX2NvbnMo
bC5jYXIsIG51bGwpOworCSAgICB0YWlsID0gdGFpbC5jZHI7CisJfQorCWwgPSBsLmNkcjsKKyAg
ICB9CisgICAgcmV0dXJuIGR1bW15LmNkcjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX3JlbXFCYW5nKG8sIGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6
IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15OworICAgIHZhciBuZWVkc0Fzc2lnID0gdHJ1
ZTsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWlmIChsLmNhciA9PT0gbykgeworCSAgICBu
ZWVkc0Fzc2lnID0gdHJ1ZTsKKwl9IGVsc2UgeworCSAgICBpZiAobmVlZHNBc3NpZykgeworCQl0
YWlsLmNkciA9IGw7CisJCW5lZWRzQXNzaWcgPSBmYWxzZTsKKwkgICAgfQorCSAgICB0YWlsID0g
bDsKKwl9CisJbCA9IGwuY2RyOworICAgIH0KKyAgICB0YWlsLmNkciA9IG51bGw7CisgICAgcmV0
dXJuIGR1bW15LmNkcjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX2RlbGV0ZShvLCBsKSB7CisgICAgdmFyIGR1bW15ID0geyBjZHIgOiBudWxsIH07CisgICAg
dmFyIHRhaWwgPSBkdW1teTsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWlmICghc2NfaXNF
cXVhbChsLmNhciwgbykpIHsKKwkgICAgdGFpbC5jZHIgPSBzY19jb25zKGwuY2FyLCBudWxsKTsK
KwkgICAgdGFpbCA9IHRhaWwuY2RyOworCX0KKwlsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVy
biBkdW1teS5jZHI7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19kZWxldGVCYW5nKG8sIGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAg
ICB2YXIgdGFpbCA9IGR1bW15OworICAgIHZhciBuZWVkc0Fzc2lnID0gdHJ1ZTsKKyAgICB3aGls
ZSAobCAhPT0gbnVsbCkgeworCWlmIChzY19pc0VxdWFsKGwuY2FyLCBvKSkgeworCSAgICBuZWVk
c0Fzc2lnID0gdHJ1ZTsKKwl9IGVsc2UgeworCSAgICBpZiAobmVlZHNBc3NpZykgeworCQl0YWls
LmNkciA9IGw7CisJCW5lZWRzQXNzaWcgPSBmYWxzZTsKKwkgICAgfQorCSAgICB0YWlsID0gbDsK
Kwl9CisJbCA9IGwuY2RyOworICAgIH0KKyAgICB0YWlsLmNkciA9IG51bGw7CisgICAgcmV0dXJu
IGR1bW15LmNkcjsKK30KKworZnVuY3Rpb24gc2NfcmV2ZXJzZUFwcGVuZEJhbmcobDEsIGwyKSB7
CisgICAgdmFyIHJlcyA9IGwyOworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCXZhciB0bXAg
PSByZXM7CisJcmVzID0gbDE7CisJbDEgPSBsMS5jZHI7CisJcmVzLmNkciA9IHRtcDsKKyAgICB9
CisgICAgcmV0dXJuIHJlczsKK30KKwkKK2Z1bmN0aW9uIHNjX2R1YWxBcHBlbmQobDEsIGwyKSB7
CisgICAgaWYgKGwxID09PSBudWxsKSByZXR1cm4gbDI7CisgICAgaWYgKGwyID09PSBudWxsKSBy
ZXR1cm4gbDE7CisgICAgdmFyIHJldiA9IHNjX3JldmVyc2UobDEpOworICAgIHJldHVybiBzY19y
ZXZlcnNlQXBwZW5kQmFuZyhyZXYsIGwyKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX2FwcGVuZCgpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0g
MCkKKwlyZXR1cm4gbnVsbDsKKyAgICB2YXIgcmVzID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5n
dGggLSAxXTsKKyAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkgPj0gMDsg
aS0tKQorCXJlcyA9IHNjX2R1YWxBcHBlbmQoYXJndW1lbnRzW2ldLCByZXMpOworICAgIHJldHVy
biByZXM7Cit9CisKK2Z1bmN0aW9uIHNjX2R1YWxBcHBlbmRCYW5nKGwxLCBsMikgeworICAgIGlm
IChsMSA9PT0gbnVsbCkgcmV0dXJuIGwyOworICAgIGlmIChsMiA9PT0gbnVsbCkgcmV0dXJuIGwx
OworICAgIHZhciB0bXAgPSBsMTsKKyAgICB3aGlsZSAodG1wLmNkciAhPT0gbnVsbCkgdG1wPXRt
cC5jZHI7CisgICAgdG1wLmNkciA9IGwyOworICAgIHJldHVybiBsMTsKK30KKyAgICAKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19hcHBlbmRCYW5nKCkgeworICAgIHZh
ciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKQorCXJlcyA9IHNjX2R1YWxBcHBlbmRCYW5nKHJlcywgYXJndW1lbnRzW2ldKTsKKyAgICBy
ZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
cmV2ZXJzZShsMSkgeworICAgIHZhciByZXMgPSBudWxsOworICAgIHdoaWxlIChsMSAhPT0gbnVs
bCkgeworCXJlcyA9IHNjX2NvbnMobDEuY2FyLCByZXMpOworCWwxID0gbDEuY2RyOworICAgIH0K
KyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2NfcmV2ZXJzZUJhbmcobCkgeworICAgIHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhs
LCBudWxsKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xp
c3RUYWlsKGwsIGspIHsKKyAgICB2YXIgcmVzID0gbDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGs7IGkrKykgeworCXJlcyA9IHJlcy5jZHI7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19saXN0UmVmKGwsIGspIHsK
KyAgICByZXR1cm4gc2NfbGlzdFRhaWwobCwgaykuY2FyOworfQorCisvKiAvLyB1bm9wdGltaXpl
ZCBnZW5lcmljIHZlcnNpb25zCitmdW5jdGlvbiBzY19tZW1YKG8sIGwsIGNvbXApIHsKKyAgICB3
aGlsZSAobCAhPSBudWxsKSB7CisJaWYgKGNvbXAobC5jYXIsIG8pKQorCSAgICByZXR1cm4gbDsK
KwlsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KK2Z1bmN0aW9uIHNjX21l
bXEobywgbCkgeyByZXR1cm4gc2NfbWVtWChvLCBsLCBzY19pc0VxKTsgfQorZnVuY3Rpb24gc2Nf
bWVtdihvLCBsKSB7IHJldHVybiBzY19tZW1YKG8sIGwsIHNjX2lzRXF2KTsgfQorZnVuY3Rpb24g
c2NfbWVtYmVyKG8sIGwpIHsgcmV0dXJuIHNjX21lbVgobywgbCwgc2NfaXNFcXVhbCk7IH0KKyov
CisKKy8qIG9wdGltaXplZCB2ZXJzaW9ucyAqLworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX21lbXEobywgbCkgeworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYg
KGwuY2FyID09PSBvKQorCSAgICByZXR1cm4gbDsKKwlsID0gbC5jZHI7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19t
ZW12KG8sIGwpIHsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWlmIChsLmNhciA9PT0gbykK
KwkgICAgcmV0dXJuIGw7CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWVtYmVyKG8sIGwpIHsK
KyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWlmIChzY19pc0VxdWFsKGwuY2FyLG8pKQorCSAg
ICByZXR1cm4gbDsKKwlsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
LyogLy8gZ2VuZXJpYyB1bm9wdGltaXplZCB2ZXJzaW9ucworZnVuY3Rpb24gc2NfYXNzWChvLCBh
bCwgY29tcCkgeworICAgIHdoaWxlIChhbCAhPSBudWxsKSB7CisJaWYgKGNvbXAoYWwuY2FyLmNh
ciwgbykpCisJICAgIHJldHVybiBhbC5jYXI7CisJYWwgPSBhbC5jZHI7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KK2Z1bmN0aW9uIHNjX2Fzc3EobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1go
bywgYWwsIHNjX2lzRXEpOyB9CitmdW5jdGlvbiBzY19hc3N2KG8sIGFsKSB7IHJldHVybiBzY19h
c3NYKG8sIGFsLCBzY19pc0Vxdik7IH0KK2Z1bmN0aW9uIHNjX2Fzc29jKG8sIGFsKSB7IHJldHVy
biBzY19hc3NYKG8sIGFsLCBzY19pc0VxdWFsKTsgfQorKi8KKy8vIG9wdGltaXplZCB2ZXJzaW9u
cworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Fzc3EobywgYWwpIHsK
KyAgICB3aGlsZSAoYWwgIT09IG51bGwpIHsKKwlpZiAoYWwuY2FyLmNhciA9PT0gbykKKwkgICAg
cmV0dXJuIGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Fzc3YobywgYWwpIHsK
KyAgICB3aGlsZSAoYWwgIT09IG51bGwpIHsKKwlpZiAoYWwuY2FyLmNhciA9PT0gbykKKwkgICAg
cmV0dXJuIGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Fzc29jKG8sIGFsKSB7
CisgICAgd2hpbGUgKGFsICE9PSBudWxsKSB7CisJaWYgKHNjX2lzRXF1YWwoYWwuY2FyLmNhciwg
bykpCisJICAgIHJldHVybiBhbC5jYXI7CisJYWwgPSBhbC5jZHI7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworLyogY2FuIGJlIHVzZWQgZm9yIG11dGFibGUgc3RyaW5ncyBhbmQgY2hh
cmFjdGVycyAqLworZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nRXF1YWwoY3MxLCBjczIpIHsgcmV0
dXJuIGNzMS52YWwgPT09IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0xlc3Mo
Y3MxLCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPCBjczIudmFsOyB9CitmdW5jdGlvbiBzY19pc0No
YXJTdHJpbmdHcmVhdGVyKGNzMSwgY3MyKSB7IHJldHVybiBjczEudmFsID4gY3MyLnZhbDsgfQor
ZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nTGVzc0VxdWFsKGNzMSwgY3MyKSB7IHJldHVybiBjczEu
dmFsIDw9IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0dyZWF0ZXJFcXVhbChj
czEsIGNzMikgeyByZXR1cm4gY3MxLnZhbCA+PSBjczIudmFsOyB9CitmdW5jdGlvbiBzY19pc0No
YXJTdHJpbmdDSUVxdWFsKGNzMSwgY3MyKQorICAgIHsgcmV0dXJuIGNzMS52YWwudG9Mb3dlckNh
c2UoKSA9PT0gY3MyLnZhbC50b0xvd2VyQ2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJp
bmdDSUxlc3MoY3MxLCBjczIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpIDwg
Y3MyLnZhbC50b0xvd2VyQ2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUdyZWF0
ZXIoY3MxLCBjczIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpID4gY3MyLnZh
bC50b0xvd2VyQ2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUxlc3NFcXVhbChj
czEsIGNzMikKKyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPD0gY3MyLnZhbC50
b0xvd2VyQ2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUdyZWF0ZXJFcXVhbChj
czEsIGNzMikKKyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPj0gY3MyLnZhbC50
b0xvd2VyQ2FzZSgpOyB9CisKKworCisKK2Z1bmN0aW9uIHNjX0NoYXIoYykgeworICAgIHZhciBj
YWNoZWQgPSBzY19DaGFyLmxhenlbY107CisgICAgaWYgKGNhY2hlZCkKKwlyZXR1cm4gY2FjaGVk
OworICAgIHRoaXMudmFsID0gYzsKKyAgICBzY19DaGFyLmxhenlbY10gPSB0aGlzOworICAgIC8v
IGFkZCByZXR1cm4sIHNvIEZGIGRvZXMgbm90IGNvbXBsYWluLgorICAgIHJldHVybiB1bmRlZmlu
ZWQ7Cit9CitzY19DaGFyLmxhenkgPSBuZXcgT2JqZWN0KCk7CisvLyB0aGFua3MgdG8gRXJpYwor
c2NfQ2hhci5jaGFyMnJlYWRhYmxlID0geworICAgICJcMDAwIjogIiNcXG51bGwiLAorICAgICJc
MDA3IjogIiNcXGJlbGwiLAorICAgICJcMDEwIjogIiNcXGJhY2tzcGFjZSIsCisgICAgIlwwMTEi
OiAiI1xcdGFiIiwKKyAgICAiXDAxMiI6ICIjXFxuZXdsaW5lIiwKKyAgICAiXDAxNCI6ICIjXFxw
YWdlIiwKKyAgICAiXDAxNSI6ICIjXFxyZXR1cm4iLAorICAgICJcMDMzIjogIiNcXGVzY2FwZSIs
CisgICAgIlwwNDAiOiAiI1xcc3BhY2UiLAorICAgICJcMTc3IjogIiNcXGRlbGV0ZSIsCisKKyAg
LyogcG9ldGljbGVzcyBuYW1lcyAqLworICAgICJcMDAxIjogIiNcXHNvaCIsCisgICAgIlwwMDIi
OiAiI1xcc3R4IiwKKyAgICAiXDAwMyI6ICIjXFxldHgiLAorICAgICJcMDA0IjogIiNcXGVvdCIs
CisgICAgIlwwMDUiOiAiI1xcZW5xIiwKKyAgICAiXDAwNiI6ICIjXFxhY2siLAorCisgICAgIlww
MTMiOiAiI1xcdnQiLAorICAgICJcMDE2IjogIiNcXHNvIiwKKyAgICAiXDAxNyI6ICIjXFxzaSIs
CisKKyAgICAiXDAyMCI6ICIjXFxkbGUiLAorICAgICJcMDIxIjogIiNcXGRjMSIsCisgICAgIlww
MjIiOiAiI1xcZGMyIiwKKyAgICAiXDAyMyI6ICIjXFxkYzMiLAorICAgICJcMDI0IjogIiNcXGRj
NCIsCisgICAgIlwwMjUiOiAiI1xcbmFrIiwKKyAgICAiXDAyNiI6ICIjXFxzeW4iLAorICAgICJc
MDI3IjogIiNcXGV0YiIsCisKKyAgICAiXDAzMCI6ICIjXFxjYW4iLAorICAgICJcMDMxIjogIiNc
XGVtIiwKKyAgICAiXDAzMiI6ICIjXFxzdWIiLAorICAgICJcMDMzIjogIiNcXGVzYyIsCisgICAg
IlwwMzQiOiAiI1xcZnMiLAorICAgICJcMDM1IjogIiNcXGdzIiwKKyAgICAiXDAzNiI6ICIjXFxy
cyIsCisgICAgIlwwMzciOiAiI1xcdXMifTsKKworc2NfQ2hhci5yZWFkYWJsZTJjaGFyID0gewor
ICAgICJudWxsIjogIlwwMDAiLAorICAgICJiZWxsIjogIlwwMDciLAorICAgICJiYWNrc3BhY2Ui
OiAiXDAxMCIsCisgICAgInRhYiI6ICJcMDExIiwKKyAgICAibmV3bGluZSI6ICJcMDEyIiwKKyAg
ICAicGFnZSI6ICJcMDE0IiwKKyAgICAicmV0dXJuIjogIlwwMTUiLAorICAgICJlc2NhcGUiOiAi
XDAzMyIsCisgICAgInNwYWNlIjogIlwwNDAiLAorICAgICJkZWxldGUiOiAiXDAwMCIsCisgICAg
InNvaCI6ICJcMDAxIiwKKyAgICAic3R4IjogIlwwMDIiLAorICAgICJldHgiOiAiXDAwMyIsCisg
ICAgImVvdCI6ICJcMDA0IiwKKyAgICAiZW5xIjogIlwwMDUiLAorICAgICJhY2siOiAiXDAwNiIs
CisgICAgImJlbCI6ICJcMDA3IiwKKyAgICAiYnMiOiAiXDAxMCIsCisgICAgImh0IjogIlwwMTEi
LAorICAgICJubCI6ICJcMDEyIiwKKyAgICAidnQiOiAiXDAxMyIsCisgICAgIm5wIjogIlwwMTQi
LAorICAgICJjciI6ICJcMDE1IiwKKyAgICAic28iOiAiXDAxNiIsCisgICAgInNpIjogIlwwMTci
LAorICAgICJkbGUiOiAiXDAyMCIsCisgICAgImRjMSI6ICJcMDIxIiwKKyAgICAiZGMyIjogIlww
MjIiLAorICAgICJkYzMiOiAiXDAyMyIsCisgICAgImRjNCI6ICJcMDI0IiwKKyAgICAibmFrIjog
IlwwMjUiLAorICAgICJzeW4iOiAiXDAyNiIsCisgICAgImV0YiI6ICJcMDI3IiwKKyAgICAiY2Fu
IjogIlwwMzAiLAorICAgICJlbSI6ICJcMDMxIiwKKyAgICAic3ViIjogIlwwMzIiLAorICAgICJl
c2MiOiAiXDAzMyIsCisgICAgImZzIjogIlwwMzQiLAorICAgICJncyI6ICJcMDM1IiwKKyAgICAi
cnMiOiAiXDAzNiIsCisgICAgInVzIjogIlwwMzciLAorICAgICJzcCI6ICJcMDQwIiwKKyAgICAi
ZGVsIjogIlwxNzcifTsKKyAgICAKK3NjX0NoYXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIHRoaXMudmFsOworfTsKKy8vIHNjX3RvRGlzcGxheVN0cmluZyA9
PSB0b1N0cmluZworc2NfQ2hhci5wcm90b3R5cGUuc2NfdG9Xcml0ZVN0cmluZyA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBlbnRyeSA9IHNjX0NoYXIuY2hhcjJyZWFkYWJsZVt0aGlzLnZhbF07Cisg
ICAgaWYgKGVudHJ5KQorCXJldHVybiBlbnRyeTsKKyAgICBlbHNlCisJcmV0dXJuICIjXFwiICsg
dGhpcy52YWw7Cit9OworCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBl
IGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiaW5zdGFuY2VvZiBzY19DaGFy
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzQ2hhcihjKSB7CisgICAgcmV0dXJuIChjIGluc3RhbmNl
b2Ygc2NfQ2hhcik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyPT8pCisgICAgICAgICAg
ICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIGMxICIudmFsID09PSAi
IGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJFcXVhbCA9IHNjX2lzQ2hhclN0cmluZ0Vx
dWFsOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI8PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPCAiIGMyICIudmFsIikpKQor
Ki8KK3ZhciBzY19pc0NoYXJMZXNzID0gc2NfaXNDaGFyU3RyaW5nTGVzczsKKy8qKiogTUVUQSAo
KGV4cG9ydCBjaGFyPj8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaG9sZSAyIGMxICIudmFsID4gIiBjMiAiLnZhbCIpKSkKKyovCit2YXIgc2NfaXNDaGFy
R3JlYXRlciA9IHNjX2lzQ2hhclN0cmluZ0dyZWF0ZXI7CisvKioqIE1FVEEgKChleHBvcnQgY2hh
cjw9PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xl
IDIgYzEgIi52YWwgPD0gIiBjMiAiLnZhbCIpKSkKKyovCit2YXIgc2NfaXNDaGFyTGVzc0VxdWFs
ID0gc2NfaXNDaGFyU3RyaW5nTGVzc0VxdWFsOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI+PT8p
CisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIGMx
ICIudmFsID49ICIgYzIgIi52YWwiKSkpCisqLwordmFyIHNjX2lzQ2hhckdyZWF0ZXJFcXVhbCA9
IHNjX2lzQ2hhclN0cmluZ0dyZWF0ZXJFcXVhbDsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNp
PT8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAy
IGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPT09ICIgYzIgIi52YWwudG9Mb3dlckNhc2UoKSIpKSkK
KyovCit2YXIgc2NfaXNDaGFyQ0lFcXVhbCA9IHNjX2lzQ2hhclN0cmluZ0NJRXF1YWw7CisvKioq
IE1FVEEgKChleHBvcnQgY2hhci1jaTw/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAg
ICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50b0xvd2VyQ2FzZSgpIDwgIiBjMiAiLnZh
bC50b0xvd2VyQ2FzZSgpIikpKQorKi8KK3ZhciBzY19pc0NoYXJDSUxlc3MgPSBzY19pc0NoYXJT
dHJpbmdDSUxlc3M7CisvKioqIE1FVEEgKChleHBvcnQgY2hhci1jaT4/KQorICAgICAgICAgICAo
dHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50b0xvd2Vy
Q2FzZSgpID4gIiBjMiAiLnZhbC50b0xvd2VyQ2FzZSgpIikpKQorKi8KK3ZhciBzY19pc0NoYXJD
SUdyZWF0ZXIgPSBzY19pc0NoYXJTdHJpbmdDSUdyZWF0ZXI7CisvKioqIE1FVEEgKChleHBvcnQg
Y2hhci1jaTw9PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChob2xlIDIgYzEgIi52YWwudG9Mb3dlckNhc2UoKSA8PSAiIGMyICIudmFsLnRvTG93ZXJDYXNl
KCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJTGVzc0VxdWFsID0gc2NfaXNDaGFyU3RyaW5nQ0lM
ZXNzRXF1YWw7CisvKioqIE1FVEEgKChleHBvcnQgY2hhci1jaT49PykKKyAgICAgICAgICAgKHR5
cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwudG9Mb3dlckNh
c2UoKSA+PSAiIGMyICIudmFsLnRvTG93ZXJDYXNlKCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJ
R3JlYXRlckVxdWFsID0gc2NfaXNDaGFyU3RyaW5nQ0lHcmVhdGVyRXF1YWw7CisKK3ZhciBTQ19O
VU1CRVJfQ0xBU1MgPSAiMDEyMzQ1Njc4OSI7Cit2YXIgU0NfV0hJVEVTUEFDRV9DTEFTUyA9ICcg
XHJcblx0XGYnOwordmFyIFNDX0xPV0VSX0NMQVNTID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6JzsKK3ZhciBTQ19VUFBFUl9DTEFTUyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7
CisKK2Z1bmN0aW9uIHNjX2lzQ2hhck9mQ2xhc3MoYywgY2wpIHsgcmV0dXJuIChjbC5pbmRleE9m
KGMpICE9IC0xKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBi
b29sKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJBbHBoYWJldGljKGMpCisgICAgeyByZXR1cm4g
c2NfaXNDaGFyT2ZDbGFzcyhjLnZhbCwgU0NfTE9XRVJfQ0xBU1MpIHx8CisJICBzY19pc0NoYXJP
ZkNsYXNzKGMudmFsLCBTQ19VUFBFUl9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIlND
X05VTUJFUl9DTEFTUy5pbmRleE9mKCIgYyAiLnZhbCkgIT0gLTEiKSkpCisqLworZnVuY3Rpb24g
c2NfaXNDaGFyTnVtZXJpYyhjKQorICAgIHsgcmV0dXJuIHNjX2lzQ2hhck9mQ2xhc3MoYy52YWws
IFNDX05VTUJFUl9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNDaGFyV2hpdGVzcGFjZShjKSB7CisgICAg
dmFyIHRtcCA9IGMudmFsOworICAgIHJldHVybiB0bXAgPT09ICIgIiB8fCB0bXAgPT09ICJcciIg
fHwgdG1wID09PSAiXG4iIHx8IHRtcCA9PT0gIlx0IiB8fCB0bXAgPT09ICJcZiI7Cit9CisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChw
ZWVwaG9sZSAoaG9sZSAxICJTQ19VUFBFUl9DTEFTUy5pbmRleE9mKCIgYyAiLnZhbCkgIT0gLTEi
KSkpCisqLworZnVuY3Rpb24gc2NfaXNDaGFyVXBwZXJDYXNlKGMpCisgICAgeyByZXR1cm4gc2Nf
aXNDaGFyT2ZDbGFzcyhjLnZhbCwgU0NfVVBQRVJfQ0xBU1MpOyB9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9s
ZSAxICJTQ19MT1dFUl9DTEFTUy5pbmRleE9mKCIgYyAiLnZhbCkgIT0gLTEiKSkpCisqLworZnVu
Y3Rpb24gc2NfaXNDaGFyTG93ZXJDYXNlKGMpCisgICAgeyByZXR1cm4gc2NfaXNDaGFyT2ZDbGFz
cyhjLnZhbCwgU0NfTE9XRVJfQ0xBU1MpOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIudmFsLmNoYXJDb2RlQXQoMCkiKSkpCisqLwor
ZnVuY3Rpb24gc2NfY2hhcjJpbnRlZ2VyKGMpCisgICAgeyByZXR1cm4gYy52YWwuY2hhckNvZGVB
dCgwKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhv
bGUgMSAibmV3IHNjX0NoYXIoU3RyaW5nLmZyb21DaGFyQ29kZSgiIG4gIikpIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2ludGVnZXIyY2hhcihuKQorICAgIHsgcmV0dXJuIG5ldyBzY19DaGFyKFN0cmlu
Zy5mcm9tQ2hhckNvZGUobikpOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChob2xlIDEgIm5ldyBzY19DaGFyKCIgYyAiLnZhbC50b1VwcGVyQ2FzZSgp
KSIpKSkKKyovCitmdW5jdGlvbiBzY19jaGFyVXBjYXNlKGMpCisgICAgeyByZXR1cm4gbmV3IHNj
X0NoYXIoYy52YWwudG9VcHBlckNhc2UoKSk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIm5ldyBzY19DaGFyKCIgYyAiLnZhbC50b0xvd2Vy
Q2FzZSgpKSIpKSkKKyovCitmdW5jdGlvbiBzY19jaGFyRG93bmNhc2UoYykKKyAgICB7IHJldHVy
biBuZXcgc2NfQ2hhcihjLnZhbC50b0xvd2VyQ2FzZSgpKTsgfQorCitmdW5jdGlvbiBzY19tYWtl
SlNTdHJpbmdPZkxlbmd0aChrLCBjKSB7CisgICAgdmFyIGZpbGw7CisgICAgaWYgKGMgPT09IHVu
ZGVmaW5lZCkKKwlmaWxsID0gIiAiOworICAgIGVsc2UKKwlmaWxsID0gYzsKKyAgICB2YXIgcmVz
ID0gIiI7CisgICAgdmFyIGxlbiA9IDE7CisgICAgLy8gZXZlcnkgcm91bmQgZG91YmxlcyB0aGUg
c2l6ZSBvZiBmaWxsLgorICAgIHdoaWxlIChrID49IGxlbikgeworCWlmIChrICYgbGVuKQorCSAg
ICByZXMgPSByZXMuY29uY2F0KGZpbGwpOworCWZpbGwgPSBmaWxsLmNvbmNhdChmaWxsKTsKKwls
ZW4gKj0gMjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworZnVuY3Rpb24gc2NfbWFrZWpz
U3RyaW5nKGssIGMpIHsKKyAgICB2YXIgZmlsbDsKKyAgICBpZiAoYykKKwlmaWxsID0gYy52YWw7
CisgICAgZWxzZQorCWZpbGwgPSAiICI7CisgICAgcmV0dXJuIHNjX21ha2VKU1N0cmluZ09mTGVu
Z3RoKGssIGZpbGwpOworfQorCitmdW5jdGlvbiBzY19qc3N0cmluZzJsaXN0KHMpIHsKKyAgICB2
YXIgcmVzID0gbnVsbDsKKyAgICBmb3IgKHZhciBpID0gcy5sZW5ndGggLSAxOyBpID49IDA7IGkt
LSkKKwlyZXMgPSBzY19jb25zKG5ldyBzY19DaGFyKHMuY2hhckF0KGkpKSwgcmVzKTsKKyAgICBy
ZXR1cm4gcmVzOworfQorCitmdW5jdGlvbiBzY19saXN0Mmpzc3RyaW5nKGwpIHsKKyAgICB2YXIg
YSA9IG5ldyBBcnJheSgpOworICAgIHdoaWxlKGwgIT09IG51bGwpIHsKKwlhLnB1c2gobC5jYXIu
dmFsKTsKKwlsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiAiIi5jb25jYXQuYXBwbHkoIiIs
IGEpOworfQorCit2YXIgc2NfVmVjdG9yID0gQXJyYXk7CisKK3NjX1ZlY3Rvci5wcm90b3R5cGUu
c2NfdG9Xcml0ZU9yRGlzcGxheVN0cmluZyA9IGZ1bmN0aW9uKHdyaXRlT3JEaXNwbGF5KSB7Cisg
ICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gIiMoKSI7CisKKyAgICB2YXIgcmVzID0g
IiMoIiArIHdyaXRlT3JEaXNwbGF5KHRoaXNbMF0pOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
dGhpcy5sZW5ndGg7IGkrKykKKwlyZXMgKz0gIiAiICsgd3JpdGVPckRpc3BsYXkodGhpc1tpXSk7
CisgICAgcmVzICs9ICIpIjsKKyAgICByZXR1cm4gcmVzOworfTsKK3NjX1ZlY3Rvci5wcm90b3R5
cGUuc2NfdG9EaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuc2Nf
dG9Xcml0ZU9yRGlzcGxheVN0cmluZyhzY190b0Rpc3BsYXlTdHJpbmcpOworfTsKK3NjX1ZlY3Rv
ci5wcm90b3R5cGUuc2NfdG9Xcml0ZVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0
aGlzLnNjX3RvV3JpdGVPckRpc3BsYXlTdHJpbmcoc2NfdG9Xcml0ZVN0cmluZyk7Cit9OworCisv
KioqIE1FVEEgKChleHBvcnQgdmVjdG9yPyBhcnJheT8pCisgICAgICAgICAgICh0eXBlIGJvb2wp
CisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfVmVjdG9yIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2lzVmVjdG9yKHYpIHsKKyAgICByZXR1cm4gKHYgaW5zdGFuY2Vv
ZiBzY19WZWN0b3IpOworfQorCisvLyBvbmx5IGFwcGxpZXMgdG8gdmVjdG9ycworZnVuY3Rpb24g
c2NfaXNWZWN0b3JFcXVhbCh2MSwgdjIsIGNvbXApIHsKKyAgICBpZiAodjEubGVuZ3RoICE9PSB2
Mi5sZW5ndGgpIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHYxLmxlbmd0
aDsgaSsrKQorCWlmICghY29tcCh2MVtpXSwgdjJbaV0pKSByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBtYWtlLXZlY3RvciBtYWtlLWFycmF5
KSkgKi8KK2Z1bmN0aW9uIHNjX21ha2VWZWN0b3Ioc2l6ZSwgZmlsbCkgeworICAgIHZhciBhID0g
bmV3IHNjX1ZlY3RvcihzaXplKTsKKyAgICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKQorCXNjX3Zl
Y3RvckZpbGxCYW5nKGEsIGZpbGwpOworICAgIHJldHVybiBhOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgdmVjdG9yIGFycmF5KQorICAgICAgICAgICAocGVlcGhvbGUgKHZlY3RvcikpKQorKi8K
K2Z1bmN0aW9uIHNjX3ZlY3RvcigpIHsKKyAgICB2YXIgYSA9IG5ldyBzY19WZWN0b3IoKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlhLnB1c2goYXJn
dW1lbnRzW2ldKTsKKyAgICByZXR1cm4gYTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rv
ci1sZW5ndGggYXJyYXktbGVuZ3RoKQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5s
ZW5ndGgiKSkpCisqLworZnVuY3Rpb24gc2NfdmVjdG9yTGVuZ3RoKHYpIHsKKyAgICByZXR1cm4g
di5sZW5ndGg7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0b3ItcmVmIGFycmF5LXJlZikK
KyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgdiAiWyIgcG9zICJdIikpKQorKi8KK2Z1bmN0
aW9uIHNjX3ZlY3RvclJlZih2LCBwb3MpIHsKKyAgICByZXR1cm4gdltwb3NdOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgdmVjdG9yLXNldCEgYXJyYXktc2V0ISkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChob2xlIDMgdiAiWyIgcG9zICJdID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY192ZWN0
b3JTZXRCYW5nKHYsIHBvcywgdmFsKSB7CisgICAgdltwb3NdID0gdmFsOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgdmVjdG9yLT5saXN0IGFycmF5LT5saXN0KSkgKi8KK2Z1bmN0aW9uIHNjX3Zl
Y3RvcjJsaXN0KGEpIHsKKyAgICB2YXIgcmVzID0gbnVsbDsKKyAgICBmb3IgKHZhciBpID0gYS5s
ZW5ndGgtMTsgaSA+PSAwOyBpLS0pCisJcmVzID0gc2NfY29ucyhhW2ldLCByZXMpOworICAgIHJl
dHVybiByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBsaXN0LT52ZWN0b3IgbGlzdC0+YXJy
YXkpKSAqLworZnVuY3Rpb24gc2NfbGlzdDJ2ZWN0b3IobCkgeworICAgIHZhciBhID0gbmV3IHNj
X1ZlY3RvcigpOworICAgIHdoaWxlKGwgIT09IG51bGwpIHsKKwlhLnB1c2gobC5jYXIpOworCWwg
PSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGE7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2
ZWN0b3ItZmlsbCEgYXJyYXktZmlsbCEpKSAqLworZnVuY3Rpb24gc2NfdmVjdG9yRmlsbEJhbmco
YSwgZmlsbCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKwlhW2ld
ID0gZmlsbDsKK30KKworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
Y29weVZlY3RvcihhLCBsZW4pIHsKKyAgICBpZiAobGVuIDw9IGEubGVuZ3RoKQorCXJldHVybiBh
LnNsaWNlKDAsIGxlbik7CisgICAgZWxzZSB7CisJdmFyIHRtcCA9IGEuY29uY2F0KCk7CisJdG1w
Lmxlbmd0aCA9IGxlbjsKKwlyZXR1cm4gdG1wOworICAgIH0KK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMyBhICIuc2xpY2UoIiBzdGFydCAi
LCIgZW5kICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX3ZlY3RvckNvcHkoYSwgc3RhcnQsIGVuZCkg
eworICAgIHJldHVybiBhLnNsaWNlKHN0YXJ0LCBlbmQpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfdmVjdG9yQ29weUJhbmcodGFyZ2V0LCB0c3RhcnQsIHNv
dXJjZSwgc3N0YXJ0LCBzZW5kKSB7CisgICAgaWYgKCFzc3RhcnQpIHNzdGFydCA9IDA7CisgICAg
aWYgKCFzZW5kKSBzZW5kID0gc291cmNlLmxlbmd0aDsKKworICAgIC8vIGlmIHRhcmdldCA9PSBz
b3VyY2Ugd2UgZG9uJ3Qgd2FudCB0byBvdmVyd3JpdGUgbm90IHlldCBjb3BpZWQgZWxlbWVudHMu
CisgICAgaWYgKHRzdGFydCA8PSBzc3RhcnQpIHsKKwlmb3IgKHZhciBpID0gdHN0YXJ0LCBqID0g
c3N0YXJ0OyBqIDwgc2VuZDsgaSsrLCBqKyspIHsKKwkgICAgdGFyZ2V0W2ldID0gc291cmNlW2pd
OworCX0KKyAgICB9IGVsc2UgeworCXZhciBkaWZmID0gc2VuZCAtIHNzdGFydDsKKwlmb3IgKHZh
ciBpID0gdHN0YXJ0ICsgZGlmZiAtIDEsIGogPSBzZW5kIC0gMTsKKwkgICAgIGogPj0gc3N0YXJ0
OworCSAgICAgaS0tLCBqLS0pIHsKKwkgICAgdGFyZ2V0W2ldID0gc291cmNlW2pdOworCX0KKyAg
ICB9CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMSAidHlwZW9m
ICIgbyAiID09PSAnZnVuY3Rpb24nIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzUHJvY2VkdXJlKG8p
IHsKKyAgICByZXR1cm4gKHR5cGVvZiBvID09PSAiZnVuY3Rpb24iKTsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2FwcGx5KHByb2MpIHsKKyAgICB2YXIgYXJn
cyA9IG5ldyBBcnJheSgpOworICAgIC8vIGZpcnN0IHBhcnQgb2YgYXJndW1lbnRzIGFyZSBub3Qg
aW4gbGlzdC1mb3JtLgorICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAt
IDE7IGkrKykKKwlhcmdzLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgICB2YXIgbCA9IGFyZ3VtZW50
c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlhcmdz
LnB1c2gobC5jYXIpOworCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHByb2MuYXBwbHko
bnVsbCwgYXJncyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19tYXAocHJvYywgbDEpIHsKKyAgICBpZiAobDEgPT09IHVuZGVmaW5lZCkKKwlyZXR1cm4gbnVs
bDsKKyAgICAvLyBlbHNlCisgICAgdmFyIG5iQXBwbHlBcmdzID0gYXJndW1lbnRzLmxlbmd0aCAt
IDE7CisgICAgdmFyIGFwcGx5QXJncyA9IG5ldyBBcnJheShuYkFwcGx5QXJncyk7CisgICAgdmFy
IHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJZm9yICh2YXIgaSA9
IDA7IGkgPCBuYkFwcGx5QXJnczsgaSsrKSB7CisJICAgIGFwcGx5QXJnc1tpXSA9IGFyZ3VtZW50
c1tpICsgMV0uY2FyOworCSAgICBhcmd1bWVudHNbaSArIDFdID0gYXJndW1lbnRzW2kgKyAxXS5j
ZHI7CisJfQorCXJldnJlcyA9IHNjX2NvbnMocHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpLCBy
ZXZyZXMpOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2ZXJzZUFwcGVuZEJhbmcocmV2cmVzLCBu
dWxsKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21hcEJh
bmcocHJvYywgbDEpIHsKKyAgICBpZiAobDEgPT09IHVuZGVmaW5lZCkKKwlyZXR1cm4gbnVsbDsK
KyAgICAvLyBlbHNlCisgICAgdmFyIGwxX29yaWcgPSBsMTsKKyAgICB2YXIgbmJBcHBseUFyZ3Mg
PSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5KG5i
QXBwbHlBcmdzKTsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwl2YXIgdG1wID0gbDE7CisJ
Zm9yICh2YXIgaSA9IDA7IGkgPCBuYkFwcGx5QXJnczsgaSsrKSB7CisJICAgIGFwcGx5QXJnc1tp
XSA9IGFyZ3VtZW50c1tpICsgMV0uY2FyOworCSAgICBhcmd1bWVudHNbaSArIDFdID0gYXJndW1l
bnRzW2kgKyAxXS5jZHI7CisJfQorCXRtcC5jYXIgPSBwcm9jLmFwcGx5KG51bGwsIGFwcGx5QXJn
cyk7CisgICAgfQorICAgIHJldHVybiBsMV9vcmlnOworfQorICAgICAKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19mb3JFYWNoKHByb2MsIGwxKSB7CisgICAgaWYgKGwx
ID09PSB1bmRlZmluZWQpCisJcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAvLyBlbHNlCisgICAgdmFy
IG5iQXBwbHlBcmdzID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7CisgICAgdmFyIGFwcGx5QXJncyA9
IG5ldyBBcnJheShuYkFwcGx5QXJncyk7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJZm9y
ICh2YXIgaSA9IDA7IGkgPCBuYkFwcGx5QXJnczsgaSsrKSB7CisJICAgIGFwcGx5QXJnc1tpXSA9
IGFyZ3VtZW50c1tpICsgMV0uY2FyOworCSAgICBhcmd1bWVudHNbaSArIDFdID0gYXJndW1lbnRz
W2kgKyAxXS5jZHI7CisJfQorCXByb2MuYXBwbHkobnVsbCwgYXBwbHlBcmdzKTsKKyAgICB9Cisg
ICAgLy8gYWRkIHJldHVybiBzbyBGRiBkb2VzIG5vdCBjb21wbGFpbi4KKyAgICByZXR1cm4gdW5k
ZWZpbmVkOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZmls
dGVyKHByb2MsIGwxKSB7CisgICAgdmFyIGR1bW15ID0geyBjZHIgOiBudWxsIH07CisgICAgdmFy
IHRhaWwgPSBkdW1teTsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlpZiAocHJvYyhsMS5j
YXIpICE9PSBmYWxzZSkgeworCSAgICB0YWlsLmNkciA9IHNjX2NvbnMobDEuY2FyLCBudWxsKTsK
KwkgICAgdGFpbCA9IHRhaWwuY2RyOworCX0KKwlsMSA9IGwxLmNkcjsKKyAgICB9CisgICAgcmV0
dXJuIGR1bW15LmNkcjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX2ZpbHRlckJhbmcocHJvYywgbDEpIHsKKyAgICB2YXIgaGVhZCA9IHNjX2NvbnMoImR1bW15
IiwgbDEpOworICAgIHZhciBpdCA9IGhlYWQ7CisgICAgdmFyIG5leHQgPSBsMTsKKyAgICB3aGls
ZSAobmV4dCAhPT0gbnVsbCkgeworICAgICAgICBpZiAocHJvYyhuZXh0LmNhcikgIT09IGZhbHNl
KSB7CisJICAgIGl0LmNkciA9IG5leHQKKwkgICAgaXQgPSBuZXh0OworCX0KKwluZXh0ID0gbmV4
dC5jZHI7CisgICAgfQorICAgIGl0LmNkciA9IG51bGw7CisgICAgcmV0dXJuIGhlYWQuY2RyOwor
fQorCitmdW5jdGlvbiBzY19maWx0ZXJNYXAxKHByb2MsIGwxKSB7CisgICAgdmFyIHJldnJlcyA9
IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisgICAgICAgIHZhciB0bXAgPSBwcm9j
KGwxLmNhcikKKyAgICAgICAgaWYgKHRtcCAhPT0gZmFsc2UpIHJldnJlcyA9IHNjX2NvbnModG1w
LCByZXZyZXMpOworICAgICAgICBsMSA9IGwxLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHNjX3Jl
dmVyc2VBcHBlbmRCYW5nKHJldnJlcywgbnVsbCk7Cit9CitmdW5jdGlvbiBzY19maWx0ZXJNYXAy
KHByb2MsIGwxLCBsMikgeworICAgIHZhciByZXZyZXMgPSBudWxsOworICAgIHdoaWxlIChsMSAh
PT0gbnVsbCkgeworICAgICAgICB2YXIgdG1wID0gcHJvYyhsMS5jYXIsIGwyLmNhcik7CisgICAg
ICAgIGlmKHRtcCAhPT0gZmFsc2UpIHJldnJlcyA9IHNjX2NvbnModG1wLCByZXZyZXMpOworCWwx
ID0gbDEuY2RyOworCWwyID0gbDIuY2RyCisgICAgfQorICAgIHJldHVybiBzY19yZXZlcnNlQXBw
ZW5kQmFuZyhyZXZyZXMsIG51bGwpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
ZnVuY3Rpb24gc2NfZmlsdGVyTWFwKHByb2MsIGwxLCBsMiwgbDMpIHsKKyAgICBpZiAobDIgPT09
IHVuZGVmaW5lZCkKKwlyZXR1cm4gc2NfZmlsdGVyTWFwMShwcm9jLCBsMSk7CisgICAgZWxzZSBp
ZiAobDMgPT09IHVuZGVmaW5lZCkKKwlyZXR1cm4gc2NfZmlsdGVyTWFwMihwcm9jLCBsMSwgbDIp
OworICAgIC8vIGVsc2UKKyAgICB2YXIgbmJBcHBseUFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIC0g
MTsKKyAgICB2YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5KG5iQXBwbHlBcmdzKTsKKyAgICB2YXIg
cmV2cmVzID0gbnVsbDsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0g
MDsgaSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRz
W2kgKyAxXS5jYXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNk
cjsKKwl9CisJdmFyIHRtcCA9IHByb2MuYXBwbHkobnVsbCwgYXBwbHlBcmdzKTsKKwlpZih0bXAg
IT09IGZhbHNlKSByZXZyZXMgPSBzY19jb25zKHRtcCwgcmV2cmVzKTsKKyAgICB9CisgICAgcmV0
dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJldnJlcywgbnVsbCk7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19hbnkocHJvYywgbCkgeworICAgIHZhciByZXZy
ZXMgPSBudWxsOworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisgICAgICAgIHZhciB0bXAgPSBw
cm9jKGwuY2FyKTsKKyAgICAgICAgaWYodG1wICE9PSBmYWxzZSkgcmV0dXJuIHRtcDsKKwlsID0g
bC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
IGFueT8pCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyICJzY19hbnkoIiBwcm9jICIsIiBs
ICIpICE9PSBmYWxzZSIpKSkKKyovCitmdW5jdGlvbiBzY19hbnlQcmVkKHByb2MsIGwpIHsKKyAg
ICByZXR1cm4gc2NfYW55KHByb2MsIGwpIT09IGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZXZlcnkocHJvYywgbCkgeworICAgIHZhciByZXZyZXMg
PSBudWxsOworICAgIHZhciB0bXAgPSB0cnVlOworICAgIHdoaWxlIChsICE9PSBudWxsKSB7Cisg
ICAgICAgIHRtcCA9IHByb2MobC5jYXIpOworICAgICAgICBpZiAodG1wID09PSBmYWxzZSkgcmV0
dXJuIGZhbHNlOworCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHRtcDsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IGV2ZXJ5PykKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgInNj
X2V2ZXJ5KCIgcHJvYyAiLCIgbCAiKSAhPT0gZmFsc2UiKSkpCisqLworZnVuY3Rpb24gc2NfZXZl
cnlQcmVkKHByb2MsIGwpIHsKKyAgICB2YXIgdG1wID0gc2NfZXZlcnkocHJvYywgbCk7CisgICAg
aWYgKHRtcCAhPT0gZmFsc2UpIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIigp
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2ZvcmNlKG8pIHsKKyAgICByZXR1cm4gbygpOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWFrZVByb21pc2UocHJvYykg
eworICAgIHZhciBpc1Jlc3VsdFJlYWR5ID0gZmFsc2U7CisgICAgdmFyIHJlc3VsdCA9IHVuZGVm
aW5lZDsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisJaWYgKCFpc1Jlc3VsdFJlYWR5KSB7CisJ
ICAgIHZhciB0bXAgPSBwcm9jKCk7CisJICAgIGlmICghaXNSZXN1bHRSZWFkeSkgeworCQlpc1Jl
c3VsdFJlYWR5ID0gdHJ1ZTsKKwkJcmVzdWx0ID0gdG1wOworCSAgICB9CisJfQorCXJldHVybiBy
ZXN1bHQ7CisgICAgfTsKK30KKworZnVuY3Rpb24gc2NfVmFsdWVzKHZhbHVlcykgeworICAgIHRo
aXMudmFsdWVzID0gdmFsdWVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgIChwZWVwaG9sZSAodmFsdWVzKSkpCisqLworZnVuY3Rpb24gc2NfdmFsdWVzKCkgeworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKQorCXJldHVybiBhcmd1bWVudHNbMF07CisgICAg
ZWxzZQorCXJldHVybiBuZXcgc2NfVmFsdWVzKGFyZ3VtZW50cyk7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jYWxsV2l0aFZhbHVlcyhwcm9kdWNlciwgY29u
c3VtZXIpIHsKKyAgICB2YXIgcHJvZHVjZWQgPSBwcm9kdWNlcigpOworICAgIGlmIChwcm9kdWNl
ZCBpbnN0YW5jZW9mIHNjX1ZhbHVlcykKKwlyZXR1cm4gY29uc3VtZXIuYXBwbHkobnVsbCwgcHJv
ZHVjZWQudmFsdWVzKTsKKyAgICBlbHNlCisJcmV0dXJuIGNvbnN1bWVyKHByb2R1Y2VkKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2R5bmFtaWNXaW5kKGJl
Zm9yZSwgdGh1bmssIGFmdGVyKSB7CisgICAgYmVmb3JlKCk7CisgICAgdHJ5IHsKKwl2YXIgcmVz
ID0gdGh1bmsoKTsKKwlyZXR1cm4gcmVzOworICAgIH0gZmluYWxseSB7CisJYWZ0ZXIoKTsKKyAg
ICB9Cit9CisKKworLy8gVE9ETzogZXZhbC9zY2hlbWUtcmVwb3J0LWVudmlyb25tZW50L251bGwt
ZW52aXJvbm1lbnQvaW50ZXJhY3Rpb24tZW52aXJvbm1lbnQKKworLy8gTElNSVRBVElPTjogJ2xv
YWQnIGRvZXNuJ3QgZXhpc3Qgd2l0aG91dCBmaWxlcy4KKy8vIExJTUlUQVRJT046IHRyYW5zY3Jp
cHQtb24vdHJhbnNjcmlwdC1vZmYgZG9lc24ndCBleGlzdCB3aXRob3V0IGZpbGVzLgorCisKK2Z1
bmN0aW9uIHNjX1N0cnVjdChuYW1lKSB7CisgICAgdGhpcy5uYW1lID0gbmFtZTsKK30KK3NjX1N0
cnVjdC5wcm90b3R5cGUuc2NfdG9EaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuICIjPHN0cnVjdCIgKyBzY19oYXNoKHRoaXMpICsgIj4iOworfTsKK3NjX1N0cnVjdC5wcm90
b3R5cGUuc2NfdG9Xcml0ZVN0cmluZyA9IHNjX1N0cnVjdC5wcm90b3R5cGUuc2NfdG9EaXNwbGF5
U3RyaW5nOworCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAxICJuZXcgc2NfU3RydWN0KCIgbmFtZSAiKSIpKSkKKyovCitmdW5jdGlvbiBzY19tYWtl
U3RydWN0KG5hbWUpIHsKKyAgICByZXR1cm4gbmV3IHNjX1N0cnVjdChuYW1lKTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAo
cGVlcGhvbGUgKHBvc3RmaXggIiBpbnN0YW5jZW9mIHNjX1N0cnVjdCIpKSkKKyovCitmdW5jdGlv
biBzY19pc1N0cnVjdChvKSB7CisgICAgcmV0dXJuIChvIGluc3RhbmNlb2Ygc2NfU3RydWN0KTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAg
ICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAiKCIgMSAiIGluc3RhbmNlb2Ygc2NfU3RydWN0KSAm
JiAoICIgMSAiLm5hbWUgPT09ICIgMCAiKSIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0cnVjdE5h
bWVkKG5hbWUsIHMpIHsKKyAgICByZXR1cm4gKChzIGluc3RhbmNlb2Ygc2NfU3RydWN0KSAmJiAo
cy5uYW1lID09PSBuYW1lKSk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJ1Y3QtZmllbGQp
CisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIDAgIlsiIDIgIl0iKSkpCisqLworZnVuY3Rp
b24gc2NfZ2V0U3RydWN0RmllbGQocywgbmFtZSwgZmllbGQpIHsKKyAgICByZXR1cm4gc1tmaWVs
ZF07Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJ1Y3QtZmllbGQtc2V0ISkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChob2xlIDQgMCAiWyIgMiAiXSA9ICIgMykpKQorKi8KK2Z1bmN0aW9uIHNj
X3NldFN0cnVjdEZpZWxkQmFuZyhzLCBuYW1lLCBmaWVsZCwgdmFsKSB7CisgICAgc1tmaWVsZF0g
PSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChwcmVmaXggIn4iKSkpCisqLworZnVuY3Rpb24gc2NfYml0Tm90KHgpIHsKKyAgICByZXR1cm4g
fng7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChp
bmZpeCAyIDIgIiYiKSkpCisqLworZnVuY3Rpb24gc2NfYml0QW5kKHgsIHkpIHsKKyAgICByZXR1
cm4geCAmIHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChpbmZpeCAyIDIgInwiKSkpCisqLworZnVuY3Rpb24gc2NfYml0T3IoeCwgeSkgeworICAg
IHJldHVybiB4IHwgeTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKGluZml4IDIgMiAiXiIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRYb3IoeCwgeSkg
eworICAgIHJldHVybiB4IF4geTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPDwiKSkpCisqLworZnVuY3Rpb24gc2NfYml0THNo
KHgsIHkpIHsKKyAgICByZXR1cm4geCA8PCB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICI+PiIpKSkKKyovCitmdW5jdGlvbiBz
Y19iaXRSc2goeCwgeSkgeworICAgIHJldHVybiB4ID4+IHk7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj4+PiIpKSkKKyovCitm
dW5jdGlvbiBzY19iaXRVcnNoKHgsIHkpIHsKKyAgICByZXR1cm4geCA+Pj4geTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IGpzLWZpZWxkIGpzLXByb3BlcnR5KQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMiBvICJbIiBmaWVsZCAiXSIpKSkKKyovCitmdW5jdGlvbiBzY19qc0ZpZWxkKG8s
IGZpZWxkKSB7CisgICAgcmV0dXJuIG9bZmllbGRdOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
anMtZmllbGQtc2V0ISBqcy1wcm9wZXJ0eS1zZXQhKQorICAgICAgICAgICAocGVlcGhvbGUgKGhv
bGUgMyBvICJbIiBmaWVsZCAiXSA9ICIgdmFsKSkpCisqLworZnVuY3Rpb24gc2Nfc2V0SnNGaWVs
ZEJhbmcobywgZmllbGQsIHZhbCkgeworICAgIHJldHVybiBvW2ZpZWxkXSA9IHZhbDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0IGpzLWZpZWxkLWRlbGV0ZSEganMtcHJvcGVydHktZGVsZXRlISkK
KyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgImRlbGV0ZSIgbyAiWyIgZmllbGQgIl0iKSkp
CisqLworZnVuY3Rpb24gc2NfZGVsZXRlSnNGaWVsZEJhbmcobywgZmllbGQpIHsKKyAgICBkZWxl
dGUgb1tmaWVsZF07Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChqc0NhbGwpKSkKKyovCitmdW5jdGlvbiBzY19qc0NhbGwobywgZnVuKSB7CisgICAg
dmFyIGFyZ3MgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykKKwlhcmdzW2ktMl0gPSBhcmd1bWVudHNbaV07CisgICAgcmV0dXJuIGZ1
bi5hcHBseShvLCBhcmdzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKGpzTWV0aG9kQ2FsbCkpKQorKi8KK2Z1bmN0aW9uIHNjX2pzTWV0aG9kQ2Fs
bChvLCBmaWVsZCkgeworICAgIHZhciBhcmdzID0gbmV3IEFycmF5KCk7CisgICAgZm9yICh2YXIg
aSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJYXJnc1tpLTJdID0gYXJndW1lbnRz
W2ldOworICAgIHJldHVybiBvW2ZpZWxkXS5hcHBseShvLCBhcmdzKTsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0IG5ldyBqcy1uZXcpCisgICAgICAgICAgIChwZWVwaG9sZSAoanNOZXcpKSkKKyov
CitmdW5jdGlvbiBzY19qc05ldyhjKSB7CisgICAgdmFyIGV2YWxTdHIgPSAibmV3IGMoIjsKKyAg
ICBldmFsU3RyICs9YXJndW1lbnRzLmxlbmd0aCA+IDE/ICJhcmd1bWVudHNbMV0iOiAiIjsKKyAg
ICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlldmFsU3RyICs9
ICIsIGFyZ3VtZW50c1siICsgaSArICJdIjsKKyAgICBldmFsU3RyICs9IikiOworICAgIHJldHVy
biBldmFsKGV2YWxTdHIpOworfSAgICAKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09IFJl
Z0V4cCA9PT09PT09PT09PT09PT09PT09PQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX3ByZWdleHAocmUpIHsKKyAgICByZXR1cm4gbmV3IFJlZ0V4cChzY19zdHJpbmcy
anNzdHJpbmcocmUpKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX3ByZWdleHBNYXRjaChyZSwgcykgeworICAgIHZhciByZWcgPSAocmUgaW5zdGFuY2VvZiBS
ZWdFeHApID8gcmUgOiBzY19wcmVnZXhwKHJlKTsKKyAgICB2YXIgdG1wID0gcmVnLmV4ZWMoc2Nf
c3RyaW5nMmpzc3RyaW5nKHMpKTsKKyAgICAKKyAgICBpZiAodG1wID09IG51bGwpIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICB2YXIgcmVzID0gbnVsbDsKKyAgICBmb3IgKHZhciBpID0gdG1wLmxl
bmd0aC0xOyBpID49IDA7IGktLSkgeworCWlmICh0bXBbaV0gIT09IG51bGwpIHsKKwkgICAgcmVz
ID0gc2NfY29ucyhzY19qc3N0cmluZzJzdHJpbmcodG1wW2ldKSwgcmVzKTsKKwl9IGVsc2Ugewor
CSAgICByZXMgPSBzY19jb25zKGZhbHNlLCByZXMpOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJl
czsKK30KKyAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3ByZWdl
eHBSZXBsYWNlKHJlLCBzMSwgczIpIHsKKyAgIHZhciByZWc7CisgICB2YXIganNzMSA9IHNjX3N0
cmluZzJqc3N0cmluZyhzMSk7CisgICB2YXIganNzMiA9IHNjX3N0cmluZzJqc3N0cmluZyhzMik7
CisKKyAgIGlmIChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgIGlmIChyZS5nbG9iYWwp
CisJICAgcmVnID0gcmU7CisgICAgICAgZWxzZQorCSAgIHJlZyA9IG5ldyBSZWdFeHAocmUuc291
cmNlKTsKKyAgIH0gZWxzZSB7CisgICAgICAgcmVnID0gbmV3IFJlZ0V4cChzY19zdHJpbmcyanNz
dHJpbmcocmUpKTsKKyAgIH0KKworICAgcmV0dXJuIGpzczEucmVwbGFjZShyZWcsIGpzczIpOwor
fQorICAgCisvKioqIE1FVEEgKChleHBvcnQgcHJlZ2V4cC1yZXBsYWNlKikpICovCitmdW5jdGlv
biBzY19wcmVnZXhwUmVwbGFjZUFsbChyZSwgczEsIHMyKSB7CisgICB2YXIgcmVnOworICAgdmFy
IGpzczEgPSBzY19zdHJpbmcyanNzdHJpbmcoczEpOworICAgdmFyIGpzczIgPSBzY19zdHJpbmcy
anNzdHJpbmcoczIpOworCisgICBpZiAocmUgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgIGlm
IChyZS5nbG9iYWwpCisJICByZWcgPSByZTsKKyAgICAgIGVsc2UKKwkgIHJlZyA9IG5ldyBSZWdF
eHAocmUuc291cmNlLCAiZyIpOworICAgfSBlbHNlIHsKKyAgICAgICByZWcgPSBuZXcgUmVnRXhw
KHNjX3N0cmluZzJqc3N0cmluZyhyZSksICJnIik7CisgICB9CisKKyAgIHJldHVybiBqc3MxLnJl
cGxhY2UocmVnLCBqc3MyKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0
aW9uIHNjX3ByZWdleHBTcGxpdChyZSwgcykgeworICAgdmFyIHJlZyA9ICgocmUgaW5zdGFuY2Vv
ZiBSZWdFeHApID8KKwkgICAgICByZSA6CisJICAgICAgbmV3IFJlZ0V4cChzY19zdHJpbmcyanNz
dHJpbmcocmUpKSk7CisgICB2YXIganNzID0gc2Nfc3RyaW5nMmpzc3RyaW5nKHMpOworICAgdmFy
IHRtcCA9IGpzcy5zcGxpdChyZWcpOworCisgICBpZiAodG1wID09IG51bGwpIHJldHVybiBmYWxz
ZTsKKworICAgcmV0dXJuIHNjX3ZlY3RvcjJsaXN0KHRtcCk7Cit9CisgICAKKworLyogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICovCisvKiBPdGhlciBsaWJyYXJ5IHN0dWZmICovCisvKiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMSAiTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKiIgJ24gIikiKSkpCisqLworZnVu
Y3Rpb24gc2NfcmFuZG9tKG4pIHsKKyAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgp
Km4pOworfQorCisvKioqIE1FVEEgKChleHBvcnQgY3VycmVudC1kYXRlKQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMCAibmV3IERhdGUoKSIpKSkKKyovCitmdW5jdGlvbiBzY19jdXJyZW50
RGF0ZSgpIHsKKyAgIHJldHVybiBuZXcgRGF0ZSgpOworfQorCitmdW5jdGlvbiBzY19IYXNodGFi
bGUoKSB7Cit9CitzY19IYXNodGFibGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuICIjeyVoYXNodGFibGV9IjsKK307CisvLyBzY190b1dyaXRlU3RyaW5nID09
IHNjX3RvRGlzcGxheVN0cmluZyA9PSB0b1N0cmluZworCitmdW5jdGlvbiBzY19IYXNodGFibGVF
bGVtZW50KGtleSwgdmFsKSB7CisgICAgdGhpcy5rZXkgPSBrZXk7CisgICAgdGhpcy52YWwgPSB2
YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlICho
b2xlIDAgIm5ldyBzY19IYXNodGFibGUoKSIpKSkKKyovCitmdW5jdGlvbiBzY19tYWtlSGFzaHRh
YmxlKCkgeworICAgIHJldHVybiBuZXcgc2NfSGFzaHRhYmxlKCk7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19oYXNodGFibGVQdXRCYW5nKGh0LCBrZXksIHZh
bCkgeworICAgIHZhciBoYXNoID0gc2NfaGFzaChrZXkpOworICAgIGh0W2hhc2hdID0gbmV3IHNj
X0hhc2h0YWJsZUVsZW1lbnQoa2V5LCB2YWwpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
KSAqLworZnVuY3Rpb24gc2NfaGFzaHRhYmxlR2V0KGh0LCBrZXkpIHsKKyAgICB2YXIgaGFzaCA9
IHNjX2hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCBpbiBodCkKKwlyZXR1cm4gaHRbaGFzaF0udmFs
OworICAgIGVsc2UKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCitmdW5jdGlvbiBzY19oYXNodGFibGVGb3JFYWNoKGh0LCBmKSB7CisgICAgZm9yICh2YXIg
diBpbiBodCkgeworCWlmIChodFt2XSBpbnN0YW5jZW9mIHNjX0hhc2h0YWJsZUVsZW1lbnQpCisJ
ICAgIGYoaHRbdl0ua2V5LCBodFt2XS52YWwpOworICAgIH0KK30KKworLyoqKiBNRVRBICgoZXhw
b3J0IGhhc2h0YWJsZS1jb250YWlucz8pCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyICJz
Y19oYXNoKCIgMSAiKSBpbiAiIDApKSkKKyovCitmdW5jdGlvbiBzY19oYXNodGFibGVDb250YWlu
cyhodCwga2V5KSB7CisgICAgdmFyIGhhc2ggPSBzY19oYXNoKGtleSk7CisgICAgaWYgKGhhc2gg
aW4gaHQpCisJcmV0dXJuIHRydWU7CisgICAgZWxzZQorCXJldHVybiBmYWxzZTsKK30KKwordmFy
IFNDX0hBU0hfQ09VTlRFUiA9IDA7CisKK2Z1bmN0aW9uIHNjX2hhc2gobykgeworICAgIGlmIChv
ID09PSBudWxsKQorCXJldHVybiAibnVsbCI7CisgICAgZWxzZSBpZiAobyA9PT0gdW5kZWZpbmVk
KQorCXJldHVybiAidW5kZWZpbmVkIjsKKyAgICBlbHNlIGlmIChvID09PSB0cnVlKQorCXJldHVy
biAidHJ1ZSI7CisgICAgZWxzZSBpZiAobyA9PT0gZmFsc2UpCisJcmV0dXJuICJmYWxzZSI7Cisg
ICAgZWxzZSBpZiAodHlwZW9mIG8gPT09ICJudW1iZXIiKQorCXJldHVybiAibnVtLSIgKyBvOwor
ICAgIGVsc2UgaWYgKHR5cGVvZiBvID09PSAic3RyaW5nIikKKwlyZXR1cm4gImpzc3RyLSIgKyBv
OworICAgIGVsc2UgaWYgKG8uc2NfZ2V0SGFzaCkKKwlyZXR1cm4gby5zY19nZXRIYXNoKCk7Cisg
ICAgZWxzZQorCXJldHVybiBzY19jb3VudGVySGFzaC5jYWxsKG8pOworfQorZnVuY3Rpb24gc2Nf
Y291bnRlckhhc2goKSB7CisgICAgaWYgKCF0aGlzLnNjX2hhc2gpIHsKKwl0aGlzLnNjX2hhc2gg
PSAiaGFzaC0iICsgU0NfSEFTSF9DT1VOVEVSOworCVNDX0hBU0hfQ09VTlRFUisrOworICAgIH0K
KyAgICByZXR1cm4gdGhpcy5zY19oYXNoOworfQorCitmdW5jdGlvbiBzY19UcmFtcG9saW5lKGFy
Z3MsIG1heFRhaWxDYWxscykgeworICAgIHRoaXNbJ19fdHJhbXBvbGluZSByZXR1cm5fXyddID0g
dHJ1ZTsKKyAgICB0aGlzLmFyZ3MgPSBhcmdzOworICAgIHRoaXMuTUFYX1RBSUxfQ0FMTHMgPSBt
YXhUYWlsQ2FsbHM7Cit9CisvLyBUT0RPOiBjYWxsL2NjIHN0dWZmCitzY19UcmFtcG9saW5lLnBy
b3RvdHlwZS5yZXN0YXJ0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIG8gPSB0aGlzOworICAgIHdo
aWxlICh0cnVlKSB7CisJLy8gc2V0IGJvdGggZ2xvYmFscy4KKwlTQ19UQUlMX09CSkVDVC5jYWxs
cyA9IG8uTUFYX1RBSUxfQ0FMTHMtMTsKKwl2YXIgZnVuID0gby5hcmdzLmNhbGxlZTsKKwl2YXIg
cmVzID0gZnVuLmFwcGx5KFNDX1RBSUxfT0JKRUNULCBvLmFyZ3MpOworCWlmIChyZXMgaW5zdGFu
Y2VvZiBzY19UcmFtcG9saW5lKQorCSAgICBvID0gcmVzOworCWVsc2UKKwkgICAgcmV0dXJuIHJl
czsKKyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBiaW5kLWV4aXQtbGFtYmRhKSkgKi8K
K2Z1bmN0aW9uIHNjX2JpbmRFeGl0TGFtYmRhKHByb2MpIHsKKyAgICB2YXIgZXNjYXBlX29iaiA9
IG5ldyBzY19CaW5kRXhpdEV4Y2VwdGlvbigpOworICAgIHZhciBlc2NhcGUgPSBmdW5jdGlvbihy
ZXMpIHsKKwllc2NhcGVfb2JqLnJlcyA9IHJlczsKKwl0aHJvdyBlc2NhcGVfb2JqOworICAgIH07
CisgICAgdHJ5IHsKKwlyZXR1cm4gcHJvYyhlc2NhcGUpOworICAgIH0gY2F0Y2goZSkgeworCWlm
IChlID09PSBlc2NhcGVfb2JqKSB7CisJICAgIHJldHVybiBlLnJlczsKKwl9CisJdGhyb3cgZTsK
KyAgICB9Cit9CitmdW5jdGlvbiBzY19CaW5kRXhpdEV4Y2VwdGlvbigpIHsKKyAgICB0aGlzLl9p
bnRlcm5hbEV4Y2VwdGlvbiA9IHRydWU7Cit9CisKK3ZhciBTQ19TQ00ySlNfR0xPQkFMUyA9IG5l
dyBPYmplY3QoKTsKKworLy8gZGVmYXVsdCB0YWlsLWNhbGwgZGVwdGguCisvLyBub3JtYWxseSB0
aGUgcHJvZ3JhbSBzaG91bGQgc2V0IGl0IGFnYWluLiBidXQganVzdCBpbiBjYXNlLi4uCit2YXIg
U0NfVEFJTF9PQkpFQ1QgPSBuZXcgT2JqZWN0KCk7CitTQ19TQ00ySlNfR0xPQkFMUy5UQUlMX09C
SkVDVCA9IFNDX1RBSUxfT0JKRUNUOworLy8gPT09PT09PT09PT09PT09PT09PT09PT09IEkvTyA9
PT09PT09PT09PT09PT09PT09PT09PQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK2Z1bmN0aW9uIHNjX0VP
RigpIHsKK30KK3ZhciBTQ19FT0ZfT0JKRUNUID0gbmV3IHNjX0VPRigpOworCitmdW5jdGlvbiBz
Y19Qb3J0KCkgeworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0gSW5wdXQgcG9ydHMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK2Z1bmN0aW9uIHNjX0lucHV0UG9ydCgp
IHsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfUG9ydCgpOworCitzY19JbnB1
dFBvcnQucHJvdG90eXBlLnBlZWtDaGFyID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCEoInBlZWtl
ZCIgaW4gdGhpcykpCisJdGhpcy5wZWVrZWQgPSB0aGlzLmdldE5leHRDaGFyKCk7CisgICAgcmV0
dXJuIHRoaXMucGVla2VkOworfQorc2NfSW5wdXRQb3J0LnByb3RvdHlwZS5yZWFkQ2hhciA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciB0bXAgPSB0aGlzLnBlZWtDaGFyKCk7CisgICAgZGVsZXRlIHRo
aXMucGVla2VkOworICAgIHJldHVybiB0bXA7Cit9CitzY19JbnB1dFBvcnQucHJvdG90eXBlLmlz
Q2hhclJlYWR5ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CitzY19JbnB1dFBv
cnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgLy8gZG8gbm90aGluZworfQor
CisvKiAuLi4uLi4uLi4uLi4uLiBTdHJpbmcgcG9ydCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LiovCitmdW5jdGlvbiBzY19FcnJvcklucHV0UG9ydCgpIHsKK307CitzY19FcnJvcklucHV0UG9y
dC5wcm90b3R5cGUgPSBuZXcgc2NfSW5wdXRQb3J0KCk7CitzY19FcnJvcklucHV0UG9ydC5wcm90
b3R5cGUuZ2V0TmV4dENoYXIgPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiY2FuJ3QgcmVhZCBm
cm9tIGVycm9yLXBvcnQuIjsKK307CitzY19FcnJvcklucHV0UG9ydC5wcm90b3R5cGUuaXNDaGFy
UmVhZHkgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZmFsc2U7Cit9OworICAgIAorCisvKiAu
Li4uLi4uLi4uLi4uLiBTdHJpbmcgcG9ydCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCisK
K2Z1bmN0aW9uIHNjX1N0cmluZ0lucHV0UG9ydChqc1N0cikgeworICAgIC8vIHdlIGFyZSBnb2lu
ZyB0byBkbyBzb21lIGNoYXJBdHMgb24gdGhlIHN0ci4KKyAgICAvLyBpbnN0ZWFkIG9mIHJlY3Jl
YXRpbmcgYWxsIHRoZSB0aW1lIGEgU3RyaW5nLW9iamVjdCwgd2UKKyAgICAvLyBjcmVhdGUgb25l
IGluIHRoZSBiZWdpbm5pbmcuIChub3Qgc3VyZSwgaWYgdGhpcyBpcyByZWFsbHkgYW4gb3B0aW0p
CisgICAgdGhpcy5zdHIgPSBuZXcgU3RyaW5nKGpzU3RyKTsKKyAgICB0aGlzLnBvcyA9IDA7Cit9
CitzY19TdHJpbmdJbnB1dFBvcnQucHJvdG90eXBlID0gbmV3IHNjX0lucHV0UG9ydCgpOworc2Nf
U3RyaW5nSW5wdXRQb3J0LnByb3RvdHlwZS5nZXROZXh0Q2hhciA9IGZ1bmN0aW9uKCkgeworICAg
IGlmICh0aGlzLnBvcyA+PSB0aGlzLnN0ci5sZW5ndGgpCisJcmV0dXJuIFNDX0VPRl9PQkpFQ1Q7
CisgICAgcmV0dXJuIHRoaXMuc3RyLmNoYXJBdCh0aGlzLnBvcysrKTsKK307CisKKy8qIC0tLS0t
LS0tLS0tLS0gUmVhZCBhbmQgb3RoZXIgbGliLWZ1bnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLworZnVuY3Rpb24gc2NfVG9rZW4odHlwZSwgdmFsLCBwb3MpIHsKKyAgICB0aGlz
LnR5cGUgPSB0eXBlOworICAgIHRoaXMudmFsID0gdmFsOworICAgIHRoaXMucG9zID0gcG9zOwor
fQorc2NfVG9rZW4uRU9GID0gMC8qRU9GKi87CitzY19Ub2tlbi5PUEVOX1BBUiA9IDEvKk9QRU5f
UEFSKi87CitzY19Ub2tlbi5DTE9TRV9QQVIgPSAyLypDTE9TRV9QQVIqLzsKK3NjX1Rva2VuLk9Q
RU5fQlJBQ0UgPSAzLypPUEVOX0JSQUNFKi87CitzY19Ub2tlbi5DTE9TRV9CUkFDRSA9IDQvKkNM
T1NFX0JSQUNFKi87CitzY19Ub2tlbi5PUEVOX0JSQUNLRVQgPSA1LypPUEVOX0JSQUNLRVQqLzsK
K3NjX1Rva2VuLkNMT1NFX0JSQUNLRVQgPSA2LypDTE9TRV9CUkFDS0VUKi87CitzY19Ub2tlbi5X
SElURVNQQUNFID0gNy8qV0hJVEVTUEFDRSovOworc2NfVG9rZW4uUVVPVEUgPSA4LypRVU9URSov
Oworc2NfVG9rZW4uSUQgPSA5LypJRCovOworc2NfVG9rZW4uRE9UID0gMTAvKkRPVCovOworc2Nf
VG9rZW4uU1RSSU5HID0gMTEvKlNUUklORyovOworc2NfVG9rZW4uTlVNQkVSID0gMTIvKk5VTUJF
UiovOworc2NfVG9rZW4uRVJST1IgPSAxMy8qRVJST1IqLzsKK3NjX1Rva2VuLlZFQ1RPUl9CRUdJ
TiA9IDE0LypWRUNUT1JfQkVHSU4qLzsKK3NjX1Rva2VuLlRSVUUgPSAxNS8qVFJVRSovOworc2Nf
VG9rZW4uRkFMU0UgPSAxNi8qRkFMU0UqLzsKK3NjX1Rva2VuLlVOU1BFQ0lGSUVEID0gMTcvKlVO
U1BFQ0lGSUVEKi87CitzY19Ub2tlbi5SRUZFUkVOQ0UgPSAxOC8qUkVGRVJFTkNFKi87CitzY19U
b2tlbi5TVE9SRSA9IDE5LypTVE9SRSovOworc2NfVG9rZW4uQ0hBUiA9IDIwLypDSEFSKi87CisK
K3ZhciBTQ19JRF9DTEFTUyA9IFNDX0xPV0VSX0NMQVNTICsgU0NfVVBQRVJfQ0xBU1MgKyAiISQl
KistLi86PD0+P0BeX34iOworZnVuY3Rpb24gc2NfVG9rZW5pemVyKHBvcnQpIHsKKyAgICB0aGlz
LnBvcnQgPSBwb3J0OworfQorc2NfVG9rZW5pemVyLnByb3RvdHlwZS5wZWVrVG9rZW4gPSBmdW5j
dGlvbigpIHsKKyAgICBpZiAodGhpcy5wZWVrZWQpCisJcmV0dXJuIHRoaXMucGVla2VkOworICAg
IHZhciBuZXdUb2tlbiA9IHRoaXMubmV4dFRva2VuKCk7CisgICAgdGhpcy5wZWVrZWQgPSBuZXdU
b2tlbjsKKyAgICByZXR1cm4gbmV3VG9rZW47Cit9Oworc2NfVG9rZW5pemVyLnByb3RvdHlwZS5y
ZWFkVG9rZW4gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdG1wID0gdGhpcy5wZWVrVG9rZW4oKTsK
KyAgICBkZWxldGUgdGhpcy5wZWVrZWQ7CisgICAgcmV0dXJuIHRtcDsKK307CitzY19Ub2tlbml6
ZXIucHJvdG90eXBlLm5leHRUb2tlbiA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBwb3J0ID0gdGhp
cy5wb3J0OworICAgIAorICAgIGZ1bmN0aW9uIGlzTnVtYmVyQ2hhcihjKSB7CisJcmV0dXJuIChj
ID49ICIwIiAmJiBjIDw9ICI5Iik7CisgICAgfTsKKyAgICBmdW5jdGlvbiBpc0lkT3JOdW1iZXJD
aGFyKGMpIHsKKwlyZXR1cm4gU0NfSURfQ0xBU1MuaW5kZXhPZihjKSAhPSAtMSB8fCAvLyBJRC1j
aGFyCisJICAgIChjID49ICIwIiAmJiBjIDw9ICI5Iik7CisgICAgfQorICAgIGZ1bmN0aW9uIGlz
V2hpdGVzcGFjZShjKSB7CisJcmV0dXJuIGMgPT09ICIgIiB8fCBjID09PSAiXHIiIHx8IGMgPT09
ICJcbiIgfHwgYyA9PT0gIlx0IiB8fCBjID09PSAiXGYiOworICAgIH07CisgICAgZnVuY3Rpb24g
aXNXaGl0ZXNwYWNlT3JFT0YoYykgeworCXJldHVybiBpc1doaXRlc3BhY2UoYykgfHwgYyA9PT0g
U0NfRU9GX09CSkVDVDsKKyAgICB9OworCisgICAgZnVuY3Rpb24gcmVhZFN0cmluZygpIHsKKwly
ZXMgPSAiIjsKKwl3aGlsZSAodHJ1ZSkgeworCSAgICB2YXIgYyA9IHBvcnQucmVhZENoYXIoKTsK
KwkgICAgc3dpdGNoIChjKSB7CisJICAgIGNhc2UgJyInOgorCQlyZXR1cm4gbmV3IHNjX1Rva2Vu
KDExLypTVFJJTkcqLywgcmVzKTsKKwkgICAgY2FzZSAiXFwiOgorCQl2YXIgdG1wID0gcG9ydC5y
ZWFkQ2hhcigpOworCQlzd2l0Y2ggKHRtcCkgeworCQljYXNlICcwJzogcmVzICs9ICJcMCI7IGJy
ZWFrOworCQljYXNlICdhJzogcmVzICs9ICJcYSI7IGJyZWFrOworCQljYXNlICdiJzogcmVzICs9
ICJcYiI7IGJyZWFrOworCQljYXNlICdmJzogcmVzICs9ICJcZiI7IGJyZWFrOworCQljYXNlICdu
JzogcmVzICs9ICJcbiI7IGJyZWFrOworCQljYXNlICdyJzogcmVzICs9ICJcciI7IGJyZWFrOwor
CQljYXNlICd0JzogcmVzICs9ICJcdCI7IGJyZWFrOworCQljYXNlICd2JzogcmVzICs9ICJcdiI7
IGJyZWFrOworCQljYXNlICciJzogcmVzICs9ICciJzsgYnJlYWs7CisJCWNhc2UgJ1xcJzogcmVz
ICs9ICdcXCc7IGJyZWFrOworCQljYXNlICd4JzoKKwkJICAgIC8qIGhleGEtbnVtYmVyICovCisJ
CSAgICB2YXIgbmIgPSAwOworCQkgICAgd2hpbGUgKHRydWUpIHsKKwkJCXZhciBoZXhDID0gcG9y
dC5wZWVrQ2hhcigpOworCQkJaWYgKGhleEMgPj0gJzAnICYmIGhleEMgPD0gJzknKSB7CisJCQkg
ICAgcG9ydC5yZWFkQ2hhcigpOworCQkJICAgIG5iID0gbmIgKiAxNiArIGhleEMuY2hhckNvZGVB
dCgwKSAtICcwJy5jaGFyQ29kZUF0KDApOworCQkJfSBlbHNlIGlmIChoZXhDID49ICdhJyAmJiBo
ZXhDIDw9ICdmJykgeworCQkJICAgIHBvcnQucmVhZENoYXIoKTsKKwkJCSAgICBuYiA9IG5iICog
MTYgKyBoZXhDLmNoYXJDb2RlQXQoMCkgLSAnYScuY2hhckNvZGVBdCgwKTsKKwkJCX0gZWxzZSBp
ZiAoaGV4QyA+PSAnQScgJiYgaGV4QyA8PSAnRicpIHsKKwkJCSAgICBwb3J0LnJlYWRDaGFyKCk7
CisJCQkgICAgbmIgPSBuYiAqIDE2ICsgaGV4Qy5jaGFyQ29kZUF0KDApIC0gJ0EnLmNoYXJDb2Rl
QXQoMCk7CisJCQl9IGVsc2UgeworCQkJICAgIC8vIG5leHQgY2hhciBpc24ndCBwYXJ0IG9mIGhl
eC4KKwkJCSAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShuYik7CisJCQkgICAgYnJlYWs7
CisJCQl9CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICAgIGlmICh0bXAg
PT09IFNDX0VPRl9PQkpFQ1QpIHsKKwkJCXJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8s
ICJ1bmNsb3NlZCBzdHJpbmctbGl0ZXJhbCIgKyByZXMpOworCQkgICAgfQorCQkgICAgcmVzICs9
IHRtcDsKKwkJfQorCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJaWYgKGMgPT09IFNDX0VPRl9P
QkpFQ1QpIHsKKwkJICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJ1bmNsb3Nl
ZCBzdHJpbmctbGl0ZXJhbCIgKyByZXMpOworCQl9CisJCXJlcyArPSBjOworCSAgICB9CisJfQor
ICAgIH07CisgICAgZnVuY3Rpb24gcmVhZElkT3JOdW1iZXIoZmlyc3RDaGFyKSB7CisJdmFyIHJl
cyA9IGZpcnN0Q2hhcjsKKwl3aGlsZSAoaXNJZE9yTnVtYmVyQ2hhcihwb3J0LnBlZWtDaGFyKCkp
KQorCSAgICByZXMgKz0gcG9ydC5yZWFkQ2hhcigpOworCWlmIChpc05hTihyZXMpKQorCSAgICBy
ZXR1cm4gbmV3IHNjX1Rva2VuKDkvKklEKi8sIHJlcyk7CisJZWxzZQorCSAgICByZXR1cm4gbmV3
IHNjX1Rva2VuKDEyLypOVU1CRVIqLywgcmVzIC0gMCk7CisgICAgfTsKKyAgICAKKyAgICBmdW5j
dGlvbiBza2lwV2hpdGVzcGFjZUFuZENvbW1lbnRzKCkgeworCXZhciBkb25lID0gZmFsc2U7CisJ
d2hpbGUgKCFkb25lKSB7CisJICAgIGRvbmUgPSB0cnVlOworCSAgICB3aGlsZSAoaXNXaGl0ZXNw
YWNlKHBvcnQucGVla0NoYXIoKSkpCisJCXBvcnQucmVhZENoYXIoKTsKKwkgICAgaWYgKHBvcnQu
cGVla0NoYXIoKSA9PT0gJzsnKSB7CisJCXBvcnQucmVhZENoYXIoKTsKKwkJZG9uZSA9IGZhbHNl
OworCQl3aGlsZSAodHJ1ZSkgeworCQkgICAgY3VyQ2hhciA9IHBvcnQucmVhZENoYXIoKTsKKwkJ
ICAgIGlmIChjdXJDaGFyID09PSBTQ19FT0ZfT0JKRUNUIHx8CisJCQljdXJDaGFyID09PSAnXG4n
KQorCQkJYnJlYWs7CisJCX0KKwkgICAgfQorCX0KKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9u
IHJlYWREb3QoKSB7CisJaWYgKGlzV2hpdGVzcGFjZShwb3J0LnBlZWtDaGFyKCkpKQorCSAgICBy
ZXR1cm4gbmV3IHNjX1Rva2VuKDEwLypET1QqLyk7CisJZWxzZQorCSAgICByZXR1cm4gcmVhZElk
T3JOdW1iZXIoIi4iKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gcmVhZFNoYXJwKCkgeworCXZh
ciBjID0gcG9ydC5yZWFkQ2hhcigpOworCWlmIChpc1doaXRlc3BhY2UoYykpCisJICAgIHJldHVy
biBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuMC4iKTsKKworCS8vIHJl
ZmVyZW5jZQorCWlmIChpc051bWJlckNoYXIoYykpIHsKKwkgICAgdmFyIG5iID0gYyAtIDA7CisJ
ICAgIHdoaWxlIChpc051bWJlckNoYXIocG9ydC5wZWVrQ2hhcigpKSkKKwkJbmIgPSBuYioxMCAr
IChwb3J0LnJlYWRDaGFyKCkgLSAwKTsKKwkgICAgc3dpdGNoIChwb3J0LnJlYWRDaGFyKCkpIHsK
KwkgICAgY2FzZSAnIyc6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTgvKlJFRkVSRU5DRSovLCBu
Yik7CisJICAgIGNhc2UgJz0nOgorCQlyZXR1cm4gbmV3IHNjX1Rva2VuKDE5LypTVE9SRSovLCBu
Yik7CisJICAgIGRlZmF1bHQ6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJi
YWQgIy1wYXR0ZXJuMS4iICsgbmIpOworCSAgICB9CisJfQorCisJaWYgKGMgPT09ICIoIikKKwkg
ICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxNC8qVkVDVE9SX0JFR0lOKi8pOworCQorCWlmIChjID09
PSAiXFwiKSB7IC8vIGNoYXJhY3RlcgorCSAgICB2YXIgdG1wID0gIiIKKwkgICAgd2hpbGUgKCFp
c1doaXRlc3BhY2VPckVPRihwb3J0LnBlZWtDaGFyKCkpKQorCQl0bXAgKz0gcG9ydC5yZWFkQ2hh
cigpOworCSAgICBzd2l0Y2ggKHRtcC5sZW5ndGgpIHsKKwkgICAgY2FzZSAwOiAvLyBpdCdzIGVz
Y2FwaW5nIGEgd2hpdGVzcGFjZSBjaGFyOgorCQlpZiAoc2NfaXNFT0ZPYmplY3QocG9ydC5wZWVr
Q2hhcikpCisJCSAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0
dGVybjIuIik7CisJCWVsc2UKKwkJICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMjAvKkNIQVIqLywg
cG9ydC5yZWFkQ2hhcigpKTsKKwkgICAgY2FzZSAxOgorCQlyZXR1cm4gbmV3IHNjX1Rva2VuKDIw
LypDSEFSKi8sIHRtcCk7CisJICAgIGRlZmF1bHQ6CisJCXZhciBlbnRyeSA9IHNjX0NoYXIucmVh
ZGFibGUyY2hhclt0bXAudG9Mb3dlckNhc2UoKV07CisJCWlmIChlbnRyeSkKKwkJICAgIHJldHVy
biBuZXcgc2NfVG9rZW4oMjAvKkNIQVIqLywgZW50cnkpOworCQllbHNlCisJCSAgICByZXR1cm4g
bmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAidW5rbm93biBjaGFyYWN0ZXIgZGVzY3JpcHRpb246
ICNcXCIgKyB0bXApOworCSAgICB9CisJfQorCisJLy8gc29tZSBjb25zdGFudHMgKCN0LCAjZiwg
I3Vuc3BlY2lmaWVkKQorCXZhciByZXM7CisJdmFyIG5lZWRpbmc7CisJc3dpdGNoIChjKSB7CisJ
Y2FzZSAndCc6IHJlcyA9IG5ldyBzY19Ub2tlbigxNS8qVFJVRSovLCB0cnVlKTsgbmVlZGluZyA9
ICIiOyBicmVhazsKKwljYXNlICdmJzogcmVzID0gbmV3IHNjX1Rva2VuKDE2LypGQUxTRSovLCBm
YWxzZSk7IG5lZWRpbmcgPSAiIjsgYnJlYWs7CisJY2FzZSAndSc6IHJlcyA9IG5ldyBzY19Ub2tl
bigxNy8qVU5TUEVDSUZJRUQqLywgdW5kZWZpbmVkKTsgbmVlZGluZyA9ICJuc3BlY2lmaWVkIjsg
YnJlYWs7CisJZGVmYXVsdDoKKwkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywg
ImJhZCAjLXBhdHRlcm4zOiAiICsgYyk7CisJfQorCXdoaWxlKHRydWUpIHsKKwkgICAgYyA9IHBv
cnQucGVla0NoYXIoKTsKKwkgICAgaWYgKChpc1doaXRlc3BhY2VPckVPRihjKSB8fCBjID09PSAn
KScpICYmCisJCW5lZWRpbmcgPT0gIiIpCisJCXJldHVybiByZXM7CisJICAgIGVsc2UgaWYgKGlz
V2hpdGVzcGFjZShjKSB8fCBuZWVkaW5nID09ICIiKQorCQlyZXR1cm4gbmV3IHNjX1Rva2VuKDEz
LypFUlJPUiovLCAiYmFkICMtcGF0dGVybjQgIiArIGMgKyAiICIgKyBuZWVkaW5nKTsKKwkgICAg
ZWxzZSBpZiAobmVlZGluZy5jaGFyQXQoMCkgPT0gYykgeworCQlwb3J0LnJlYWRDaGFyKCk7IC8v
IGNvbnN1bWUKKwkJbmVlZGluZyA9IG5lZWRpbmcuc2xpY2UoMSk7CisJICAgIH0gZWxzZQorCQly
ZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0dGVybjUiKTsKKwl9CisJ
CisgICAgfTsKKworICAgIHNraXBXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTsKKyAgICB2YXIgY3Vy
Q2hhciA9IHBvcnQucmVhZENoYXIoKTsKKyAgICBpZiAoY3VyQ2hhciA9PT0gU0NfRU9GX09CSkVD
VCkKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDAvKkVPRiovLCBjdXJDaGFyKTsKKyAgICBzd2l0Y2gg
KGN1ckNoYXIpCisgICAgeworICAgIGNhc2UgIiAiOgorICAgIGNhc2UgIlxuIjoKKyAgICBjYXNl
ICJcdCI6CisJcmV0dXJuIHJlYWRXaGl0ZXNwYWNlKCk7CisgICAgY2FzZSAiKCI6CisJcmV0dXJu
IG5ldyBzY19Ub2tlbigxLypPUEVOX1BBUiovKTsKKyAgICBjYXNlICIpIjoKKwlyZXR1cm4gbmV3
IHNjX1Rva2VuKDIvKkNMT1NFX1BBUiovKTsKKyAgICBjYXNlICJ7IjoKKwlyZXR1cm4gbmV3IHNj
X1Rva2VuKDMvKk9QRU5fQlJBQ0UqLyk7CisgICAgY2FzZSAifSI6CisJcmV0dXJuIG5ldyBzY19U
b2tlbig0LypDTE9TRV9CUkFDRSovKTsKKyAgICBjYXNlICJbIjoKKwlyZXR1cm4gbmV3IHNjX1Rv
a2VuKDUvKk9QRU5fQlJBQ0tFVCovKTsKKyAgICBjYXNlICJdIjoKKwlyZXR1cm4gbmV3IHNjX1Rv
a2VuKDYvKkNMT1NFX0JSQUNLRVQqLyk7CisgICAgY2FzZSAiJyI6CisJcmV0dXJuIG5ldyBzY19U
b2tlbig4LypRVU9URSovKTsKKyAgICBjYXNlICIjIjoKKwlyZXR1cm4gcmVhZFNoYXJwKCk7Cisg
ICAgY2FzZSAiLiI6CisJcmV0dXJuIHJlYWREb3QoKTsKKyAgICBjYXNlICciJzoKKwlyZXR1cm4g
cmVhZFN0cmluZygpOworICAgIGRlZmF1bHQ6CisJaWYgKGlzSWRPck51bWJlckNoYXIoY3VyQ2hh
cikpCisJICAgIHJldHVybiByZWFkSWRPck51bWJlcihjdXJDaGFyKTsKKwl0aHJvdyAidW5leHBl
Y3RlZCBjaGFyYWN0ZXI6ICIgKyBjdXJDaGFyOworICAgIH0KK307CisKK2Z1bmN0aW9uIHNjX1Jl
YWRlcih0b2tlbml6ZXIpIHsKKyAgICB0aGlzLnRva2VuaXplciA9IHRva2VuaXplcjsKKyAgICB0
aGlzLmJhY2tyZWYgPSBuZXcgQXJyYXkoKTsKK30KK3NjX1JlYWRlci5wcm90b3R5cGUucmVhZCA9
IGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHJlYWRMaXN0KGxpc3RCZWdpblR5cGUpIHsKKwlm
dW5jdGlvbiBtYXRjaGVzUGVlcihvcGVuLCBjbG9zZSkgeworCSAgICByZXR1cm4gb3BlbiA9PT0g
MS8qT1BFTl9QQVIqLyAmJiBjbG9zZSA9PT0gMi8qQ0xPU0VfUEFSKi8KKwkgICAgCXx8IG9wZW4g
PT09IDMvKk9QRU5fQlJBQ0UqLyAmJiBjbG9zZSA9PT0gNC8qQ0xPU0VfQlJBQ0UqLworCQl8fCBv
cGVuID09PSA1LypPUEVOX0JSQUNLRVQqLyAmJiBjbG9zZSA9PT0gNi8qQ0xPU0VfQlJBQ0tFVCov
OworCX07CisJdmFyIHJlcyA9IG51bGw7CisKKwl3aGlsZSAodHJ1ZSkgeworCSAgICB2YXIgdG9r
ZW4gPSB0b2tlbml6ZXIucGVla1Rva2VuKCk7CisJICAgIAorCSAgICBzd2l0Y2ggKHRva2VuLnR5
cGUpIHsKKwkgICAgY2FzZSAyLypDTE9TRV9QQVIqLzoKKwkgICAgY2FzZSA0LypDTE9TRV9CUkFD
RSovOgorCSAgICBjYXNlIDYvKkNMT1NFX0JSQUNLRVQqLzoKKwkJaWYgKG1hdGNoZXNQZWVyKGxp
c3RCZWdpblR5cGUsIHRva2VuLnR5cGUpKSB7CisJCSAgICB0b2tlbml6ZXIucmVhZFRva2VuKCk7
IC8vIGNvbnN1bWUgdG9rZW4KKwkJICAgIHJldHVybiBzY19yZXZlcnNlQmFuZyhyZXMpOworCQl9
IGVsc2UKKwkJICAgIHRocm93ICJjbG9zaW5nIHBhciBkb2Vzbid0IG1hdGNoOiAiICsgbGlzdEJl
Z2luVHlwZQorCQkJKyAiICIgKyBsaXN0RW5kVHlwZTsKKworCSAgICBjYXNlIDAvKkVPRiovOgor
CQl0aHJvdyAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSI7CisKKwkgICAgY2FzZSAxMC8qRE9UKi86
CisJCXRva2VuaXplci5yZWFkVG9rZW4oKTsgLy8gY29uc3VtZSB0b2tlbgorCQl2YXIgY2RyID0g
dGhpcy5yZWFkKCk7CisJCXZhciBwYXIgPSB0b2tlbml6ZXIucmVhZFRva2VuKCk7CisJCWlmICgh
bWF0Y2hlc1BlZXIobGlzdEJlZ2luVHlwZSwgcGFyLnR5cGUpKQorCQkgICAgdGhyb3cgImNsb3Np
bmcgcGFyIGRvZXNuJ3QgbWF0Y2g6ICIgKyBsaXN0QmVnaW5UeXBlCisJCQkrICIgIiArIHBhci50
eXBlOworCQllbHNlCisJCSAgICByZXR1cm4gc2NfcmV2ZXJzZUFwcGVuZEJhbmcocmVzLCBjZHIp
OworCQkKKworCSAgICBkZWZhdWx0OgorCQlyZXMgPSBzY19jb25zKHRoaXMucmVhZCgpLCByZXMp
OworCSAgICB9CisJfQorICAgIH07CisgICAgZnVuY3Rpb24gcmVhZFF1b3RlKCkgeworCXJldHVy
biBzY19jb25zKCJxdW90ZSIsIHNjX2NvbnModGhpcy5yZWFkKCksIG51bGwpKTsKKyAgICB9Owor
ICAgIGZ1bmN0aW9uIHJlYWRWZWN0b3IoKSB7CisJLy8gb3BlbmluZy1wYXJlbnRoZXNpcyBpcyBh
bHJlYWR5IGNvbnN1bWVkCisJdmFyIGEgPSBuZXcgQXJyYXkoKTsKKwl3aGlsZSAodHJ1ZSkgewor
CSAgICB2YXIgdG9rZW4gPSB0b2tlbml6ZXIucGVla1Rva2VuKCk7CisJICAgIHN3aXRjaCAodG9r
ZW4udHlwZSkgeworCSAgICBjYXNlIDIvKkNMT1NFX1BBUiovOgorCQl0b2tlbml6ZXIucmVhZFRv
a2VuKCk7CisJCXJldHVybiBhOworCQkKKwkgICAgZGVmYXVsdDoKKwkJYS5wdXNoKHRoaXMucmVh
ZCgpKTsKKwkgICAgfQorCX0KKyAgICB9OworCisgICAgZnVuY3Rpb24gc3RvcmVSZWZlbmNlKG5i
KSB7CisJdmFyIHRtcCA9IHRoaXMucmVhZCgpOworCXRoaXMuYmFja3JlZltuYl0gPSB0bXA7CisJ
cmV0dXJuIHRtcDsKKyAgICB9OworCQorICAgIGZ1bmN0aW9uIHJlYWRSZWZlcmVuY2UobmIpIHsK
KwlpZiAobmIgaW4gdGhpcy5iYWNrcmVmKQorCSAgICByZXR1cm4gdGhpcy5iYWNrcmVmW25iXTsK
KwllbHNlCisJICAgIHRocm93ICJiYWQgcmVmZXJlbmNlOiAiICsgbmI7CisgICAgfTsKKyAgICAK
KyAgICB2YXIgdG9rZW5pemVyID0gdGhpcy50b2tlbml6ZXI7CisKKyAgICB2YXIgdG9rZW4gPSB0
b2tlbml6ZXIucmVhZFRva2VuKCk7CisKKyAgICAvLyBoYW5kbGUgZXJyb3IKKyAgICBpZiAodG9r
ZW4udHlwZSA9PT0gMTMvKkVSUk9SKi8pCisJdGhyb3cgdG9rZW4udmFsOworICAgIAorICAgIHN3
aXRjaCAodG9rZW4udHlwZSkgeworICAgIGNhc2UgMS8qT1BFTl9QQVIqLzoKKyAgICBjYXNlIDMv
Kk9QRU5fQlJBQ0UqLzoKKyAgICBjYXNlIDUvKk9QRU5fQlJBQ0tFVCovOgorCXJldHVybiByZWFk
TGlzdC5jYWxsKHRoaXMsIHRva2VuLnR5cGUpOworICAgIGNhc2UgOC8qUVVPVEUqLzoKKwlyZXR1
cm4gcmVhZFF1b3RlLmNhbGwodGhpcyk7CisgICAgY2FzZSAxMS8qU1RSSU5HKi86CisJcmV0dXJu
IHNjX2pzc3RyaW5nMnN0cmluZyh0b2tlbi52YWwpOworICAgIGNhc2UgMjAvKkNIQVIqLzoKKwly
ZXR1cm4gbmV3IHNjX0NoYXIodG9rZW4udmFsKTsKKyAgICBjYXNlIDE0LypWRUNUT1JfQkVHSU4q
LzoKKwlyZXR1cm4gcmVhZFZlY3Rvci5jYWxsKHRoaXMpOworICAgIGNhc2UgMTgvKlJFRkVSRU5D
RSovOgorCXJldHVybiByZWFkUmVmZXJlbmNlLmNhbGwodGhpcywgdG9rZW4udmFsKTsKKyAgICBj
YXNlIDE5LypTVE9SRSovOgorCXJldHVybiBzdG9yZVJlZmVuY2UuY2FsbCh0aGlzLCB0b2tlbi52
YWwpOworICAgIGNhc2UgOS8qSUQqLzoKKwlyZXR1cm4gc2NfanNzdHJpbmcyc3ltYm9sKHRva2Vu
LnZhbCk7CisgICAgY2FzZSAwLypFT0YqLzoKKyAgICBjYXNlIDEyLypOVU1CRVIqLzoKKyAgICBj
YXNlIDE1LypUUlVFKi86CisgICAgY2FzZSAxNi8qRkFMU0UqLzoKKyAgICBjYXNlIDE3LypVTlNQ
RUNJRklFRCovOgorCXJldHVybiB0b2tlbi52YWw7CisgICAgZGVmYXVsdDoKKwl0aHJvdyAidW5l
eHBlY3RlZCB0b2tlbiAiICsgdG9rZW4udHlwZSArICIgIiArIHRva2VuLnZhbDsKKyAgICB9Cit9
OworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVhZChwb3J0KSB7
CisgICAgaWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBwb3J0IGhhc24n
dCBiZWVuIGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2
YXIuLi4KKyAgICB2YXIgcmVhZGVyID0gbmV3IHNjX1JlYWRlcihuZXcgc2NfVG9rZW5pemVyKHBv
cnQpKTsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19yZWFkQ2hhcihwb3J0KSB7CisgICAgaWYgKHBvcnQgPT09IHVu
ZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBwb3J0IGhhc24ndCBiZWVuIGdpdmVuLgorCXBvcnQg
PSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuLi4KKyAgICB2YXIgdCA9IHBv
cnQucmVhZENoYXIoKTsKKyAgICByZXR1cm4gdCA9PT0gU0NfRU9GX09CSkVDVD8gdDogbmV3IHNj
X0NoYXIodCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcGVl
a0NoYXIocG9ydCkgeworICAgIGlmIChwb3J0ID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSB0
aGUgcG9ydCBoYXNuJ3QgYmVlbiBnaXZlbi4KKwlwb3J0ID0gU0NfREVGQVVMVF9JTjsgLy8gVEhS
RUFEOiBzaGFyZWQgdmFyLi4uCisgICAgdmFyIHQgPSBwb3J0LnBlZWtDaGFyKCk7CisgICAgcmV0
dXJuIHQgPT09IFNDX0VPRl9PQkpFQ1Q/IHQ6IG5ldyBzY19DaGFyKHQpOworfSAgICAKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24g
c2NfaXNDaGFyUmVhZHkocG9ydCkgeworICAgIGlmIChwb3J0ID09PSB1bmRlZmluZWQpIC8vIHdl
IGFzc3VtZSB0aGUgcG9ydCBoYXNuJ3QgYmVlbiBnaXZlbi4KKwlwb3J0ID0gU0NfREVGQVVMVF9J
TjsgLy8gVEhSRUFEOiBzaGFyZWQgdmFyLi4uCisgICAgcmV0dXJuIHBvcnQuaXNDaGFyUmVhZHko
KTsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0
Zml4ICIuY2xvc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19jbG9zZUlucHV0UG9ydChwKSB7Cisg
ICAgcmV0dXJuIHAuY2xvc2UoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIiBpbnN0YW5j
ZW9mIHNjX0lucHV0UG9ydCIpKSkKKyovCitmdW5jdGlvbiBzY19pc0lucHV0UG9ydChvKSB7Cisg
ICAgcmV0dXJuIChvIGluc3RhbmNlb2Ygc2NfSW5wdXRQb3J0KTsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0IGVvZi1vYmplY3Q/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAo
cGVlcGhvbGUgKHBvc3RmaXggIiA9PT0gU0NfRU9GX09CSkVDVCIpKSkKKyovCitmdW5jdGlvbiBz
Y19pc0VPRk9iamVjdChvKSB7CisgICAgcmV0dXJuIG8gPT09IFNDX0VPRl9PQkpFQ1Q7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDAgIlND
X0RFRkFVTFRfSU4iKSkpCisqLworZnVuY3Rpb24gc2NfY3VycmVudElucHV0UG9ydCgpIHsKKyAg
ICByZXR1cm4gU0NfREVGQVVMVF9JTjsKK30KKworLyogLS0tLS0tLS0tLS0tIGZpbGUgb3BlcmF0
aW9ucyBhcmUgbm90IHN1cHBvcnRlZCAtLS0tLS0tLS0tLSovCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2NfY2FsbFdpdGhJbnB1dEZpbGUocywgcHJvYykgeworICAgIHRo
cm93ICJjYW4ndCBvcGVuICIgKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
ZnVuY3Rpb24gc2NfY2FsbFdpdGhPdXRwdXRGaWxlKHMsIHByb2MpIHsKKyAgICB0aHJvdyAiY2Fu
J3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX3dpdGhJbnB1dEZyb21GaWxlKHMsIHRodW5rKSB7CisgICAgdGhyb3cgImNhbid0IG9wZW4g
IiArIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRo
T3V0cHV0VG9GaWxlKHMsIHRodW5rKSB7CisgICAgdGhyb3cgImNhbid0IG9wZW4gIiArIHM7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19vcGVuSW5wdXRGaWxl
KHMpIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX29wZW5PdXRwdXRGaWxlKHMpIHsKKyAgICB0aHJvdyAi
Y2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYmFzZW5hbWUocCkgeworICAgdmFyIGkg
PSBwLmxhc3RJbmRleE9mKCcvJyk7CisKKyAgIGlmKGkgPj0gMCkKKyAgICAgIHJldHVybiBwLnN1
YnN0cmluZyhpICsgMSwgcC5sZW5ndGgpOworICAgZWxzZQorICAgICAgcmV0dXJuICcnOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZGlybmFtZShwKSB7Cisg
ICB2YXIgaSA9IHAubGFzdEluZGV4T2YoJy8nKTsKKworICAgaWYoaSA+PSAwKQorICAgICAgcmV0
dXJuIHAuc3Vic3RyaW5nKDAsIGkpOworICAgZWxzZQorICAgICAgcmV0dXJuICcnOworfQorCisv
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX3dpdGhJbnB1dEZyb21Qb3J0KHAsIHRodW5rKSB7CisgICAgdHJ5IHsKKwl2YXIg
dG1wID0gU0NfREVGQVVMVF9JTjsgLy8gVEhSRUFEOiBzaGFyZWQgdmFyLgorCVNDX0RFRkFVTFRf
SU4gPSBwOworCXJldHVybiB0aHVuaygpOworICAgIH0gZmluYWxseSB7CisJU0NfREVGQVVMVF9J
TiA9IHRtcDsKKyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlv
biBzY193aXRoSW5wdXRGcm9tU3RyaW5nKHMsIHRodW5rKSB7CisgICAgcmV0dXJuIHNjX3dpdGhJ
bnB1dEZyb21Qb3J0KG5ldyBzY19TdHJpbmdJbnB1dFBvcnQoc2Nfc3RyaW5nMmpzc3RyaW5nKHMp
KSwgdGh1bmspOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
d2l0aE91dHB1dFRvUG9ydChwLCB0aHVuaykgeworICAgIHRyeSB7CisJdmFyIHRtcCA9IFNDX0RF
RkFVTFRfT1VUOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuCisJU0NfREVGQVVMVF9PVVQgPSBwOwor
CXJldHVybiB0aHVuaygpOworICAgIH0gZmluYWxseSB7CisJU0NfREVGQVVMVF9PVVQgPSB0bXA7
CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0
aE91dHB1dFRvU3RyaW5nKHRodW5rKSB7CisgICAgdmFyIHAgPSBuZXcgc2NfU3RyaW5nT3V0cHV0
UG9ydCgpOworICAgIHNjX3dpdGhPdXRwdXRUb1BvcnQocCwgdGh1bmspOworICAgIHJldHVybiBw
LmNsb3NlKCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193
aXRoT3V0cHV0VG9Qcm9jZWR1cmUocHJvYywgdGh1bmspIHsKKyAgICB2YXIgdCA9IGZ1bmN0aW9u
KHMpIHsgcHJvYyhzY19qc3N0cmluZzJzdHJpbmcocykpOyB9OworICAgIHJldHVybiBzY193aXRo
T3V0cHV0VG9Qb3J0KG5ldyBzY19HZW5lcmljT3V0cHV0UG9ydCh0KSwgdGh1bmspOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAwICJuZXcg
c2NfU3RyaW5nT3V0cHV0UG9ydCgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX29wZW5PdXRwdXRTdHJp
bmcoKSB7CisgICAgcmV0dXJuIG5ldyBzY19TdHJpbmdPdXRwdXRQb3J0KCk7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19vcGVuSW5wdXRTdHJpbmcoc3RyKSB7
CisgICAgcmV0dXJuIG5ldyBzY19TdHJpbmdJbnB1dFBvcnQoc2Nfc3RyaW5nMmpzc3RyaW5nKHN0
cikpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfT3V0cHV0
UG9ydCgpIHsKK30KK3NjX091dHB1dFBvcnQucHJvdG90eXBlID0gbmV3IHNjX1BvcnQoKTsKK3Nj
X091dHB1dFBvcnQucHJvdG90eXBlLmFwcGVuZEpTU3RyaW5nID0gZnVuY3Rpb24ob2JqKSB7Cisg
ICAgLyogZG8gbm90aGluZyAqLworfQorc2NfT3V0cHV0UG9ydC5wcm90b3R5cGUuY2xvc2UgPSBm
dW5jdGlvbigpIHsKKyAgICAvKiBkbyBub3RoaW5nICovCit9CisKK2Z1bmN0aW9uIHNjX1N0cmlu
Z091dHB1dFBvcnQoKSB7CisgICAgdGhpcy5yZXMgPSAiIjsKK30KK3NjX1N0cmluZ091dHB1dFBv
cnQucHJvdG90eXBlID0gbmV3IHNjX091dHB1dFBvcnQoKTsKK3NjX1N0cmluZ091dHB1dFBvcnQu
cHJvdG90eXBlLmFwcGVuZEpTU3RyaW5nID0gZnVuY3Rpb24ocykgeworICAgIHRoaXMucmVzICs9
IHM7Cit9CitzY19TdHJpbmdPdXRwdXRQb3J0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiBzY19qc3N0cmluZzJzdHJpbmcodGhpcy5yZXMpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZ2V0T3V0cHV0U3RyaW5nKHNwKSB7Cisg
ICAgcmV0dXJuIHNjX2pzc3RyaW5nMnN0cmluZyhzcC5yZXMpOworfQorICAgIAorCitmdW5jdGlv
biBzY19FcnJvck91dHB1dFBvcnQoKSB7Cit9CitzY19FcnJvck91dHB1dFBvcnQucHJvdG90eXBl
ID0gbmV3IHNjX091dHB1dFBvcnQoKTsKK3NjX0Vycm9yT3V0cHV0UG9ydC5wcm90b3R5cGUuYXBw
ZW5kSlNTdHJpbmcgPSBmdW5jdGlvbihzKSB7CisgICAgdGhyb3cgImRvbid0IHdyaXRlIG9uIEVy
cm9yUG9ydCEiOworfQorc2NfRXJyb3JPdXRwdXRQb3J0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0
aW9uKCkgeworICAgIC8qIGRvIG5vdGhpbmcgKi8KK30KKworZnVuY3Rpb24gc2NfR2VuZXJpY091
dHB1dFBvcnQoYXBwZW5kSlNTdHJpbmcsIGNsb3NlKSB7CisgICAgdGhpcy5hcHBlbmRKU1N0cmlu
ZyA9IGFwcGVuZEpTU3RyaW5nOworICAgIGlmIChjbG9zZSkKKwl0aGlzLmNsb3NlID0gY2xvc2U7
Cit9CitzY19HZW5lcmljT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfT3V0cHV0UG9ydCgp
OworCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfT3V0cHV0UG9ydCIpKSkK
KyovCitmdW5jdGlvbiBzY19pc091dHB1dFBvcnQobykgeworICAgIHJldHVybiAobyBpbnN0YW5j
ZW9mIHNjX091dHB1dFBvcnQpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNsb3NlKCkiKSkpCisqLworZnVuY3Rpb24gc2NfY2xv
c2VPdXRwdXRQb3J0KHApIHsKKyAgICByZXR1cm4gcC5jbG9zZSgpOworfQorCisvKiAtLS0tLS0t
LS0tLS0tLS0tLS0gd3JpdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNj
X3dyaXRlKG8sIHApIHsKKyAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSAvLyB3ZSBhc3N1bWUgbm90
IGdpdmVuCisJcCA9IFNDX0RFRkFVTFRfT1VUOworICAgIHAuYXBwZW5kSlNTdHJpbmcoc2NfdG9X
cml0ZVN0cmluZyhvKSk7Cit9CisKK2Z1bmN0aW9uIHNjX3RvV3JpdGVTdHJpbmcobykgeworICAg
IGlmIChvID09PSBudWxsKQorCXJldHVybiAiKCkiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUp
CisJcmV0dXJuICIjdCI7CisgICAgZWxzZSBpZiAobyA9PT0gZmFsc2UpCisJcmV0dXJuICIjZiI7
CisgICAgZWxzZSBpZiAobyA9PT0gdW5kZWZpbmVkKQorCXJldHVybiAiI3Vuc3BlY2lmaWVkIjsK
KyAgICBlbHNlIGlmICh0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJykKKwlyZXR1cm4gIiM8cHJvY2Vk
dXJlICIgKyBzY19oYXNoKG8pICsgIj4iOworICAgIGVsc2UgaWYgKG8uc2NfdG9Xcml0ZVN0cmlu
ZykKKwlyZXR1cm4gby5zY190b1dyaXRlU3RyaW5nKCk7CisgICAgZWxzZQorCXJldHVybiBvLnRv
U3RyaW5nKCk7Cit9CisKK2Z1bmN0aW9uIHNjX2VzY2FwZVdyaXRlU3RyaW5nKHMpIHsKKyAgICB2
YXIgcmVzID0gIiI7CisgICAgdmFyIGogPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisJc3dpdGNoIChzLmNoYXJBdChpKSkgeworCWNhc2UgIlwwIjogcmVzICs9IHMu
c3Vic3RyaW5nKGosIGkpICsgIlxcMCI7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXGIiOiBy
ZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFxiIjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNl
ICJcZiI6IHJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJcXGYiOyBqID0gaSArIDE7IGJyZWFr
OworCWNhc2UgIlxuIjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcbiI7IGogPSBpICsg
MTsgYnJlYWs7CisJY2FzZSAiXHIiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFxyIjsg
aiA9IGkgKyAxOyBicmVhazsKKwljYXNlICJcdCI6IHJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSAr
ICJcXHQiOyBqID0gaSArIDE7IGJyZWFrOworCWNhc2UgIlx2IjogcmVzICs9IHMuc3Vic3RyaW5n
KGosIGkpICsgIlxcdiI7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAnIic6IHJlcyArPSBzLnN1
YnN0cmluZyhqLCBpKSArICdcXCInOyBqID0gaSArIDE7IGJyZWFrOworCWNhc2UgIlxcIjogcmVz
ICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcXFwiOyBqID0gaSArIDE7IGJyZWFrOworCWRlZmF1
bHQ6CisJICAgIHZhciBjID0gcy5jaGFyQXQoaSk7CisJICAgIGlmICgiXGEiICE9PSAiYSIgJiYg
YyA9PSAiXGEiKSB7CisJCXJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJcXGEiOyBqID0gaSAr
IDE7IGNvbnRpbnVlOworCSAgICB9CisJICAgIGlmICgiXHYiICE9PSAidiIgJiYgYyA9PSAiXHYi
KSB7CisJCXJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJcXHYiOyBqID0gaSArIDE7IGNvbnRp
bnVlOworCSAgICB9CisJICAgIC8vaWYgKHMuY2hhckF0KGkpIDwgJyAnIHx8IHMuY2hhckNvZGVB
dChpKSA+IDEyNykgeworCSAgICAvLyBDQVJFOiBNYW51ZWwgaXMgdGhpcyBPSyB3aXRoIEhPUD8K
KwkgICAgaWYgKHMuY2hhckF0KGkpIDwgJyAnKSB7CisJCS8qIG5vbiBwcmludGFibGUgY2hhcmFj
dGVyIGFuZCBzcGVjaWFsIGNoYXJzICovCisJCXJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJc
XHgiICsgcy5jaGFyQ29kZUF0KGkpLnRvU3RyaW5nKDE2KTsKKwkJaiA9IGkgKyAxOworCSAgICB9
CisJICAgIC8vIGVsc2UganVzdCBsZXQgaSBpbmNyZWFzZS4uLgorCX0KKyAgICB9CisgICAgcmVz
ICs9IHMuc3Vic3RyaW5nKGosIGkpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIC0tLS0tLS0t
LS0tLS0tLS0tLSBkaXNwbGF5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19kaXNwbGF5KG8sIHApIHsKKyAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSAvLyB3ZSBhc3N1bWUg
bm90IGdpdmVuCisJcCA9IFNDX0RFRkFVTFRfT1VUOworICAgIHAuYXBwZW5kSlNTdHJpbmcoc2Nf
dG9EaXNwbGF5U3RyaW5nKG8pKTsKK30KKworZnVuY3Rpb24gc2NfdG9EaXNwbGF5U3RyaW5nKG8p
IHsKKyAgICBpZiAobyA9PT0gbnVsbCkKKwlyZXR1cm4gIigpIjsKKyAgICBlbHNlIGlmIChvID09
PSB0cnVlKQorCXJldHVybiAiI3QiOworICAgIGVsc2UgaWYgKG8gPT09IGZhbHNlKQorCXJldHVy
biAiI2YiOworICAgIGVsc2UgaWYgKG8gPT09IHVuZGVmaW5lZCkKKwlyZXR1cm4gIiN1bnNwZWNp
ZmllZCI7CisgICAgZWxzZSBpZiAodHlwZW9mIG8gPT09ICdmdW5jdGlvbicpCisJcmV0dXJuICIj
PHByb2NlZHVyZSAiICsgc2NfaGFzaChvKSArICI+IjsKKyAgICBlbHNlIGlmIChvLnNjX3RvRGlz
cGxheVN0cmluZykKKwlyZXR1cm4gby5zY190b0Rpc3BsYXlTdHJpbmcoKTsKKyAgICBlbHNlCisJ
cmV0dXJuIG8udG9TdHJpbmcoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tIG5ld2xpbmUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX25ld2xpbmUocCkgeworICAg
IGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0NfREVG
QVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZygiXG4iKTsKK30KKyAgICAKKy8qIC0tLS0t
LS0tLS0tLS0tLS0tLSB3cml0ZS1jaGFyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5j
dGlvbiBzY193cml0ZUNoYXIoYywgcCkgeworICAgIGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdl
IGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0NfREVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0
cmluZyhjLnZhbCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSB3cml0ZS1jaXJjbGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dyaXRlQ2lyY2xlKG8sIHApIHsK
KyAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSAvLyB3ZSBhc3N1bWUgbm90IGdpdmVuCisJcCA9IFND
X0RFRkFVTFRfT1VUOworICAgIHAuYXBwZW5kSlNTdHJpbmcoc2NfdG9Xcml0ZUNpcmNsZVN0cmlu
ZyhvKSk7Cit9CisKK2Z1bmN0aW9uIHNjX3RvV3JpdGVDaXJjbGVTdHJpbmcobykgeworICAgIHZh
ciBzeW1iID0gc2NfZ2Vuc3ltKCJ3cml0ZUNpcmNsZSIpOworICAgIHZhciBuYlBvaW50ZXIgPSBu
ZXcgT2JqZWN0KCk7CisgICAgbmJQb2ludGVyLm5iID0gMDsKKyAgICBzY19wcmVwV3JpdGVDaXJj
bGUobywgc3ltYiwgbmJQb2ludGVyKTsKKyAgICByZXR1cm4gc2NfZ2VuVG9Xcml0ZUNpcmNsZVN0
cmluZyhvLCBzeW1iKTsKK30KKworZnVuY3Rpb24gc2NfcHJlcFdyaXRlQ2lyY2xlKG8sIHN5bWIs
IG5iUG9pbnRlcikgeworICAgIC8vIFRPRE8gc2NfU3RydWN0CisgICAgaWYgKG8gaW5zdGFuY2Vv
ZiBzY19QYWlyIHx8CisJbyBpbnN0YW5jZW9mIHNjX1ZlY3RvcikgeworCWlmIChvW3N5bWJdICE9
PSB1bmRlZmluZWQpIHsKKwkgICAgLy8gbm90IHRoZSBmaXJzdCB2aXNpdC4KKwkgICAgb1tzeW1i
XSsrOworCSAgICAvLyB1bmxlc3MgdGhlcmUgaXMgYWxyZWFkeSBhIG51bWJlciwgYXNzaWduIG9u
ZS4KKwkgICAgaWYgKCFvW3N5bWIgKyAibmIiXSkgb1tzeW1iICsgIm5iIl0gPSBuYlBvaW50ZXIu
bmIrKzsKKwkgICAgcmV0dXJuOworCX0KKwlvW3N5bWJdID0gMDsKKwlpZiAobyBpbnN0YW5jZW9m
IHNjX1BhaXIpIHsKKwkgICAgc2NfcHJlcFdyaXRlQ2lyY2xlKG8uY2FyLCBzeW1iLCBuYlBvaW50
ZXIpOworCSAgICBzY19wcmVwV3JpdGVDaXJjbGUoby5jZHIsIHN5bWIsIG5iUG9pbnRlcik7CisJ
fSBlbHNlIHsKKwkgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvLmxlbmd0aDsgaSsrKQorCQlzY19w
cmVwV3JpdGVDaXJjbGUob1tpXSwgc3ltYiwgbmJQb2ludGVyKTsKKwl9CisgICAgfQorfQorCitm
dW5jdGlvbiBzY19nZW5Ub1dyaXRlQ2lyY2xlU3RyaW5nKG8sIHN5bWIpIHsKKyAgICBpZiAoIShv
IGluc3RhbmNlb2Ygc2NfUGFpciB8fAorCSAgbyBpbnN0YW5jZW9mIHNjX1ZlY3RvcikpCisJcmV0
dXJuIHNjX3RvV3JpdGVTdHJpbmcobyk7CisgICAgcmV0dXJuIG8uc2NfdG9Xcml0ZUNpcmNsZVN0
cmluZyhzeW1iKTsKK30KK3NjX1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcg
PSBmdW5jdGlvbihzeW1iLCBpbkxpc3QpIHsKKyAgICBpZiAodGhpc1tzeW1iICsgInVzZSJdKSB7
IC8vIHVzZS1mbGFnIGlzIHNldC4gSnVzdCB1c2UgaXQuCisJdmFyIG5iID0gdGhpc1tzeW1iICsg
Im5iIl07CisJaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBpZiB3ZSBhcmUgdGhlIGxhc3Qg
dXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwkgICAgZGVsZXRlIHRoaXNbc3ltYl07CisJICAgIGRl
bGV0ZSB0aGlzW3N5bWIgKyAibmIiXTsKKwkgICAgZGVsZXRlIHRoaXNbc3ltYiArICJ1c2UiXTsK
Kwl9CisJaWYgKGluTGlzdCkKKwkgICAgcmV0dXJuICcuICMnICsgbmIgKyAnIyc7CisJZWxzZQor
CSAgICByZXR1cm4gJyMnICsgbmIgKyAnIyc7CisgICAgfQorICAgIGlmICh0aGlzW3N5bWJdLS0g
PT09IDApIHsgLy8gaWYgd2UgYXJlIHRoZSBsYXN0IHVzZS4gcmVtb3ZlIGFsbCBmaWVsZHMuCisJ
ZGVsZXRlIHRoaXNbc3ltYl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJuYiJdOworCWRlbGV0ZSB0
aGlzW3N5bWIgKyAidXNlIl07CisgICAgfQorCisgICAgdmFyIHJlcyA9ICIiOworICAgIAorICAg
IGlmICh0aGlzW3N5bWJdICE9PSB1bmRlZmluZWQpIHsgLy8gaW1wbGllcyA+IDAKKwl0aGlzW3N5
bWIgKyAidXNlIl0gPSB0cnVlOworCWlmIChpbkxpc3QpCisJICAgIHJlcyArPSAnLiAjJyArIHRo
aXNbc3ltYiArICJuYiJdICsgJz0nOworCWVsc2UKKwkgICAgcmVzICs9ICcjJyArIHRoaXNbc3lt
YiArICJuYiJdICsgJz0nOworCWluTGlzdCA9IGZhbHNlOworICAgIH0KKworICAgIGlmICghaW5M
aXN0KQorCXJlcyArPSAiKCI7CisgICAgCisgICAgLy8gcHJpbnQgY2FyCisgICAgcmVzICs9IHNj
X2dlblRvV3JpdGVDaXJjbGVTdHJpbmcodGhpcy5jYXIsIHN5bWIpOworICAgIAorICAgIGlmIChz
Y19pc1BhaXIodGhpcy5jZHIpKSB7CisJcmVzICs9ICIgIiArIHRoaXMuY2RyLnNjX3RvV3JpdGVD
aXJjbGVTdHJpbmcoc3ltYiwgdHJ1ZSk7CisgICAgfSBlbHNlIGlmICh0aGlzLmNkciAhPT0gbnVs
bCkgeworCXJlcyArPSAiIC4gIiArIHNjX2dlblRvV3JpdGVDaXJjbGVTdHJpbmcodGhpcy5jZHIs
IHN5bWIpOworICAgIH0KKyAgICBpZiAoIWluTGlzdCkKKwlyZXMgKz0gIikiOworICAgIHJldHVy
biByZXM7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b1dyaXRlQ2lyY2xlU3RyaW5nID0g
ZnVuY3Rpb24oc3ltYikgeworICAgIGlmICh0aGlzW3N5bWIgKyAidXNlIl0pIHsgLy8gdXNlLWZs
YWcgaXMgc2V0LiBKdXN0IHVzZSBpdC4KKwl2YXIgbmIgPSB0aGlzW3N5bWIgKyAibmIiXTsKKwlp
ZiAodGhpc1tzeW1iXS0tID09PSAwKSB7IC8vIGlmIHdlIGFyZSB0aGUgbGFzdCB1c2UuIHJlbW92
ZSBhbGwgZmllbGRzLgorCSAgICBkZWxldGUgdGhpc1tzeW1iXTsKKwkgICAgZGVsZXRlIHRoaXNb
c3ltYiArICJuYiJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgInVzZSJdOworCX0KKwlyZXR1
cm4gJyMnICsgbmIgKyAnIyc7CisgICAgfQorICAgIGlmICh0aGlzW3N5bWJdLS0gPT09IDApIHsg
Ly8gaWYgd2UgYXJlIHRoZSBsYXN0IHVzZS4gcmVtb3ZlIGFsbCBmaWVsZHMuCisJZGVsZXRlIHRo
aXNbc3ltYl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJuYiJdOworCWRlbGV0ZSB0aGlzW3N5bWIg
KyAidXNlIl07CisgICAgfQorCisgICAgdmFyIHJlcyA9ICIiOworICAgIGlmICh0aGlzW3N5bWJd
ICE9PSB1bmRlZmluZWQpIHsgLy8gaW1wbGllcyA+IDAKKwl0aGlzW3N5bWIgKyAidXNlIl0gPSB0
cnVlOworCXJlcyArPSAnIycgKyB0aGlzW3N5bWIgKyAibmIiXSArICc9JzsKKyAgICB9CisgICAg
cmVzICs9ICIjKCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7
CisJcmVzICs9IHNjX2dlblRvV3JpdGVDaXJjbGVTdHJpbmcodGhpc1tpXSwgc3ltYik7CisJaWYg
KGkgPCB0aGlzLmxlbmd0aCAtIDEpIHJlcyArPSAiICI7CisgICAgfQorICAgIHJlcyArPSAiKSI7
CisgICAgcmV0dXJuIHJlczsKK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tIHByaW50IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19wcmludChzKSB7CisgICAgaWYg
KGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKKwlzY19kaXNwbGF5KHMpOworCXNjX25ld2xpbmUo
KTsKKyAgICB9CisgICAgZWxzZSB7CisJZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVu
Z3RoOyBpKyspCisJICAgIHNjX2Rpc3BsYXkoYXJndW1lbnRzW2ldKTsKKwlzY19uZXdsaW5lKCk7
CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gZm9ybWF0IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZm9ybWF0KHMsIGFyZ3MpIHsKKyAgIHZhciBsZW4gPSBz
Lmxlbmd0aDsKKyAgIHZhciBwID0gbmV3IHNjX1N0cmluZ091dHB1dFBvcnQoKTsKKyAgIHZhciBp
ID0gMCwgaiA9IDE7CisKKyAgIHdoaWxlKCBpIDwgbGVuICkgeworICAgICAgdmFyIGkyID0gcy5p
bmRleE9mKCJ+IiwgaSk7CisKKyAgICAgIGlmIChpMiA9PSAtMSkgeworCSAgcC5hcHBlbmRKU1N0
cmluZyggcy5zdWJzdHJpbmcoIGksIGxlbiApICk7CisJICByZXR1cm4gcC5jbG9zZSgpOworICAg
ICAgfSBlbHNlIHsKKwkgaWYgKGkyID4gaSkgeworCSAgICBpZiAoaTIgPT0gKGxlbiAtIDEpKSB7
CisJCXAuYXBwZW5kSlNTdHJpbmcocy5zdWJzdHJpbmcoaSwgbGVuKSk7CisJCXJldHVybiBwLmNs
b3NlKCk7CisJICAgIH0gZWxzZSB7CisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmcocy5zdWJzdHJp
bmcoaSwgaTIpKTsKKwkgICAgICAgaSA9IGkyOworCSAgICB9CisJIH0KKworCSBzd2l0Y2gocy5j
aGFyQ29kZUF0KGkyICsgMSkpIHsKKwkgICAgY2FzZSA2NToKKwkgICAgY2FzZSA5NzoKKwkgICAg
ICAgLy8gYQorCSAgICAgICBzY19kaXNwbGF5KGFyZ3VtZW50c1tqXSwgcCk7CisJICAgICAgIGkg
Kz0gMjsgaisrOworCSAgICAgICBicmVhazsKKworCSAgICBjYXNlIDgzOgorCSAgICBjYXNlIDEx
NToKKwkgICAgICAgLy8gcworCSAgICAgICBzY193cml0ZShhcmd1bWVudHNbal0sIHApOworCSAg
ICAgICBpICs9IDI7IGorKzsKKwkgICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSA4NjoKKwkgICAg
Y2FzZSAxMTg6CisJICAgICAgIC8vIHYKKwkgICAgICAgc2NfZGlzcGxheShhcmd1bWVudHNbal0s
IHApOworCSAgICAgICBwLmFwcGVuZEpTU3RyaW5nKCJcbiIpOworCSAgICAgICBpICs9IDI7IGor
KzsKKwkgICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSA2NzoKKwkgICAgY2FzZSA5OToKKwkgICAg
ICAgLy8gYworCSAgICAgICBwLmFwcGVuZEpTU3RyaW5nKFN0cmluZy5mcm9tQ2hhckNvZGUoYXJn
dW1lbnRzW2pdKSk7CisJICAgICAgIGkgKz0gMjsgaisrOworCSAgICAgICBicmVhazsKKworCSAg
ICBjYXNlIDg4OgorCSAgICBjYXNlIDEyMDoKKwkgICAgICAgLy8geAorCSAgICAgICBwLmFwcGVu
ZEpTU3RyaW5nKGFyZ3VtZW50c1tqXS50b1N0cmluZyg2KSk7CisJICAgICAgIGkgKz0gMjsgaisr
OworCSAgICAgICBicmVhazsKKworCSAgICBjYXNlIDc5OgorCSAgICBjYXNlIDExMToKKwkgICAg
ICAgLy8gbworCSAgICAgICBwLmFwcGVuZEpTU3RyaW5nKGFyZ3VtZW50c1tqXS50b1N0cmluZyg4
KSk7CisJICAgICAgIGkgKz0gMjsgaisrOworCSAgICAgICBicmVhazsKKworCSAgICBjYXNlIDY2
OgorCSAgICBjYXNlIDk4OgorCSAgICAgICAvLyBiCisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmco
YXJndW1lbnRzW2pdLnRvU3RyaW5nKDIpKTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAg
IGJyZWFrOworCSAgICAgICAKKwkgICAgY2FzZSAzNzoKKwkgICAgY2FzZSAxMTA6CisJICAgICAg
IC8vICUsIG4KKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZygiXG4iKTsKKwkgICAgICAgaSArPSAy
OyBicmVhazsKKworCSAgICBjYXNlIDExNDoKKwkgICAgICAgLy8gcgorCSAgICAgICBwLmFwcGVu
ZEpTU3RyaW5nKCJcciIpOworCSAgICAgICBpICs9IDI7IGJyZWFrOworCisJICAgIGNhc2UgMTI2
OgorCSAgICAgICAvLyB+CisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoIn4iKTsKKwkgICAgICAg
aSArPSAyOyBicmVhazsKKworCSAgICBkZWZhdWx0OgorCSAgICAgICBzY19lcnJvciggImZvcm1h
dDogaWxsZWdhbCB+IgorCQkJICsgU3RyaW5nLmZyb21DaGFyQ29kZShzLmNoYXJDb2RlQXQoaTIg
KyAxKSkKKwkJCSArICIgc2VxdWVuY2UiICk7CisJICAgICAgIHJldHVybiAiIjsKKwkgfQorICAg
ICAgfQorICAgfQorCisgICByZXR1cm4gcC5jbG9zZSgpOworfQorCisvKiAtLS0tLS0tLS0tLS0t
LS0tLS0gZ2xvYmFsIHBvcnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCisKK3ZhciBTQ19ERUZBVUxUX0lOID0gbmV3IHNjX0Vycm9ySW5wdXRQ
b3J0KCk7Cit2YXIgU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfRXJyb3JPdXRwdXRQb3J0KCk7Cit2
YXIgU0NfRVJST1JfT1VUID0gbmV3IHNjX0Vycm9yT3V0cHV0UG9ydCgpOworCit2YXIgc2NfU1lN
Qk9MX1BSRUZJWCA9ICJcdTFFOUMiOwordmFyIHNjX0tFWVdPUkRfUFJFRklYID0gIlx1MUU5RCI7
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpZCkpKSAq
LworZnVuY3Rpb24gc2NfanNzdHJpbmcyc3RyaW5nKHMpIHsKKyAgICByZXR1cm4gczsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAiJ1xc
dTFFOUMnICsiKSkpCisqLworZnVuY3Rpb24gc2NfanNzdHJpbmcyc3ltYm9sKHMpIHsKKyAgICBy
ZXR1cm4gc2NfU1lNQk9MX1BSRUZJWCArIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChpZCkpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZzJqc3N0
cmluZyhzKSB7CisgICAgcmV0dXJuIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChzeW1ib2wyanNzdHJpbmdfaW1tdXRhYmxlKSkpCisqLworZnVu
Y3Rpb24gc2Nfc3ltYm9sMmpzc3RyaW5nKHMpIHsKKyAgICByZXR1cm4gcy5zbGljZSgxKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
Ii5zbGljZSgxKSIpKSkKKyovCitmdW5jdGlvbiBzY19rZXl3b3JkMmpzc3RyaW5nKGspIHsKKyAg
ICByZXR1cm4gay5zbGljZSgxKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAocGVlcGhvbGUgKHByZWZpeCAiJ1xcdTFFOUQnICsiKSkpCisqLworZnVuY3Rpb24gc2Nf
anNzdHJpbmcya2V5d29yZChzKSB7CisgICAgcmV0dXJuIHNjX0tFWVdPUkRfUFJFRklYICsgczsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyov
CitmdW5jdGlvbiBzY19pc0tleXdvcmQocykgeworICAgIHJldHVybiAodHlwZW9mIHMgPT09ICJz
dHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSA9PT0gc2NfS0VZV09SRF9QUkVGSVgpOworfQorCisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfZ2Vuc3ltID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIGNvdW50ZXIgPSAxMDAwOworICAgIHJldHVybiBmdW5jdGlvbihzeW0pIHsKKwlj
b3VudGVyKys7CisJaWYgKCFzeW0pIHN5bSA9IHNjX1NZTUJPTF9QUkVGSVg7CisJcmV0dXJuIHN5
bSArICJzIiArIGNvdW50ZXIgKyAifiIgKyAiXnNDLUdlTnNZbSAiOworICAgIH07Cit9KCk7CisK
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitm
dW5jdGlvbiBzY19pc0VxdWFsKG8xLCBvMikgeworICAgIHJldHVybiAoKG8xID09PSBvMikgfHwK
KwkgICAgKHNjX2lzUGFpcihvMSkgJiYgc2NfaXNQYWlyKG8yKQorCSAgICAgJiYgc2NfaXNQYWly
RXF1YWwobzEsIG8yLCBzY19pc0VxdWFsKSkgfHwKKwkgICAgKHNjX2lzVmVjdG9yKG8xKSAmJiBz
Y19pc1ZlY3RvcihvMikKKwkgICAgICYmIHNjX2lzVmVjdG9yRXF1YWwobzEsIG8yLCBzY19pc0Vx
dWFsKSkpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgbnVtYmVyLT5zeW1ib2wgaW50ZWdlci0+
c3ltYm9sKSkgKi8KK2Z1bmN0aW9uIHNjX251bWJlcjJzeW1ib2woeCwgcmFkaXgpIHsKKyAgICBy
ZXR1cm4gc2NfU1lNQk9MX1BSRUZJWCArIHNjX251bWJlcjJqc3N0cmluZyh4LCByYWRpeCk7Cit9
CisgICAgCisvKioqIE1FVEEgKChleHBvcnQgbnVtYmVyLT5zdHJpbmcgaW50ZWdlci0+c3RyaW5n
KSkgKi8KK3ZhciBzY19udW1iZXIyc3RyaW5nID0gc2NfbnVtYmVyMmpzc3RyaW5nOworCisvKioq
IE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfc3ltYm9sMm51bWJlcihzLCByYWRp
eCkgeworICAgIHJldHVybiBzY19qc3N0cmluZzJudW1iZXIocy5zbGljZSgxKSwgcmFkaXgpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX3N0cmluZzJudW1iZXIgPSBz
Y19qc3N0cmluZzJudW1iZXI7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChwcmVmaXggIisiIHMpKSkKKyAgICAgICAgICAgOzsgcGVlcGhvbGUgd2lsbCBv
bmx5IGFwcGx5IGlmIG5vIHJhZGl4IGlzIGdpdmVuLgorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZzJp
bnRlZ2VyKHMsIHJhZGl4KSB7CisgICAgaWYgKCFyYWRpeCkgcmV0dXJuICtzOworICAgIHJldHVy
biBwYXJzZUludChzLCByYWRpeCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwcmVmaXggIisiKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMnJl
YWwocykgeworICAgIHJldHVybiArczsKK30KKworCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3ltYm9sKHMpIHsKKyAg
ICByZXR1cm4gKHR5cGVvZiBzID09PSAic3RyaW5nIikgJiYKKwkocy5jaGFyQXQoMCkgPT09IHNj
X1NZTUJPTF9QUkVGSVgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAoc3ltYm9sMnN0cmluZ19pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19z
eW1ib2wyc3RyaW5nKHMpIHsKKyAgICByZXR1cm4gcy5zbGljZSgxKTsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAiJ1xcdTFFOUMnICsi
KSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMnN5bWJvbChzKSB7CisgICAgcmV0dXJuIHNjX1NZ
TUJPTF9QUkVGSVggKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgc3ltYm9sLWFwcGVuZCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChzeW1ib2xBcHBlbmRfaW1tdXRhYmxlKSkpCisqLworZnVu
Y3Rpb24gc2Nfc3ltYm9sQXBwZW5kKCkgeworICAgIHZhciByZXMgPSBzY19TWU1CT0xfUFJFRklY
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCXJlcyAr
PSBhcmd1bWVudHNbaV0uc2xpY2UoMSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi52YWwiKSkpCisq
LworZnVuY3Rpb24gc2NfY2hhcjJzdHJpbmcoYykgeyByZXR1cm4gYy52YWw7IH0KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMSAiJ1xcdTFFOUMn
ICsgIiBjICIudmFsIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NoYXIyc3ltYm9sKGMpIHsgcmV0dXJu
IHNjX1NZTUJPTF9QUkVGSVggKyBjLnZhbDsgfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nKHMpIHsKKyAg
ICByZXR1cm4gKHR5cGVvZiBzID09PSAic3RyaW5nIikgJiYKKwkocy5jaGFyQXQoMCkgIT09IHNj
X1NZTUJPTF9QUkVGSVgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNj
X21ha2VTdHJpbmcgPSBzY19tYWtlanNTdHJpbmc7CisKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KSkgKi8KK2Z1bmN0aW9uIHNjX3N0cmluZygpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
Z3VtZW50cy5sZW5ndGg7IGkrKykKKwlhcmd1bWVudHNbaV0gPSBhcmd1bWVudHNbaV0udmFsOwor
ICAgIHJldHVybiAiIi5jb25jYXQuYXBwbHkoIiIsIGFyZ3VtZW50cyk7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIubGVuZ3RoIikp
KQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0xlbmd0aChzKSB7IHJldHVybiBzLmxlbmd0aDsgfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfc3RyaW5nUmVmKHMsIGsp
IHsKKyAgICByZXR1cm4gbmV3IHNjX0NoYXIocy5jaGFyQXQoaykpOworfQorCisvKiB0aGVyZSdz
IG5vIHN0cmluZ1NldCBpbiB0aGUgaW1tdXRhYmxlIHZlcnNpb24KK2Z1bmN0aW9uIHNjX3N0cmlu
Z1NldChzLCBrLCBjKQorKi8KKworCisvKioqIE1FVEEgKChleHBvcnQgc3RyaW5nPT8pCisJICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgc3RyMSAiID09PSAiIHN0
cjIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0cmluZ0VxdWFsKHMxLCBzMikgeworICAgIHJldHVy
biBzMSA9PT0gczI7Cit9CisvKioqIE1FVEEgKChleHBvcnQgc3RyaW5nPD8pCisJICAgKHR5cGUg
Ym9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgc3RyMSAiIDwgIiBzdHIyKSkpCisq
LworZnVuY3Rpb24gc2NfaXNTdHJpbmdMZXNzKHMxLCBzMikgeworICAgIHJldHVybiBzMSA8IHMy
OworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0cmluZz4/KQorCSAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEgIiA+ICIgc3RyMikpKQorKi8KK2Z1bmN0aW9u
IHNjX2lzU3RyaW5nR3JlYXRlcihzMSwgczIpIHsKKyAgICByZXR1cm4gczEgPiBzMjsKK30KKy8q
KiogTUVUQSAoKGV4cG9ydCBzdHJpbmc8PT8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDIgc3RyMSAiIDw9ICIgc3RyMikpKQorKi8KK2Z1bmN0aW9uIHNjX2lz
U3RyaW5nTGVzc0VxdWFsKHMxLCBzMikgeworICAgIHJldHVybiBzMSA8PSBzMjsKK30KKy8qKiog
TUVUQSAoKGV4cG9ydCBzdHJpbmc+PT8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChob2xlIDIgc3RyMSAiID49ICIgc3RyMikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3Ry
aW5nR3JlYXRlckVxdWFsKHMxLCBzMikgeworICAgIHJldHVybiBzMSA+PSBzMjsKK30KKy8qKiog
TUVUQSAoKGV4cG9ydCBzdHJpbmctY2k9PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA9PT0gIiBzdHIyICIudG9Mb3dl
ckNhc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0cmluZ0NJRXF1YWwoczEsIHMyKSB7Cisg
ICAgcmV0dXJuIHMxLnRvTG93ZXJDYXNlKCkgPT09IHMyLnRvTG93ZXJDYXNlKCk7Cit9CisvKioq
IE1FVEEgKChleHBvcnQgc3RyaW5nLWNpPD8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDIgc3RyMSAiLnRvTG93ZXJDYXNlKCkgPCAiIHN0cjIgIi50b0xvd2Vy
Q2FzZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nQ0lMZXNzKHMxLCBzMikgeworICAg
IHJldHVybiBzMS50b0xvd2VyQ2FzZSgpIDwgczIudG9Mb3dlckNhc2UoKTsKK30KKy8qKiogTUVU
QSAoKGV4cG9ydCBzdHJpbmctY2k+PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVl
cGhvbGUgKGhvbGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA+ICIgc3RyMiAiLnRvTG93ZXJDYXNl
KCkiKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdDSUdyZWF0ZXIoczEsIHMyKSB7CisgICAg
cmV0dXJuIHMxLnRvTG93ZXJDYXNlKCkgPiBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRB
ICgoZXhwb3J0IHN0cmluZy1jaTw9PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVl
cGhvbGUgKGhvbGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA8PSAiIHN0cjIgIi50b0xvd2VyQ2Fz
ZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nQ0lMZXNzRXF1YWwoczEsIHMyKSB7Cisg
ICAgcmV0dXJuIHMxLnRvTG93ZXJDYXNlKCkgPD0gczIudG9Mb3dlckNhc2UoKTsKK30KKy8qKiog
TUVUQSAoKGV4cG9ydCBzdHJpbmctY2k+PT8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDIgc3RyMSAiLnRvTG93ZXJDYXNlKCkgPj0gIiBzdHIyICIudG9Mb3dl
ckNhc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0cmluZ0NJR3JlYXRlckVxdWFsKHMxLCBz
MikgeworICAgIHJldHVybiBzMS50b0xvd2VyQ2FzZSgpID49IHMyLnRvTG93ZXJDYXNlKCk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDMg
cyAiLnN1YnN0cmluZygiIHN0YXJ0ICIsICIgZW5kICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N1
YnN0cmluZyhzLCBzdGFydCwgZW5kKSB7CisgICAgcmV0dXJuIHMuc3Vic3RyaW5nKHN0YXJ0LCBl
bmQpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3Vi
c3RyaW5nX2F0KHMxLCBzMiwgaSkgeworICAgIHJldHVybiBzMiA9PSBzMS5zdWJzdHJpbmcoaSwg
aSsgczIubGVuZ3RoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKGluZml4IDAgI2YgIisiICInJyIpKSkKKyovCitmdW5jdGlvbiBzY19zdHJpbmdB
cHBlbmQoKSB7CisgICAgcmV0dXJuICIiLmNvbmNhdC5hcHBseSgiIiwgYXJndW1lbnRzKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19zdHJpbmcybGlzdCA9IHNjX2pz
c3RyaW5nMmxpc3Q7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbGlzdDJz
dHJpbmcgPSBzY19saXN0Mmpzc3RyaW5nOworCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaWQpKSkKKyovCitmdW5jdGlvbiBzY19zdHJpbmdDb3B5KHMpIHsK
KyAgICByZXR1cm4gczsKK30KKworLyogdGhlcmUncyBubyBzdHJpbmctZmlsbCBpbiB0aGUgaW1t
dXRhYmxlIHZlcnNpb24KK2Z1bmN0aW9uIHNjX3N0cmluZ0ZpbGwocywgYykKKyovCisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuc2xpY2Uo
MSkiKSkpCisqLworZnVuY3Rpb24gc2Nfa2V5d29yZDJzdHJpbmcobykgeworICAgIHJldHVybiBv
LnNsaWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocHJlZml4ICInXFx1MUU5RCcgKyIpKSkKKyovCitmdW5jdGlvbiBzY19zdHJpbmcya2V5
d29yZChvKSB7CisgICAgcmV0dXJuIHNjX0tFWVdPUkRfUFJFRklYICsgbzsKK30KKworU3RyaW5n
LnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhp
cy5jaGFyQXQoMCkgPT09IHNjX1NZTUJPTF9QUkVGSVgpCisJLy8gVE9ETzogY2FyZSBmb3Igc3lt
Ym9scyB3aXRoIHNwYWNlcyAoZXNjYXBlLWNoYXJzIHN5bWJvbHMpLgorCXJldHVybiB0aGlzLnNs
aWNlKDEpOworICAgIGVsc2UgaWYgKHRoaXMuY2hhckF0KDApID09PSBzY19LRVlXT1JEX1BSRUZJ
WCkKKwlyZXR1cm4gIjoiICsgdGhpcy5zbGljZSgxKTsKKyAgICBlbHNlCisJcmV0dXJuIHRoaXMu
dG9TdHJpbmcoKTsKK307CisKK1N0cmluZy5wcm90b3R5cGUuc2NfdG9Xcml0ZVN0cmluZyA9IGZ1
bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmNoYXJBdCgwKSA9PT0gc2NfU1lNQk9MX1BSRUZJWCkK
KwkvLyBUT0RPOiBjYXJlIGZvciBzeW1ib2xzIHdpdGggc3BhY2VzIChlc2NhcGUtY2hhcnMgc3lt
Ym9scykuCisJcmV0dXJuIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZSBpZiAodGhpcy5jaGFyQXQo
MCkgPT09IHNjX0tFWVdPUkRfUFJFRklYKQorCXJldHVybiAiOiIgKyB0aGlzLnNsaWNlKDEpOwor
ICAgIGVsc2UKKwlyZXR1cm4gJyInICsgc2NfZXNjYXBlV3JpdGVTdHJpbmcodGhpcykgKyAnIic7
Cit9OworLyogRXhwb3J0ZWQgVmFyaWFibGVzICovCit2YXIgQmdMX3Rlc3R6ZDJib3llcnpkMjsK
K3ZhciBCZ0xfbmJveWVyemQyYmVuY2htYXJremQyOwordmFyIEJnTF9zZXR1cHpkMmJveWVyemQy
OworLyogRW5kIEV4cG9ydHMgKi8KKwordmFyIHRyYW5zbGF0ZV90ZXJtX25ib3llcjsKK3ZhciB0
cmFuc2xhdGVfYXJnc19uYm95ZXI7Cit2YXIgdW50cmFuc2xhdGVfdGVybV9uYm95ZXI7Cit2YXIg
QmdMX3NjX3N5bWJvbHpkMnplM3N5bWJvbHpkMnJlY29yZF8xemUzX25ib3llcjsKK3ZhciBCZ0xf
c2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFsaXN0emEyXzJ6MDBfbmJveWVyOwordmFyIHRyYW5z
bGF0ZV9hbGlzdF9uYm95ZXI7Cit2YXIgYXBwbHlfc3Vic3RfbmJveWVyOwordmFyIGFwcGx5X3N1
YnN0X2xzdF9uYm95ZXI7Cit2YXIgdGF1dG9sb2d5cF9uYm95ZXI7Cit2YXIgaWZfY29uc3RydWN0
b3JfbmJveWVyOwordmFyIHJld3JpdGVfY291bnRfbmJveWVyOwordmFyIHJld3JpdGVfbmJveWVy
OwordmFyIHJld3JpdGVfYXJnc19uYm95ZXI7Cit2YXIgdW5pZnlfc3Vic3RfbmJveWVyOwordmFy
IG9uZV93YXlfdW5pZnkxX25ib3llcjsKK3ZhciBmYWxzZV90ZXJtX25ib3llcjsKK3ZhciB0cnVl
X3Rlcm1fbmJveWVyOwordmFyIHRyYW5zX29mX2ltcGxpZXMxX25ib3llcjsKK3ZhciBpc190ZXJt
X2VxdWFsX25ib3llcjsKK3ZhciBpc190ZXJtX21lbWJlcl9uYm95ZXI7Cit2YXIgY29uc3RfbmJv
eWVyOwordmFyIHNjX2NvbnN0XzNfbmJveWVyOwordmFyIHNjX2NvbnN0XzRfbmJveWVyOworewor
ICAgIChzY19jb25zdF80X25ib3llciA9IChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ltcGxpZXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
aW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3UiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN1IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLG51bGwpKSkpKSksbnVsbCkp
KSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ci
LG51bGwpKSkpKSksbnVsbCkpKSkpKSk7CisgICAgKHNjX2NvbnN0XzNfbmJveWVyID0gc2NfbGlz
dCgobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNjb21waWxlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Zvcm0iLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2NvZGVnZW4iLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29wdGlt
aXplIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Zvcm0iLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZXFwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2dyZWF0ZXJwIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVz
c2VxcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRl
cmVxcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYm9vbGVh
biIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIs
bnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZiIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZmYiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGll
cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
KSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNldmVuMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29kZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDc3ViMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnRwcy0iLChuZXcgc2NfUGFpcigiXHUxRTlDbCIs
KG5ldyBzY19QYWlyKCJcdTFFOUNwcmVkIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2NvdW50cHMtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3ByZWQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8i
LG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFjdC0iLChuZXcgc2NfUGFpcigi
XHUxRTlDaSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFjdC1s
b29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNyZXZlcnNlLSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlLWxvb3AiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmlsIixudWxsKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaXZpZGVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWlu
ZGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkp
KSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhc3N1bWUtdHJ1ZSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN2YXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYWxpc3QiLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKCJcdTFFOUN2YXIiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3QiLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYWxp
c3QiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXNzdW1lLWZhbHNlIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3ZhciIsKG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNh
bGlzdCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0YXV0b2xvZ3ktY2hlY2tlciIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUN0YXV0b2xvZ3lwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3JtYWxpemUi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWxzaWZ5Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2ZhbHNpZnkxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3JtYWxp
emUiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwcmltZSIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSksbnVsbCkpKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwcmltZTEiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc3ViMSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNx
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51
bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWly
KCJcdTFFOUNxIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lm
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3QiLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51bGwpKSkpKSkpKSxu
dWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3AiLG51
bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2ltcGxpZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNxIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lm
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3QiLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVs
bCkpKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSxudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
emVybyIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNiIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLG51bGwpKSkpKSkpKSwobmV3IHNj
X1BhaXIoIlx1MUU5Q2QiLChuZXcgc2NfUGFpcigiXHUxRTlDZSIsbnVsbCkpKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ii
LChuZXcgc2NfUGFpcigiXHUxRTlDZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNlIixudWxsKSkpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUx
RTlDYyIsKG5ldyBzY19QYWlyKCJcdTFFOUNkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2UiLG51bGwp
KSkpKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkp
KSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bs
dXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUx
RTlDYiIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFp
cigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Zp
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSksbnVsbCkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
emVybyIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2Ui
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q251bWJlcnAiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwp
KSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzLXRy
ZWUiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSksKG5l
dyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLChu
ZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy1mcmluZ2UiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5k
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigi
XHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBl
bmQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIs
bnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNy
ZXZlcnNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVs
bCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4ZWMiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNwZHMiLChuZXcgc2NfUGFp
cigiXHUxRTlDZW52cm4iLG51bGwpKSkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNleGVjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2V4ZWMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUNwZHMiLChuZXcgc2NfUGFpcigiXHUxRTlDZW52cm4iLG51bGwpKSkpKSkpKSwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VudnJuIixudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWMtZmxhdHRlbiIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29yIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3Ro
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDaW50ZXJzZWN0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigi
XHUxRTlDYyIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVtYmVyIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlD
YSIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbnRoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSks
KG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNleHAiLChuZXcgc2NfUGFpcigi
XHUxRTlDaSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNqIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFp
cigiXHUxRTlDaiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
eHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNrIixudWxsKSkp
KSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2ki
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2oiLChuZXcgc2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlD
aiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcmV2ZXJzZS1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBl
bmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3JldmVyc2UtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnQtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzb3J0LWxwIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2NvdW50LWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2NvdW50LWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlD
YyIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNyZW1haW5kZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3F1
b3RpZW50IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3Bvd2VyLWV2YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2JpZy1wbHVzMSIs
KG5ldyBzY19QYWlyKCJcdTFFOUNsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFp
cigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wi
LChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5
Q2kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUx
RTlDYmFzZSIsbnVsbCkpKSkpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDaSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIo
KDEpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVs
bCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNyZW1haW5kZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVy
byIsbnVsbCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3Ai
LChuZXcgc2NfUGFpcigiXHUxRTlDaiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNqIiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSksbnVsbCkpKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItcmVwIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3Bvd2VyLWV2YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Jp
Zy1wbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1yZXAiLChuZXcg
c2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bvd2VyLXJlcCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNqIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUxRTlDYmFz
ZSIsbnVsbCkpKSkpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlD
aSIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2djZCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJc
dTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVu
ZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnRoIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNudGgiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcgc2NfUGFpcigiXHUx
RTlDYSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSks
IChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ci
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNk
aWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcmVtYWluZGVyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIs
KG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bs
dXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkp
KSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwp
KSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigi
XHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6Iixu
dWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3ZhbHVlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3JtYWxpemUi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbHVlIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q25saXN0cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsaXN0
cCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ29waGVyIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3NhbWVmcmluZ2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3
IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlc3QtZmFjdG9yIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoKDEpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0b3IiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigoMSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Z3JlYXRlc3QtZmFjdG9yIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFp
cigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3RpbWVzLWxpc3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzLWxpc3QiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGlt
ZXMtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3ByaW1lLWxpc3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fw
cGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwcmltZS1saXN0IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lLWxp
c3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN3IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q251bWJlcnAiLChuZXcg
c2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwp
KSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3ciLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlcmVxcCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNz
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVy
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoKDEp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRl
ciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJv
IixudWxsKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlD
YiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKHNj
X2xpc3QoIlx1MUU5Q2FuZCIsIChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
c3ViMSIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc3ViMSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNiIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6
ZXJvIixudWxsKSksbnVsbCkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZGVsZXRlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
bCIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNs
ZW5ndGgiLChuZXcgc2NfUGFpcigiXHUxRTlDbCIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQyIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkZWxldGUiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzb3J0MiIsKG5ldyBzY19QYWlyKCJcdTFF
OUNsIixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Rzb3J0IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Nv
cnQyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0
aCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4MSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4MiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4MyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29u
cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4NCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDY29ucyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4NSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4NiIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4NyIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cGx1cyIsKG5ldyBzY19QYWlyKCg2KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNs
ZW5ndGgiLChuZXcgc2NfUGFpcigiXHUxRTlDeDciLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkp
KSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRk
MSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3F1b3RpZW50IiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCgyKSxudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCgyKSxudWxsKSkpKSkpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDc2lnbWEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm8iLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSksbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQx
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigiXHUx
RTlDeiIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzLXRyZWUiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmci
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzLXRyZWUiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5l
dyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q250aCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbmlsIixudWxsKSksKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xhc3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xhc3QiLChuZXcgc2NfUGFpcigiXHUx
RTlDYiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ei
LG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NhciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbGFzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSxudWxsKSkpKSwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwobmV3IHNj
X1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSwobmV3
IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2Fzc2lnbm1lbnQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigi
XHUxRTlDYiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhc3NpZ25lZHAiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbm1lbnQiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbm1lbnQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNjYXIiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2dvcGhlciIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDY2FyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRl
biIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY2RyIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNnb3BoZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSks
bnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NkciIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25z
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2dldCIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNzZXQiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWly
KCJcdTFFOUN2YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDbWVtIixudWxsKSkpKSkpKSksbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXFwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFp
cigiXHUxRTlDaSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2V0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcg
c2NfUGFpcigiXHUxRTlDbWVtIixudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpKSk7
CisgICAgKGNvbnN0X25ib3llciA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigiXHUxRTlDZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWly
KCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUx
RTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsKG5ldyBzY19QYWly
KCJcdTFFOUNkIixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51
bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdSIsKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkp
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLChuZXcgc2NfUGFpcigi
XHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRlciIs
KG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNiIixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkp
KSkpKSk7CisgICAgQmdMX25ib3llcnpkMmJlbmNobWFya3pkMiA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgYXJncyA9IG51bGw7CisgICAgICAgIGZvciAodmFyIHNjX3RtcCA9IGFyZ3VtZW50
cy5sZW5ndGggLSAxOyBzY190bXAgPj0gMDsgc2NfdG1wLS0pIHsKKyAgICAgICAgICAgIGFyZ3Mg
PSBzY19jb25zKGFyZ3VtZW50c1tzY190bXBdLCBhcmdzKTsKKyAgICAgICAgfQorICAgICAgICB2
YXIgbjsKKyAgICAgICAgcmV0dXJuICgobiA9ICgoYXJncyA9PT0gbnVsbCk/KDApOihhcmdzLmNh
cikpKSwgKEJnTF9zZXR1cHpkMmJveWVyemQyKCkpLCAoQmdMX3J1bnpkMmJlbmNobWFya3pkMigo
Im5ib3llciIrKHNjX251bWJlcjJzdHJpbmcobikpKSwgKDEpLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHJldHVybiAoQmdMX3Rlc3R6ZDJib3llcnpkMihuKSk7CisgICAgICAgIH0sIGZ1bmN0
aW9uKHJld3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoKHNjX2lzTnVtYmVyKHJld3JpdGVzKSkp
CisgICAgICAgICAgICAgICAgc3dpdGNoIChuKSB7CisgICAgICAgICAgICAgICAgY2FzZSAoMCk6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAocmV3cml0ZXM9PT0oOTUwMjQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAoMSk6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAocmV3cml0ZXM9PT0oNTkxNzc3KSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgKDIpOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKHJld3JpdGVzPT09KDE4MTM5NzUpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAoMyk6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAocmV3cml0ZXM9PT0oNTM3NTY3OCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlICg0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChy
ZXdyaXRlcz09PSgxNjQ0NTQwNikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlICg1KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRl
cz09PSg1MTUwNzczOSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSkpKTsKKyAgICB9OworICAg
IEJnTF9zZXR1cHpkMmJveWVyemQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH07CisgICAgQmdMX3Rlc3R6ZDJib3llcnpkMiA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9OworICAgIHRyYW5zbGF0ZV90ZXJtX25ib3llciA9IGZ1bmN0
aW9uKHRlcm0pIHsKKyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgcmV0dXJuICghKHRlcm0gaW5z
dGFuY2VvZiBzY19QYWlyKT90ZXJtOihuZXcgc2NfUGFpcigoQmdMX3NjX3N5bWJvbHpkMnplM3N5
bWJvbHpkMnJlY29yZF8xemUzX25ib3llcigodGVybS5jYXIpKSksICgobHN0ID0gKHRlcm0uY2Ry
KSksICgobHN0ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigodHJhbnNsYXRlX3Rlcm1fbmJv
eWVyKChsc3QuY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChsc3QuY2RyKSkpKSkpKSkp
KTsKKyAgICB9OworICAgIHRyYW5zbGF0ZV9hcmdzX25ib3llciA9IGZ1bmN0aW9uKGxzdCkgewor
ICAgICAgICB2YXIgc2NfbHN0XzU7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICByZXR1cm4g
KChsc3QgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKCgodGVybSA9IChsc3QuY2FyKSksICgh
KHRlcm0gaW5zdGFuY2VvZiBzY19QYWlyKT90ZXJtOihuZXcgc2NfUGFpcigoQmdMX3NjX3N5bWJv
bHpkMnplM3N5bWJvbHpkMnJlY29yZF8xemUzX25ib3llcigodGVybS5jYXIpKSksICh0cmFuc2xh
dGVfYXJnc19uYm95ZXIoKHRlcm0uY2RyKSkpKSkpKSwgKChzY19sc3RfNSA9IChsc3QuY2RyKSks
ICgoc2NfbHN0XzUgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKCh0cmFuc2xhdGVfdGVybV9u
Ym95ZXIoKHNjX2xzdF81LmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigoc2NfbHN0XzUu
Y2RyKSkpKSkpKSkpKTsKKyAgICB9OworICAgIHVudHJhbnNsYXRlX3Rlcm1fbmJveWVyID0gZnVu
Y3Rpb24odGVybSkgeworICAgICAgICB2YXIgb3B0ck9wbmQ7CisgICAgICAgIHZhciB0YWlsMTEz
MTsKKyAgICAgICAgdmFyIEwxMTI3OworICAgICAgICB2YXIgZmFsc2VIZWFkMTEzMDsKKyAgICAg
ICAgdmFyIHN5bWJvbF9yZWNvcmQ7CisgICAgICAgIGlmICghKHRlcm0gaW5zdGFuY2VvZiBzY19Q
YWlyKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXJtOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgKGZhbHNlSGVhZDExMzAgPSAobmV3IHNjX1BhaXIobnVsbCwg
bnVsbCkpKTsKKyAgICAgICAgICAgICAgICAoTDExMjcgPSAodGVybS5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAodGFpbDExMzEgPSBmYWxzZUhlYWQxMTMwKTsKKyAgICAgICAgICAgICAgICB3aGls
ZSAoIShMMTEyNyA9PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgKHRhaWwxMTMxLmNkciA9IChuZXcgc2NfUGFpcigodW50cmFuc2xhdGVf
dGVybV9uYm95ZXIoKEwxMTI3LmNhcikpKSwgbnVsbCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICh0YWlsMTEzMSA9ICh0YWlsMTEzMS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IChMMTEyNyA9IChMMTEyNy5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAob3B0ck9wbmQgPSAoZmFsc2VIZWFkMTEzMC5jZHIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG5ldyBzY19QYWlyKCgoc3ltYm9sX3JlY29yZCA9
ICh0ZXJtLmNhcikpLCAoc3ltYm9sX3JlY29yZFsoMCldKSksIG9wdHJPcG5kKSk7CisgICAgICAg
ICAgICB9CisgICAgfTsKKyAgICBCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6
ZTNfbmJveWVyID0gZnVuY3Rpb24oc3ltKSB7CisgICAgICAgIHZhciByOworICAgICAgICB2YXIg
eDsKKyAgICAgICAgcmV0dXJuICgoeCA9IChzY19hc3NxKHN5bSwgQmdMX3NjX3phMnN5bWJvbHpk
MnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3llcikpKSwgKCh4IT09IGZhbHNlKT8oeC5jZHIp
OigociA9IFtzeW0sIG51bGxdKSwgKEJnTF9zY196YTJzeW1ib2x6ZDJyZWNvcmRzemQyYWxpc3R6
YTJfMnowMF9uYm95ZXIgPSAobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKHN5bSwgcikpLCBCZ0xf
c2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFsaXN0emEyXzJ6MDBfbmJveWVyKSkpLCByKSkpOwor
ICAgIH07CisgICAgKEJnTF9zY196YTJzeW1ib2x6ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9u
Ym95ZXIgPSBudWxsKTsKKyAgICB0cmFuc2xhdGVfYWxpc3RfbmJveWVyID0gZnVuY3Rpb24oYWxp
c3QpIHsKKyAgICAgICAgdmFyIHNjX2FsaXN0XzY7CisgICAgICAgIHZhciB0ZXJtOworICAgICAg
ICByZXR1cm4gKChhbGlzdCA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KChhbGlzdC5jYXIuY2FyKSwgKCh0ZXJtID0gKGFsaXN0LmNhci5jZHIpKSwgKCEodGVybSBpbnN0
YW5jZW9mIHNjX1BhaXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3lt
Ym9semQycmVjb3JkXzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25i
b3llcigodGVybS5jZHIpKSkpKSkpKSksICgoc2NfYWxpc3RfNiA9IChhbGlzdC5jZHIpKSwgKChz
Y19hbGlzdF82ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoKHNjX2Fs
aXN0XzYuY2FyLmNhciksICh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKHNjX2FsaXN0XzYuY2FyLmNk
cikpKSkpLCAodHJhbnNsYXRlX2FsaXN0X25ib3llcigoc2NfYWxpc3RfNi5jZHIpKSkpKSkpKSkp
OworICAgIH07CisgICAgYXBwbHlfc3Vic3RfbmJveWVyID0gZnVuY3Rpb24oYWxpc3QsIHRlcm0p
IHsKKyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgdmFyIHRlbXBfdGVtcDsKKyAgICAgICAgcmV0
dXJuICghKHRlcm0gaW5zdGFuY2VvZiBzY19QYWlyKT8oKHRlbXBfdGVtcCA9IChzY19hc3NxKHRl
cm0sIGFsaXN0KSkpLCAoKHRlbXBfdGVtcCE9PSBmYWxzZSk/KHRlbXBfdGVtcC5jZHIpOnRlcm0p
KToobmV3IHNjX1BhaXIoKHRlcm0uY2FyKSwgKChsc3QgPSAodGVybS5jZHIpKSwgKChsc3QgPT09
IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChhcHBseV9zdWJzdF9uYm95ZXIoYWxpc3QsIChsc3Qu
Y2FyKSkpLCAoYXBwbHlfc3Vic3RfbHN0X25ib3llcihhbGlzdCwgKGxzdC5jZHIpKSkpKSkpKSkp
OworICAgIH07CisgICAgYXBwbHlfc3Vic3RfbHN0X25ib3llciA9IGZ1bmN0aW9uKGFsaXN0LCBs
c3QpIHsKKyAgICAgICAgdmFyIHNjX2xzdF83OworICAgICAgICByZXR1cm4gKChsc3QgPT09IG51
bGwpP251bGw6KG5ldyBzY19QYWlyKChhcHBseV9zdWJzdF9uYm95ZXIoYWxpc3QsIChsc3QuY2Fy
KSkpLCAoKHNjX2xzdF83ID0gKGxzdC5jZHIpKSwgKChzY19sc3RfNyA9PT0gbnVsbCk/bnVsbDoo
bmV3IHNjX1BhaXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKHNjX2xzdF83LmNhcikpKSwg
KGFwcGx5X3N1YnN0X2xzdF9uYm95ZXIoYWxpc3QsIChzY19sc3RfNy5jZHIpKSkpKSkpKSkpOwor
ICAgIH07CisgICAgdGF1dG9sb2d5cF9uYm95ZXIgPSBmdW5jdGlvbihzY194XzExLCB0cnVlX2xz
dCwgZmFsc2VfbHN0KSB7CisgICAgICAgIHZhciB0bXAxMTI1OworICAgICAgICB2YXIgeDsKKyAg
ICAgICAgdmFyIHRtcDExMjY7CisgICAgICAgIHZhciBzY194Xzg7CisgICAgICAgIHZhciBzY190
bXAxMTI1Xzk7CisgICAgICAgIHZhciBzY190bXAxMTI2XzEwOworICAgICAgICB2YXIgc2NfeF8x
MTsKKyAgICAgICAgdmFyIHRydWVfbHN0OworICAgICAgICB2YXIgZmFsc2VfbHN0OworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKCgoKHNjX3RtcDExMjZfMTAgPSAoaXNf
dGVybV9lcXVhbF9uYm95ZXIoc2NfeF8xMSwgdHJ1ZV90ZXJtX25ib3llcikpKSwgKChzY190bXAx
MTI2XzEwIT09IGZhbHNlKT9zY190bXAxMTI2XzEwOihpc190ZXJtX21lbWJlcl9uYm95ZXIoc2Nf
eF8xMSwgdHJ1ZV9sc3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoKCgoc2NfdG1wMTEyNV85
ID0gKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHNjX3hfMTEsIGZhbHNlX3Rlcm1fbmJveWVyKSkpLCAo
KHNjX3RtcDExMjVfOSE9PSBmYWxzZSk/c2NfdG1wMTEyNV85Oihpc190ZXJtX21lbWJlcl9uYm95
ZXIoc2NfeF8xMSwgZmFsc2VfbHN0KSkpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGlmICghKHNjX3hfMTEgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCgoc2NfeF8xMS5jYXIpPT09aWZfY29uc3RydWN0b3JfbmJveWVyKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoc2NfeF84ID0gKHNjX3hfMTEuY2Ry
LmNhcikpLCAodG1wMTEyNiA9IChpc190ZXJtX2VxdWFsX25ib3llcihzY194XzgsIHRydWVfdGVy
bV9uYm95ZXIpKSksICgodG1wMTEyNiE9PSBmYWxzZSk/dG1wMTEyNjooaXNfdGVybV9tZW1iZXJf
bmJveWVyKHNjX3hfOCwgdHJ1ZV9sc3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNjX3hfMTEgPSAoc2NfeF8xMS5jZHIuY2RyLmNhcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCgoKHggPSAoc2NfeF8xMS5jZHIuY2FyKSksICh0bXAxMTI1ID0gKGlzX3Rlcm1fZXF1
YWxfbmJveWVyKHgsIGZhbHNlX3Rlcm1fbmJveWVyKSkpLCAoKHRtcDExMjUhPT0gZmFsc2UpP3Rt
cDExMjU6KGlzX3Rlcm1fbWVtYmVyX25ib3llcih4LCBmYWxzZV9sc3QpKSkpIT09IGZhbHNlKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY194XzExID0gKHNjX3hfMTEu
Y2RyLmNkci5jZHIuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKHRhdXRvbG9neXBfbmJv
eWVyKChzY194XzExLmNkci5jZHIuY2FyKSwgKG5ldyBzY19QYWlyKChzY194XzExLmNkci5jYXIp
LCB0cnVlX2xzdCkpLCBmYWxzZV9sc3QpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZmFsc2VfbHN0ID0gKG5ldyBzY19QYWlyKChzY194XzExLmNkci5jYXIpLCBm
YWxzZV9sc3QpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzY194XzExID0gKHNjX3hfMTEuY2RyLmNkci5jZHIuY2FyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworICAgIChpZl9jb25z
dHJ1Y3Rvcl9uYm95ZXIgPSAiXHUxRTlDKiIpOworICAgIChyZXdyaXRlX2NvdW50X25ib3llciA9
ICgwKSk7CisgICAgcmV3cml0ZV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJtKSB7CisgICAgICAgIHZh
ciB0ZXJtMjsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMTI7CisgICAgICAgIHZhciBsc3Q7CisgICAg
ICAgIHZhciBzeW1ib2xfcmVjb3JkOworICAgICAgICB2YXIgc2NfbHN0XzEzOworICAgICAgICB7
CisgICAgICAgICAgICAoKytyZXdyaXRlX2NvdW50X25ib3llcik7CisgICAgICAgICAgICBpZiAo
ISh0ZXJtIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm07
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAoc2NfdGVybV8xMiA9IChuZXcgc2NfUGFpcigodGVybS5jYXIpLCAoKHNjX2xzdF8xMyA9ICh0
ZXJtLmNkcikpLCAoKHNjX2xzdF8xMyA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKHJld3Jp
dGVfbmJveWVyKChzY19sc3RfMTMuY2FyKSkpLCAocmV3cml0ZV9hcmdzX25ib3llcigoc2NfbHN0
XzEzLmNkcikpKSkpKSkpKSk7CisgICAgICAgICAgICAgICAgICAgIChsc3QgPSAoKHN5bWJvbF9y
ZWNvcmQgPSAodGVybS5jYXIpKSwgKHN5bWJvbF9yZWNvcmRbKDEpXSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0
ID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NfdGVybV8x
MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKCgodGVybTIgPSAoKGxzdC5jYXIpLmNkci5jYXIpKSwgKHVuaWZ5X3N1YnN0X25i
b3llciA9IG51bGwpLCAob25lX3dheV91bmlmeTFfbmJveWVyKHNjX3Rlcm1fMTIsIHRlcm0yKSkp
IT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdy
aXRlX25ib3llcigoYXBwbHlfc3Vic3RfbmJveWVyKHVuaWZ5X3N1YnN0X25ib3llciwgKChsc3Qu
Y2FyKS5jZHIuY2RyLmNhcikpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxzdCA9IChsc3QuY2RyKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Owor
ICAgIHJld3JpdGVfYXJnc19uYm95ZXIgPSBmdW5jdGlvbihsc3QpIHsKKyAgICAgICAgdmFyIHNj
X2xzdF8xNDsKKyAgICAgICAgcmV0dXJuICgobHN0ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFp
cigocmV3cml0ZV9uYm95ZXIoKGxzdC5jYXIpKSksICgoc2NfbHN0XzE0ID0gKGxzdC5jZHIpKSwg
KChzY19sc3RfMTQgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChyZXdyaXRlX25ib3llcigo
c2NfbHN0XzE0LmNhcikpKSwgKHJld3JpdGVfYXJnc19uYm95ZXIoKHNjX2xzdF8xNC5jZHIpKSkp
KSkpKSkpOworICAgIH07CisgICAgKHVuaWZ5X3N1YnN0X25ib3llciA9ICJcdTFFOUMqIik7Cisg
ICAgb25lX3dheV91bmlmeTFfbmJveWVyID0gZnVuY3Rpb24odGVybTEsIHRlcm0yKSB7CisgICAg
ICAgIHZhciBsc3QxOworICAgICAgICB2YXIgbHN0MjsKKyAgICAgICAgdmFyIHRlbXBfdGVtcDsK
KyAgICAgICAgaWYgKCEodGVybTIgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAodGVtcF90ZW1wID0gKHNjX2Fzc3EodGVybTIsIHVuaWZ5X3N1YnN0
X25ib3llcikpKTsKKyAgICAgICAgICAgICAgICBpZiAoKHRlbXBfdGVtcCE9PSBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXNfdGVybV9lcXVhbF9uYm95ZXIodGVybTEsICh0
ZW1wX3RlbXAuY2RyKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKChzY19pc051bWJlcih0ZXJtMikpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChzY19pc0VxdWFsKHRlcm0xLCB0ZXJtMikpOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHVuaWZ5X3N1YnN0X25ib3llciA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIodGVybTIsIHRl
cm0xKSksIHVuaWZ5X3N1YnN0X25ib3llcikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCEodGVybTEgaW5zdGFuY2VvZiBzY19QYWly
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgaWYgKCgodGVybTEuY2FyKT09PSh0ZXJtMi5jYXIpKSkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDEgPSAodGVybTEuY2RyKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAobHN0MiA9ICh0ZXJtMi5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKChsc3QxID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIChsc3QyID09PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0MiA9PT0gbnVsbCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgoKG9uZV93YXlfdW5pZnkxX25ib3llcigobHN0MS5jYXIpLCAobHN0Mi5j
YXIpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDEgPSAo
bHN0MS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGxzdDIgPSAobHN0Mi5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKyAgICAoZmFs
c2VfdGVybV9uYm95ZXIgPSAiXHUxRTlDKiIpOworICAgICh0cnVlX3Rlcm1fbmJveWVyID0gIlx1
MUU5QyoiKTsKKyAgICB0cmFuc19vZl9pbXBsaWVzMV9uYm95ZXIgPSBmdW5jdGlvbihuKSB7Cisg
ICAgICAgIHZhciBzY19uXzE1OworICAgICAgICByZXR1cm4gKChzY19pc0VxdWFsKG4sICgxKSkp
PyhzY19saXN0KCJcdTFFOUNpbXBsaWVzIiwgKDApLCAoMSkpKTooc2NfbGlzdCgiXHUxRTlDYW5k
IiwgKHNjX2xpc3QoIlx1MUU5Q2ltcGxpZXMiLCAobi0oMSkpLCBuKSksICgoc2Nfbl8xNSA9IChu
LSgxKSkpLCAoKHNjX2lzRXF1YWwoc2Nfbl8xNSwgKDEpKSk/KHNjX2xpc3QoIlx1MUU5Q2ltcGxp
ZXMiLCAoMCksICgxKSkpOihzY19saXN0KCJcdTFFOUNhbmQiLCAoc2NfbGlzdCgiXHUxRTlDaW1w
bGllcyIsIChzY19uXzE1LSgxKSksIHNjX25fMTUpKSwgKHRyYW5zX29mX2ltcGxpZXMxX25ib3ll
cigoc2Nfbl8xNS0oMSkpKSkpKSkpKSkpOworICAgIH07CisgICAgaXNfdGVybV9lcXVhbF9uYm95
ZXIgPSBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgIHZhciBsc3QxOworICAgICAgICB2YXIgbHN0
MjsKKyAgICAgICAgdmFyIHIyOworICAgICAgICB2YXIgcjE7CisgICAgICAgIGlmICgoeCBpbnN0
YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgaWYgKCh5IGluc3RhbmNlb2Ygc2NfUGFpcikp
CisgICAgICAgICAgICAgICAgaWYgKCgoKHIxID0gKHguY2FyKSksIChyMiA9ICh5LmNhcikpLCAo
cjE9PT1yMikpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgKGxzdDEgPSAoeC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIChs
c3QyID0gKHkuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0MSA9PT0gbnVsbCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobHN0MiA9PT0gbnVsbCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKGxzdDIgPT09IG51bGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChpc190ZXJtX2VxdWFsX25i
b3llcigobHN0MS5jYXIpLCAobHN0Mi5jYXIpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGxzdDEgPSAobHN0MS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDIgPSAobHN0Mi5jZHIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gKHNjX2lzRXF1YWwoeCwgeSkpOworICAg
IH07CisgICAgaXNfdGVybV9tZW1iZXJfbmJveWVyID0gZnVuY3Rpb24oeCwgbHN0KSB7CisgICAg
ICAgIHZhciB4OworICAgICAgICB2YXIgbHN0OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICAgICAgaWYgKChsc3QgPT09IG51bGwpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoKChpc190ZXJtX2VxdWFs
X25ib3llcih4LCAobHN0LmNhcikpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKGxz
dCA9IChsc3QuY2RyKSk7CisgICAgICAgIH0KKyAgICB9OworICAgIEJnTF9zZXR1cHpkMmJveWVy
emQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzeW1ib2xfcmVjb3JkOworICAgICAgICB2
YXIgdmFsdWU7CisgICAgICAgIHZhciBCZ0xfc2Nfc3ltYm9semQycmVjb3JkXzE2emQyOworICAg
ICAgICB2YXIgc3ltOworICAgICAgICB2YXIgc2Nfc3ltXzE3OworICAgICAgICB2YXIgdGVybTsK
KyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMTg7CisgICAgICAgIHZhciBz
Y190ZXJtXzE5OworICAgICAgICB7CisgICAgICAgICAgICAoQmdMX3NjX3phMnN5bWJvbHpkMnJl
Y29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3llciA9IG51bGwpOworICAgICAgICAgICAgKGlmX2Nv
bnN0cnVjdG9yX25ib3llciA9IChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6
ZTNfbmJveWVyKCJcdTFFOUNpZiIpKSk7CisgICAgICAgICAgICAoZmFsc2VfdGVybV9uYm95ZXIg
PSAoKHNjX3Rlcm1fMTkgPSAobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSksICghKHNjX3Rl
cm1fMTkgaW5zdGFuY2VvZiBzY19QYWlyKT9zY190ZXJtXzE5OihuZXcgc2NfUGFpcigoQmdMX3Nj
X3N5bWJvbHpkMnplM3N5bWJvbHpkMnJlY29yZF8xemUzX25ib3llcigoc2NfdGVybV8xOS5jYXIp
KSksICh0cmFuc2xhdGVfYXJnc19uYm95ZXIoKHNjX3Rlcm1fMTkuY2RyKSkpKSkpKSk7CisgICAg
ICAgICAgICAodHJ1ZV90ZXJtX25ib3llciA9ICgoc2NfdGVybV8xOCA9IChuZXcgc2NfUGFpcigi
XHUxRTlDdCIsbnVsbCkpKSwgKCEoc2NfdGVybV8xOCBpbnN0YW5jZW9mIHNjX1BhaXIpP3NjX3Rl
cm1fMTg6KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6
ZTNfbmJveWVyKChzY190ZXJtXzE4LmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigoc2Nf
dGVybV8xOC5jZHIpKSkpKSkpKTsKKyAgICAgICAgICAgIChsc3QgPSBzY19jb25zdF8zX25ib3ll
cik7CisgICAgICAgICAgICB3aGlsZSAoIShsc3QgPT09IG51bGwpKSB7CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAodGVybSA9IChsc3QuY2FyKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICgoKHRlcm0gaW5zdGFuY2VvZiBzY19QYWlyKSYmKCgodGVybS5jYXIpPT09
Ilx1MUU5Q2VxdWFsIikmJigodGVybS5jZHIuY2FyKSBpbnN0YW5jZW9mIHNjX1BhaXIpKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X3N5bV8xNyA9ICgodGVybS5jZHIuY2FyKS5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodmFsdWUgPSAobmV3IHNjX1BhaXIoKCEodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpP3Rl
cm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNf
bmJveWVyKCh0ZXJtLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigodGVybS5jZHIpKSkp
KSksICgoc3ltID0gKCh0ZXJtLmNkci5jYXIpLmNhcikpLCAoQmdMX3NjX3N5bWJvbHpkMnJlY29y
ZF8xNnpkMiA9IChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVy
KHN5bSkpKSwgKEJnTF9zY19zeW1ib2x6ZDJyZWNvcmRfMTZ6ZDJbKDEpXSkpKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2xfcmVjb3JkID0gKEJnTF9zY19zeW1ib2x6ZDJ6
ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoc2Nfc3ltXzE3KSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzeW1ib2xfcmVjb3JkWygxKV0gPSB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChzY19lcnJvcigiQURELUxFTU1BIGRpZCBub3QgbGlrZSB0ZXJtOiAgIiwgdGVy
bSkpOworICAgICAgICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH07CisgICAgQmdMX3Rlc3R6ZDJib3llcnpkMiA9IGZ1bmN0aW9uKG4pIHsKKyAgICAg
ICAgdmFyIG9wdHJPcG5kOworICAgICAgICB2YXIgdGVybTsKKyAgICAgICAgdmFyIHNjX25fMjA7
CisgICAgICAgIHZhciBhbnN3ZXI7CisgICAgICAgIHZhciBzY190ZXJtXzIxOworICAgICAgICB2
YXIgc2NfdGVybV8yMjsKKyAgICAgICAgeworICAgICAgICAgICAgKHJld3JpdGVfY291bnRfbmJv
eWVyID0gKDApKTsKKyAgICAgICAgICAgICh0ZXJtID0gc2NfY29uc3RfNF9uYm95ZXIpOworICAg
ICAgICAgICAgKHNjX25fMjAgPSBuKTsKKyAgICAgICAgICAgIHdoaWxlICghKHNjX25fMjA9PT0g
MCkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICh0ZXJtID0gKHNj
X2xpc3QoIlx1MUU5Q29yIiwgdGVybSwgKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSkpKSk7
CisgICAgICAgICAgICAgICAgICAgICgtLXNjX25fMjApOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIChzY190ZXJtXzIyID0gdGVybSk7CisgICAgICAgICAg
ICBpZiAoIShzY190ZXJtXzIyIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAg
KG9wdHJPcG5kID0gc2NfdGVybV8yMik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgKG9wdHJPcG5kID0gKG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQy
cmVjb3JkXzF6ZTNfbmJveWVyKChzY190ZXJtXzIyLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25i
b3llcigoc2NfdGVybV8yMi5jZHIpKSkpKSk7CisgICAgICAgICAgICAoc2NfdGVybV8yMSA9IChh
cHBseV9zdWJzdF9uYm95ZXIoKChjb25zdF9uYm95ZXIgPT09IG51bGwpP251bGw6KG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigoY29uc3RfbmJveWVyLmNhci5jYXIpLCAodHJhbnNsYXRlX3Rlcm1f
bmJveWVyKChjb25zdF9uYm95ZXIuY2FyLmNkcikpKSkpLCAodHJhbnNsYXRlX2FsaXN0X25ib3ll
cigoY29uc3RfbmJveWVyLmNkcikpKSkpKSwgb3B0ck9wbmQpKSk7CisgICAgICAgICAgICAoYW5z
d2VyID0gKHRhdXRvbG9neXBfbmJveWVyKChyZXdyaXRlX25ib3llcihzY190ZXJtXzIxKSksIG51
bGwsIG51bGwpKSk7CisgICAgICAgICAgICAoc2Nfd3JpdGUocmV3cml0ZV9jb3VudF9uYm95ZXIp
KTsKKyAgICAgICAgICAgIChzY19kaXNwbGF5KCIgcmV3cml0ZXMiKSk7CisgICAgICAgICAgICAo
c2NfbmV3bGluZSgpKTsKKyAgICAgICAgICAgIGlmICgoYW5zd2VyIT09IGZhbHNlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmV3cml0ZV9jb3VudF9uYm95ZXI7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKK30KKy8q
IEV4cG9ydGVkIFZhcmlhYmxlcyAqLwordmFyIEJnTF9wYXJzZXpkMnplM25iemQydHJlZXN6ZTM7
Cit2YXIgQmdMX2VhcmxleXpkMmJlbmNobWFya3pkMjsKK3ZhciBCZ0xfcGFyc2V6ZDJ6ZTNwYXJz
ZWR6ZjN6YzI7Cit2YXIgdGVzdDsKK3ZhciBCZ0xfcGFyc2V6ZDJ6ZTN0cmVlc3ozMTsKK3ZhciBC
Z0xfbWFrZXpkMnBhcnNlcnpkMjsKKy8qIEVuZCBFeHBvcnRzICovCisKK3ZhciBjb25zdF9lYXJs
ZXk7Cit7CisgICAgKGNvbnN0X2VhcmxleSA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3MiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3MiLG51bGwp
KSkpLG51bGwpKSkpKSksbnVsbCkpKTsKKyAgICBCZ0xfbWFrZXpkMnBhcnNlcnpkMiA9IGZ1bmN0
aW9uKGdyYW1tYXIsIGxleGVyKSB7CisgICAgICAgIHZhciBpOworICAgICAgICB2YXIgcGFyc2Vy
X2Rlc2NyOworICAgICAgICB2YXIgZGVmX2xvb3A7CisgICAgICAgIHZhciBuYl9udHM7CisgICAg
ICAgIHZhciBuYW1lczsKKyAgICAgICAgdmFyIHN0ZXBzOworICAgICAgICB2YXIgcHJlZGljdG9y
czsKKyAgICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIHN0YXJ0ZXJzOworICAgICAgICB2
YXIgbnRzOworICAgICAgICB2YXIgc2NfbmFtZXNfMTsKKyAgICAgICAgdmFyIHNjX3N0ZXBzXzI7
CisgICAgICAgIHZhciBzY19wcmVkaWN0b3JzXzM7CisgICAgICAgIHZhciBzY19lbmRlcnNfNDsK
KyAgICAgICAgdmFyIHNjX3N0YXJ0ZXJzXzU7CisgICAgICAgIHZhciBuYl9jb25mczsKKyAgICAg
ICAgdmFyIEJnTF9zY19kZWZ6ZDJsb29wXzZ6ZDI7CisgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJu
dHNfN3pkMjsKKyAgICAgICAgdmFyIHNjX250c184OworICAgICAgICB2YXIgQmdMX3NjX2RlZnpk
Mmxvb3BfOXpkMjsKKyAgICAgICAgdmFyIGluZDsKKyAgICAgICAgeworICAgICAgICAgICAgaW5k
ID0gZnVuY3Rpb24obnQsIHNjX250c18xMCkgeworICAgICAgICAgICAgICAgIHZhciBpOworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKGkgPSAoKHNjX250c18xMC5sZW5n
dGgpLSgxKSkpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChpPj0oMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgoc2NfaXNFcXVhbCgoc2NfbnRzXzEwW2ldKSwgbnQpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgKHNjX250c184ID0gKChCZ0xfc2NfZGVmemQybG9vcF85emQyID0gZnVu
Y3Rpb24oZGVmcywgc2NfbnRzXzExKSB7CisgICAgICAgICAgICAgICAgdmFyIHJ1bGVfbG9vcDsK
KyAgICAgICAgICAgICAgICB2YXIgaGVhZDsKKyAgICAgICAgICAgICAgICB2YXIgZGVmOworICAg
ICAgICAgICAgICAgIHJldHVybiAoKGRlZnMgaW5zdGFuY2VvZiBzY19QYWlyKT8oKGRlZiA9IChk
ZWZzLmNhcikpLCAoaGVhZCA9IChkZWYuY2FyKSksIChydWxlX2xvb3AgPSBmdW5jdGlvbihydWxl
cywgc2NfbnRzXzEyKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBudDsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgIHZhciBzY19udHNfMTM7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBydWxlOworICAgICAgICAgICAgICAgICAgICBpZiAoKHJ1bGVz
IGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHJ1bGUgPSAocnVsZXMuY2FyKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGwgPSBydWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2NfbnRzXzEzID0gc2NfbnRzXzEyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnQgPSAobC5jYXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfbnRzXzEzID0gKCgoc2NfbWVt
YmVyKG50LCBzY19udHNfMTMpKSE9PSBmYWxzZSk/c2NfbnRzXzEzOihuZXcgc2NfUGFpcihudCwg
c2NfbnRzXzEzKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKHJ1bGVfbG9vcCgocnVsZXMuY2RyKSwgc2NfbnRzXzEzKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAoQmdMX3NjX2RlZnpkMmxvb3BfOXpkMigoZGVmcy5jZHIpLCBzY19udHNfMTIp
KTsKKyAgICAgICAgICAgICAgICB9KSwgKHJ1bGVfbG9vcCgoZGVmLmNkciksICgoKHNjX21lbWJl
cihoZWFkLCBzY19udHNfMTEpKSE9PSBmYWxzZSk/c2NfbnRzXzExOihuZXcgc2NfUGFpcihoZWFk
LCBzY19udHNfMTEpKSkpKSk6KHNjX2xpc3QydmVjdG9yKChzY19yZXZlcnNlKHNjX250c18xMSkp
KSkpOworICAgICAgICAgICAgfSksIChCZ0xfc2NfZGVmemQybG9vcF85emQyKGdyYW1tYXIsIG51
bGwpKSkpOworICAgICAgICAgICAgKEJnTF9zY19uYnpkMm50c183emQyID0gKHNjX250c184Lmxl
bmd0aCkpOworICAgICAgICAgICAgKG5iX2NvbmZzID0gKCgoQmdMX3NjX2RlZnpkMmxvb3BfNnpk
MiA9IGZ1bmN0aW9uKGRlZnMsIEJnTF9zY19uYnpkMmNvbmZzXzE0emQyKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHJ1bGVfbG9vcDsKKyAgICAgICAgICAgICAgICB2YXIgZGVmOworICAgICAgICAg
ICAgICAgIHJldHVybiAoKGRlZnMgaW5zdGFuY2VvZiBzY19QYWlyKT8oKGRlZiA9IChkZWZzLmNh
cikpLCAocnVsZV9sb29wID0gZnVuY3Rpb24ocnVsZXMsIEJnTF9zY19uYnpkMmNvbmZzXzE1emQy
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICB2YXIg
QmdMX3NjX25iemQyY29uZnNfMTZ6ZDI7CisgICAgICAgICAgICAgICAgICAgIHZhciBydWxlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoKHJ1bGVzIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bGUg
PSAocnVsZXMuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSBydWxlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIgPSBC
Z0xfc2NfbmJ6ZDJjb25mc18xNXpkMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKChsIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrK0JnTF9zY19uYnpkMmNv
bmZzXzE2emQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KHJ1bGVfbG9vcCgocnVsZXMuY2RyKSwgKEJnTF9zY19uYnpkMmNvbmZzXzE2emQyKygxKSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChCZ0xfc2NfZGVmemQybG9vcF82emQyKChkZWZz
LmNkciksIEJnTF9zY19uYnpkMmNvbmZzXzE1emQyKSk7CisgICAgICAgICAgICAgICAgfSksIChy
dWxlX2xvb3AoKGRlZi5jZHIpLCBCZ0xfc2NfbmJ6ZDJjb25mc18xNHpkMikpKTpCZ0xfc2NfbmJ6
ZDJjb25mc18xNHpkMik7CisgICAgICAgICAgICB9KSwgKEJnTF9zY19kZWZ6ZDJsb29wXzZ6ZDIo
Z3JhbW1hciwgKDApKSkpK0JnTF9zY19uYnpkMm50c183emQyKSk7CisgICAgICAgICAgICAoc2Nf
c3RhcnRlcnNfNSA9IChzY19tYWtlVmVjdG9yKEJnTF9zY19uYnpkMm50c183emQyLCBudWxsKSkp
OworICAgICAgICAgICAgKHNjX2VuZGVyc180ID0gKHNjX21ha2VWZWN0b3IoQmdMX3NjX25iemQy
bnRzXzd6ZDIsIG51bGwpKSk7CisgICAgICAgICAgICAoc2NfcHJlZGljdG9yc18zID0gKHNjX21h
a2VWZWN0b3IoQmdMX3NjX25iemQybnRzXzd6ZDIsIG51bGwpKSk7CisgICAgICAgICAgICAoc2Nf
c3RlcHNfMiA9IChzY19tYWtlVmVjdG9yKG5iX2NvbmZzLCBmYWxzZSkpKTsKKyAgICAgICAgICAg
IChzY19uYW1lc18xID0gKHNjX21ha2VWZWN0b3IobmJfY29uZnMsIGZhbHNlKSkpOworICAgICAg
ICAgICAgKG50cyA9IHNjX250c184KTsKKyAgICAgICAgICAgIChzdGFydGVycyA9IHNjX3N0YXJ0
ZXJzXzUpOworICAgICAgICAgICAgKGVuZGVycyA9IHNjX2VuZGVyc180KTsKKyAgICAgICAgICAg
IChwcmVkaWN0b3JzID0gc2NfcHJlZGljdG9yc18zKTsKKyAgICAgICAgICAgIChzdGVwcyA9IHNj
X3N0ZXBzXzIpOworICAgICAgICAgICAgKG5hbWVzID0gc2NfbmFtZXNfMSk7CisgICAgICAgICAg
ICAobmJfbnRzID0gKHNjX250c184Lmxlbmd0aCkpOworICAgICAgICAgICAgKGkgPSAobmJfbnRz
LSgxKSkpOworICAgICAgICAgICAgd2hpbGUgKChpPj0oMCkpKSB7CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAoc2Nfc3RlcHNfMltpXSA9IChpLW5iX250cykpOworICAg
ICAgICAgICAgICAgICAgICAoc2NfbmFtZXNfMVtpXSA9IChzY19saXN0KChzY19udHNfOFtpXSks
ICgwKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX2VuZGVyc180W2ldID0gKHNjX2xpc3Qo
aSkpKTsKKyAgICAgICAgICAgICAgICAgICAgKC0taSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGVmX2xvb3AgPSBmdW5jdGlvbihkZWZzLCBjb25mKSB7
CisgICAgICAgICAgICAgICAgdmFyIHJ1bGVfbG9vcDsKKyAgICAgICAgICAgICAgICB2YXIgaGVh
ZDsKKyAgICAgICAgICAgICAgICB2YXIgZGVmOworICAgICAgICAgICAgICAgIHJldHVybiAoKGRl
ZnMgaW5zdGFuY2VvZiBzY19QYWlyKT8oKGRlZiA9IChkZWZzLmNhcikpLCAoaGVhZCA9IChkZWYu
Y2FyKSksIChydWxlX2xvb3AgPSBmdW5jdGlvbihydWxlcywgY29uZiwgcnVsZV9udW0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgIHZhciBzY19pXzE3
OworICAgICAgICAgICAgICAgICAgICB2YXIgbnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBs
OworICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xODsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIHNjX2lfMTk7CisgICAgICAgICAgICAgICAgICAgIHZhciBydWxlOworICAgICAgICAg
ICAgICAgICAgICBpZiAoKHJ1bGVzIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bGUgPSAocnVsZXMu
Y2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWVzW2NvbmZdID0gKHNjX2xp
c3QoaGVhZCwgcnVsZV9udW0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2lf
MTkgPSAoaW5kKGhlYWQsIG50cykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rh
cnRlcnNbc2NfaV8xOV0gPSAobmV3IHNjX1BhaXIoY29uZiwgKHN0YXJ0ZXJzW3NjX2lfMTldKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IHJ1bGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzY19jb25mXzE4ID0gY29uZik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKChsIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG50ID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rl
cHNbc2NfY29uZl8xOF0gPSAoaW5kKG50LCBudHMpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc2NfaV8xNyA9IChpbmQobnQsIG50cykpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWN0b3JzW3NjX2lfMTddID0gKG5ldyBzY19QYWly
KHNjX2NvbmZfMTgsIChwcmVkaWN0b3JzW3NjX2lfMTddKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoKytzY19jb25mXzE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3RlcHNbc2NfY29uZl8xOF0gPSAoKGluZChoZWFkLCBudHMpKS1uYl9udHMp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9IChpbmQoaGVhZCwgbnRzKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlcnNbaV0gPSAobmV3IHNjX1BhaXIoc2Nf
Y29uZl8xOCwgKGVuZGVyc1tpXSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChydWxlX2xvb3AoKHJ1bGVzLmNkciksIChzY19jb25mXzE4KygxKSksIChydWxlX251bSso
MSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZGVmX2xvb3AoKGRlZnMuY2RyKSwg
Y29uZikpOworICAgICAgICAgICAgICAgIH0pLCAocnVsZV9sb29wKChkZWYuY2RyKSwgY29uZiwg
KDEpKSkpOnVuZGVmaW5lZCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgKGRlZl9sb29w
KGdyYW1tYXIsIChzY19udHNfOC5sZW5ndGgpKSk7CisgICAgICAgICAgICAocGFyc2VyX2Rlc2Ny
ID0gW2xleGVyLCBzY19udHNfOCwgc2Nfc3RhcnRlcnNfNSwgc2NfZW5kZXJzXzQsIHNjX3ByZWRp
Y3RvcnNfMywgc2Nfc3RlcHNfMiwgc2NfbmFtZXNfMV0pOworICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKGlucHV0KSB7CisgICAgICAgICAgICAgICAgdmFyIG9wdHJPcG5kOworICAgICAgICAg
ICAgICAgIHZhciBzY19vcHRyT3BuZF8yMDsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfb3B0ck9w
bmRfMjE7CisgICAgICAgICAgICAgICAgdmFyIHNjX29wdHJPcG5kXzIyOworICAgICAgICAgICAg
ICAgIHZhciBsb29wMTsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemEyXzIzemEy
OworICAgICAgICAgICAgICAgIHZhciB0b2tzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nf
bmJ6ZDJudHNfMjR6ZDI7CisgICAgICAgICAgICAgICAgdmFyIHNjX3N0ZXBzXzI1OworICAgICAg
ICAgICAgICAgIHZhciBzY19lbmRlcnNfMjY7CisgICAgICAgICAgICAgICAgdmFyIHN0YXRlX251
bTsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlc3phMl8yN3phMjsKKyAgICAgICAg
ICAgICAgICB2YXIgc3RhdGVzOworICAgICAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAg
ICAgIHZhciBjb25mOworICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgIHZh
ciB0b2tfbnRzOworICAgICAgICAgICAgICAgIHZhciBzY19pXzI4OworICAgICAgICAgICAgICAg
IHZhciBzY19pXzI5OworICAgICAgICAgICAgICAgIHZhciBsMTsKKyAgICAgICAgICAgICAgICB2
YXIgbDI7CisgICAgICAgICAgICAgICAgdmFyIHRvazsKKyAgICAgICAgICAgICAgICB2YXIgdGFp
bDExMjk7CisgICAgICAgICAgICAgICAgdmFyIEwxMTI1OworICAgICAgICAgICAgICAgIHZhciBn
b2FsX2VuZGVyczsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlc3phMl8zMHphMjsK
KyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQybnRzXzMxemQyOworICAgICAgICAgICAg
ICAgIHZhciBCZ0xfc2NfbmJ6ZDJjb25mc18zMnpkMjsKKyAgICAgICAgICAgICAgICB2YXIgbmJf
dG9rczsKKyAgICAgICAgICAgICAgICB2YXIgZ29hbF9zdGFydGVyczsKKyAgICAgICAgICAgICAg
ICB2YXIgc2Nfc3RhdGVzXzMzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJjb25m
c18zNHpkMjsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQydG9rc18zNXpkMjsKKyAg
ICAgICAgICAgICAgICB2YXIgc2NfdG9rc18zNjsKKyAgICAgICAgICAgICAgICB2YXIgZmFsc2VI
ZWFkMTEyODsKKyAgICAgICAgICAgICAgICB2YXIgc2NfbmFtZXNfMzc7CisgICAgICAgICAgICAg
ICAgdmFyIHNjX3N0ZXBzXzM4OworICAgICAgICAgICAgICAgIHZhciBzY19wcmVkaWN0b3JzXzM5
OworICAgICAgICAgICAgICAgIHZhciBzY19lbmRlcnNfNDA7CisgICAgICAgICAgICAgICAgdmFy
IHNjX3N0YXJ0ZXJzXzQxOworICAgICAgICAgICAgICAgIHZhciBzY19udHNfNDI7CisgICAgICAg
ICAgICAgICAgdmFyIGxleGVyOworICAgICAgICAgICAgICAgIHZhciBzY19pbmRfNDM7CisgICAg
ICAgICAgICAgICAgdmFyIG1ha2Vfc3RhdGVzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nf
Y29uZnpkMnNldHpkMmdldHphMl80NHphMjsKKyAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXRf
bWVyZ2VfbmV3X2Jhbmc7CisgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0X2Fkam9pbjsKKyAg
ICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTI7Cisg
ICAgICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQyc2V0emQyYWRqb2luemEyemEyXzQ2ejAw
OworICAgICAgICAgICAgICAgIHZhciBjb25mX3NldF91bmlvbjsKKyAgICAgICAgICAgICAgICB2
YXIgZm9ydzsKKyAgICAgICAgICAgICAgICB2YXIgaXNfcGFyc2VkOworICAgICAgICAgICAgICAg
IHZhciBkZXJpdl90cmVlczsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2Rlcml2emQydHJl
ZXN6YTJfNDd6NzA7CisgICAgICAgICAgICAgICAgdmFyIG5iX2Rlcml2X3RyZWVzOworICAgICAg
ICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzQ4emEyOworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc2NfaW5kXzQzID0gZnVuY3Rpb24obnQs
IHNjX250c180OSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSAoKHNjX250
c180OS5sZW5ndGgpLSgxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaT49KDApKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfaXNFcXVhbCgoc2NfbnRz
XzQ5W2ldKSwgbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgbWFrZV9zdGF0ZXMgPSBmdW5jdGlvbihCZ0xfc2NfbmJ6ZDJ0b2tzXzUwemQyLCBCZ0xf
c2NfbmJ6ZDJjb25mc181MXpkMikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHY7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzY19zdGF0ZXNfNTI7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNjX3N0YXRlc181MiA9IChzY19tYWtlVmVjdG9yKChCZ0xfc2NfbmJ6
ZDJ0b2tzXzUwemQyKygxKSksIGZhbHNlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpID0gQmdMX3NjX25iemQydG9rc181MHpkMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKChpPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ID0gKHNjX21ha2VWZWN0b3Io
KEJnTF9zY19uYnpkMmNvbmZzXzUxemQyKygxKSksIGZhbHNlKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHZbKDApXSA9ICgtMSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNjX3N0YXRlc181MltpXSA9IHYpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKC0taSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNjX3N0YXRlc181MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgQmdMX3NjX2NvbmZ6
ZDJzZXR6ZDJnZXR6YTJfNDR6YTIgPSBmdW5jdGlvbihzdGF0ZSwgQmdMX3NjX3N0YXRlemQybnVt
XzUzemQyLCBzY19jb25mXzU0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uZl9z
ZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXRfNTV6ZDI7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChCZ0xfc2NfY29uZnpkMnNldF81NXpk
MiA9IChzdGF0ZVsoc2NfY29uZl81NCsoMSkpXSkpLCAoKEJnTF9zY19jb25memQyc2V0XzU1emQy
IT09IGZhbHNlKT9CZ0xfc2NfY29uZnpkMnNldF81NXpkMjooKGNvbmZfc2V0ID0gKHNjX21ha2VW
ZWN0b3IoKEJnTF9zY19zdGF0ZXpkMm51bV81M3pkMisoNikpLCBmYWxzZSkpKSwgKGNvbmZfc2V0
WygxKV0gPSAoLTMpKSwgKGNvbmZfc2V0WygyKV0gPSAoLTEpKSwgKGNvbmZfc2V0WygzKV0gPSAo
LTEpKSwgKGNvbmZfc2V0Wyg0KV0gPSAoLTEpKSwgKHN0YXRlWyhzY19jb25mXzU0KygxKSldID0g
Y29uZl9zZXQpLCBjb25mX3NldCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgY29uZl9zZXRfbWVyZ2VfbmV3X2JhbmcgPSBmdW5jdGlvbihjb25mX3NldCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoY29uZl9zZXRbKChjb25mX3NldFso
MSldKSsoNSkpXSA9IChjb25mX3NldFsoNCldKSksIChjb25mX3NldFsoMSldID0gKGNvbmZfc2V0
WygzKV0pKSwgKGNvbmZfc2V0WygzKV0gPSAoLTEpKSwgKGNvbmZfc2V0Wyg0KV0gPSAoLTEpKSk7
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGNvbmZfc2V0X2Fk
am9pbiA9IGZ1bmN0aW9uKHN0YXRlLCBjb25mX3NldCwgc2NfY29uZl81NiwgaSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHRhaWw7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKCh0YWlsID0gKGNvbmZfc2V0WygzKV0pKSwgKGNvbmZfc2V0WyhpKyg1KSldID0gKC0xKSks
IChjb25mX3NldFsodGFpbCsoNSkpXSA9IGkpLCAoY29uZl9zZXRbKDMpXSA9IGkpLCAoKHRhaWw8
KDApKT8oKGNvbmZfc2V0WygwKV0gPSAoc3RhdGVbKDApXSkpLCAoc3RhdGVbKDApXSA9IHNjX2Nv
bmZfNTYpKTp1bmRlZmluZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICAgICAgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIgPSBmdW5jdGlvbihz
Y19zdGF0ZXNfNTcsIEJnTF9zY19zdGF0ZXpkMm51bV81OHpkMiwgbCwgaSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHNjX2NvbmZfNTk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlID0gKHNjX3N0YXRlc181N1tCZ0xfc2Nfc3Rh
dGV6ZDJudW1fNTh6ZDJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gbCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChsMSBpbnN0YW5jZW9mIHNjX1Bh
aXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzY19jb25mXzU5ID0gKGwxLmNhcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZfc2V0ID0gKEJnTF9zY19jb25memQyc2V0
emQyZ2V0emEyXzQ0emEyKHN0YXRlLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNTh6ZDIsIHNjX2NvbmZf
NTkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChjb25mX3Nl
dFsoaSsoNSkpXSk9PT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv
bmZfc2V0X2Fkam9pbihzdGF0ZSwgY29uZl9zZXQsIHNjX2NvbmZfNTksIGkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgQmdMX3NjX2NvbmZ6ZDJzZXR6
ZDJhZGpvaW56YTJ6YTJfNDZ6MDAgPSBmdW5jdGlvbihzY19zdGF0ZXNfNjAsIEJnTF9zY19zdGF0
ZXN6YTJfNjF6YTIsIEJnTF9zY19zdGF0ZXpkMm51bV82MnpkMiwgc2NfY29uZl82MywgaSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQyc2V0emEyXzY0ejcwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19zdGF0ZXphMl82NXphMjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHN0YXRlID0gKHNj
X3N0YXRlc182MFtCZ0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDJdKSksICgoKChjb25mX3NldCA9IChz
dGF0ZVsoc2NfY29uZl82MysoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRb
KGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpPygoQmdMX3NjX3N0YXRlemEyXzY1emEyID0gKEJn
TF9zY19zdGF0ZXN6YTJfNjF6YTJbQmdMX3NjX3N0YXRlemQybnVtXzYyemQyXSkpLCAoQmdMX3Nj
X2NvbmZ6ZDJzZXR6YTJfNjR6NzAgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIo
QmdMX3NjX3N0YXRlemEyXzY1emEyLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDIsIHNjX2NvbmZf
NjMpKSksICgoKEJnTF9zY19jb25memQyc2V0emEyXzY0ejcwWyhpKyg1KSldKT09PSBmYWxzZSk/
KGNvbmZfc2V0X2Fkam9pbihCZ0xfc2Nfc3RhdGV6YTJfNjV6YTIsIEJnTF9zY19jb25memQyc2V0
emEyXzY0ejcwLCBzY19jb25mXzYzLCBpKSk6dW5kZWZpbmVkKSwgdHJ1ZSk6ZmFsc2UpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgY29uZl9zZXRfdW5pb24g
PSBmdW5jdGlvbihzdGF0ZSwgY29uZl9zZXQsIHNjX2NvbmZfNjYsIG90aGVyX3NldCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSAob3RoZXJfc2V0WygyKV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCgoY29uZl9zZXRbKGkrKDUpKV0pPT09IGZhbHNlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXRfYWRqb2luKHN0YXRlLCBjb25mX3NldCwgc2Nf
Y29uZl82NiwgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp
ID0gKG90aGVyX3NldFsoaSsoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9IChvdGhlcl9zZXRbKGkrKDUpKV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgZm9ydyA9IGZ1bmN0aW9uKHNjX3N0YXRl
c182NywgQmdMX3NjX3N0YXRlemQybnVtXzY4emQyLCBzY19zdGFydGVyc182OSwgc2NfZW5kZXJz
XzcwLCBzY19wcmVkaWN0b3JzXzcxLCBzY19zdGVwc183Miwgc2NfbnRzXzczKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgbmV4dF9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBs
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ZXJfc2V0OworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXJ0ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2Nf
bF83NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sb29wMV83NTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBoZWFkOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJn
TF9zY19jb25memQyc2V0Xzc2emQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9z
Y19zdGF0ZXpkMm51bV83N3pkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19zdGF0ZXNfNzg7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcHJlZHM7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3Nj
X2NvbmZ6ZDJzZXRfNzl6ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19jb25mXzgwOworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIEJnTF9zY19uYnpkMm50c184MXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzY19zdGF0ZV84MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc2Nfc3RhdGVfODIgPSAoc2Nfc3RhdGVzXzY3W0JnTF9zY19zdGF0
ZXpkMm51bV82OHpkMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25i
emQybnRzXzgxemQyID0gKHNjX250c183My5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl84MCA9IChzY19z
dGF0ZV84MlsoMCldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KHNjX2NvbmZfODA+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RlcCA9
IChzY19zdGVwc183MltzY19jb25mXzgwXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzl6ZDIgPSAoc2Nfc3RhdGVfODJb
KHNjX2NvbmZfODArKDEpKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGhlYWQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzl6ZDJbKDQpXSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfc3RhdGVfODJbKDApXSA9
IChCZ0xfc2NfY29uZnpkMnNldF83OXpkMlsoMCldKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjb25mX3NldF9tZXJnZV9uZXdfYmFuZyhCZ0xfc2NfY29u
ZnpkMnNldF83OXpkMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKHN0ZXA+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNjX2xfNzQgPSAoc2Nfc3RhcnRlcnNfNjlbc3RlcF0pKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2xf
NzQgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhcnRlciA9IChzY19sXzc0LmNhcikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0YXJ0ZXJfc2V0ID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKHNj
X3N0YXRlXzgyLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIsIHN0YXJ0ZXIpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KChzdGFydGVyX3NldFsoQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKyg1KSldKT09PSBmYWxzZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXRfYWRqb2luKHNjX3N0YXRlXzgyLCBzdGFy
dGVyX3NldCwgc3RhcnRlciwgQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzY19sXzc0ID0gKHNjX2xfNzQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
Y19sXzc0ID0gKHNjX2xfNzQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzcwW3N0ZXBdKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChsIGlu
c3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZGVyID0gKGwuY2FyKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgo
Y29uZl9zZXQgPSAoc2Nfc3RhdGVfODJbKGVuZGVyKygxKSldKSksICgoY29uZl9zZXQhPT0gZmFs
c2UpPyhjb25mX3NldFsoQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKyg1KSldKTpmYWxzZSkpIT09
IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXh0ID0gKHNjX2NvbmZfODArKDEpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChuZXh0X3NldCA9IChCZ0xfc2NfY29uZnpkMnNldHpkMmdldHphMl80NHph
MihzY19zdGF0ZV84MiwgQmdMX3NjX3N0YXRlemQybnVtXzY4emQyLCBuZXh0KSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY29uZl9zZXRfdW5pb24oc2Nfc3RhdGVfODIsIG5leHRfc2V0LCBuZXh0LCBCZ0xfc2Nf
Y29uZnpkMnNldF83OXpkMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHByZWRzID0gKHNjX3ByZWRpY3RvcnNfNzFbKHN0ZXArQmdMX3NjX25iemQybnRz
XzgxemQyKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc2Nfc3RhdGVzXzc4ID0gc2Nfc3RhdGVzXzY3KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPSBzY19zdGF0ZV84Mik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJn
TF9zY19zdGF0ZXpkMm51bV83N3pkMiA9IEJnTF9zY19zdGF0ZXpkMm51bV82OHpkMik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19j
b25memQyc2V0Xzc2emQyID0gQmdMX3NjX2NvbmZ6ZDJzZXRfNzl6ZDIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2xvb3AxXzc1ID0gZnVu
Y3Rpb24obCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgc2Nfc3RhdGVfODM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmV4dHpkMnNldF84NHpkMjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHNjX25leHRfODU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBwcmVkX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmVkOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgaW5z
dGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlZCA9IChsLmNhcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpID0gaGVhZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChpPj0oMCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChwcmVkX3NldCA9ICgoc2Nfc3RhdGVfODMgPSAoc2Nfc3RhdGVzXzc4W2ld
KSksIChzY19zdGF0ZV84M1socHJlZCsoMSkpXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJl
ZF9zZXQhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNjX25leHRfODUgPSAocHJlZCsoMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KEJnTF9zY19uZXh0emQyc2V0Xzg0emQyID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0
emEyKHN0YXRlLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNzd6ZDIsIHNjX25leHRfODUpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjb25mX3NldF91bmlvbihzdGF0ZSwgQmdMX3NjX25leHR6ZDJz
ZXRfODR6ZDIsIHNjX25leHRfODUsIHByZWRfc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGkgPSAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzZ6ZDJbKGkrKDUpKV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzc1KChsLmNk
cikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19sb29wMV83NShwcmVkcykpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBpc19wYXJzZWQg
PSBmdW5jdGlvbihudCwgaSwgaiwgc2NfbnRzXzg2LCBzY19lbmRlcnNfODcsIHNjX3N0YXRlc184
OCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2Nv
bmZfODk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBCZ0xfc2NfbnR6YTJfOTB6YTI7CisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19udHphMl85MHphMiA9IChzY19p
bmRfNDMobnQsIHNjX250c184NikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KEJnTF9zY19udHphMl85MHphMiE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfODYu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKHNjX2Vu
ZGVyc184N1tCZ0xfc2NfbnR6YTJfOTB6YTJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl84OSA9IChsLmNhcikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHN0YXRlID0gKHNjX3N0
YXRlc184OFtqXSkpLCAoY29uZl9zZXQgPSAoc3RhdGVbKHNjX2NvbmZfODkrKDEpKV0pKSwgKChj
b25mX3NldCE9PSBmYWxzZSk/KGNvbmZfc2V0WyhpKyg1KSldKTpmYWxzZSkpIT09IGZhbHNlKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgZGVy
aXZfdHJlZXMgPSBmdW5jdGlvbihzY19jb25mXzkxLCBpLCBqLCBzY19lbmRlcnNfOTIsIHNjX3N0
ZXBzXzkzLCBzY19uYW1lc185NCwgc2NfdG9rc185NSwgc2Nfc3RhdGVzXzk2LCBCZ0xfc2NfbmJ6
ZDJudHNfOTd6ZDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sb29wMV85ODsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2OworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChuYW1lID0gKHNj
X25hbWVzXzk0W3NjX2NvbmZfOTFdKSksICgobmFtZSE9PSBmYWxzZSk/KChzY19jb25mXzkxPEJn
TF9zY19uYnpkMm50c185N3pkMik/KHNjX2xpc3QoKHNjX2xpc3QobmFtZSwgKChzY190b2tzXzk1
W2ldKS5jYXIpKSkpKTooc2NfbGlzdCgoc2NfbGlzdChuYW1lKSkpKSk6KChwcmV2ID0gKHNjX2Nv
bmZfOTEtKDEpKSksIChzY19sb29wMV85OCA9IGZ1bmN0aW9uKGwxLCBsMikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsb29wMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgZW5kZXJfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kZXI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGVuZGVyID0gKGwxLmNhcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChlbmRlcl9zZXQgPSAoKHN0YXRlID0gKHNjX3N0YXRlc185Nltq
XSkpLCAoc3RhdGVbKGVuZGVyKygxKSldKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgoZW5kZXJfc2V0IT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9vcDIgPSBmdW5jdGlvbihrLCBsMikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb29wMzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5k
ZXJfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHByZXZfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19zdGF0ZV85OTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChrPj0oMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoaz49aSkmJigoKHNjX3N0YXRlXzk5ID0gKHNj
X3N0YXRlc185NltrXSkpLCAoY29uZl9zZXQgPSAoc2Nfc3RhdGVfOTlbKHByZXYrKDEpKV0pKSwg
KChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZfc2V0WyhpKyg1KSldKTpmYWxzZSkpIT09IGZhbHNl
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldl90cmVlcyA9IChkZXJpdl90cmVlcyhwcmV2
LCBpLCBrLCBzY19lbmRlcnNfOTIsIHNjX3N0ZXBzXzkzLCBzY19uYW1lc185NCwgc2NfdG9rc185
NSwgc2Nfc3RhdGVzXzk2LCBCZ0xfc2NfbmJ6ZDJudHNfOTd6ZDIpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl
bmRlcl90cmVlcyA9IChkZXJpdl90cmVlcyhlbmRlciwgaywgaiwgc2NfZW5kZXJzXzkyLCBzY19z
dGVwc185Mywgc2NfbmFtZXNfOTQsIHNjX3Rva3NfOTUsIHNjX3N0YXRlc185NiwgQmdMX3NjX25i
emQybnRzXzk3emQyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wMyA9IGZ1bmN0aW9uKGwzLCBsMikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGw0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2wyXzEwMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBlbmRlcl90cmVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsMyBpbnN0
YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGVuZGVyX3RyZWUgPSAoc2NfbGlzdCgobDMuY2FyKSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGw0ID0gcHJldl90cmVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19s
Ml8xMDAgPSBsMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobDQgaW5zdGFuY2Vv
ZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzY19sMl8xMDAgPSAobmV3IHNjX1BhaXIoKHNjX2FwcGVuZCgo
bDQuY2FyKSwgZW5kZXJfdHJlZSkpLCBzY19sMl8xMDApKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGw0ID0gKGw0LmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAobG9vcDMoKGwzLmNkciksIHNjX2wyXzEwMCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3AyKChlbmRl
cl9zZXRbKGsrKDUpKV0pLCBsMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KGxvb3AzKGVuZGVyX3RyZWVzLCBsMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoayA9
IChlbmRlcl9zZXRbKGsrKDUpKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY19sb29wMV85OCgobDEu
Y2RyKSwgbDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChsb29wMigoZW5kZXJfc2V0WygyKV0pLCBsMikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KSwgKHNjX2xvb3AxXzk4KChzY19lbmRlcnNf
OTJbKHNjX3N0ZXBzXzkzW3ByZXZdKV0pLCBudWxsKSkpKSk7CisgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzQ3ejcwID0g
ZnVuY3Rpb24obnQsIGksIGosIHNjX250c18xMDEsIHNjX2VuZGVyc18xMDIsIHNjX3N0ZXBzXzEw
Mywgc2NfbmFtZXNfMTA0LCBzY190b2tzXzEwNSwgc2Nfc3RhdGVzXzEwNikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfMTA3OworICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJl
ZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQybnRzXzEwOHpkMjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbnR6YTJfMTA5emEyOworICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nf
bnR6YTJfMTA5emEyID0gKHNjX2luZF80MyhudCwgc2NfbnRzXzEwMSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKEJnTF9zY19udHphMl8xMDl6YTIhPT0gZmFsc2UpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzEwOHpkMiA9IChzY19udHNfMTAxLmxlbmd0aCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzEw
MltCZ0xfc2NfbnR6YTJfMTA5emEyXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHRyZWVzID0gbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNjX2NvbmZfMTA3ID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoKChzdGF0ZSA9IChzY19zdGF0ZXNfMTA2W2pdKSks
IChjb25mX3NldCA9IChzdGF0ZVsoc2NfY29uZl8xMDcrKDEpKV0pKSwgKChjb25mX3NldCE9PSBm
YWxzZSk/KGNvbmZfc2V0WyhpKyg1KSldKTpmYWxzZSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlcyA9IChz
Y19hcHBlbmQoKGRlcml2X3RyZWVzKHNjX2NvbmZfMTA3LCBpLCBqLCBzY19lbmRlcnNfMTAyLCBz
Y19zdGVwc18xMDMsIHNjX25hbWVzXzEwNCwgc2NfdG9rc18xMDUsIHNjX3N0YXRlc18xMDYsIEJn
TF9zY19uYnpkMm50c18xMDh6ZDIpKSwgdHJlZXMpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVzOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgIG5iX2Rlcml2X3RyZWVzID0gZnVuY3Rpb24oc2NfY29uZl8xMTAsIGksIGosIHNjX2Vu
ZGVyc18xMTEsIHNjX3N0ZXBzXzExMiwgc2NfdG9rc18xMTMsIHNjX3N0YXRlc18xMTQsIEJnTF9z
Y19uYnpkMm50c18xMTV6ZDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sb29w
MV8xMTY7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG1wMTEyNDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBwcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgo
cHJldiA9IChzY19jb25mXzExMC0oMSkpKSwgKCgoKHRtcDExMjQgPSAoc2NfY29uZl8xMTA8QmdM
X3NjX25iemQybnRzXzExNXpkMikpLCAoKHRtcDExMjQhPT0gZmFsc2UpP3RtcDExMjQ6KChzY19z
dGVwc18xMTJbcHJldl0pPCgwKSkpKSE9PSBmYWxzZSk/KDEpOigoc2NfbG9vcDFfMTE2ID0gZnVu
Y3Rpb24obCwgc2Nfbl8xMTgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmJf
ZW5kZXJfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5iX3ByZXZfdHJl
ZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZW5kZXJfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzY19zdGF0ZV8xMTc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVu
ZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzY19uXzExODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgaW5z
dGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXIgPSAobC5jYXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXJfc2V0ID0g
KChzY19zdGF0ZV8xMTcgPSAoc2Nfc3RhdGVzXzExNFtqXSkpLCAoc2Nfc3RhdGVfMTE3WyhlbmRl
cisoMSkpXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KGVuZGVyX3NldCE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChrID0gKGVuZGVyX3NldFsoMildKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobiA9IHNjX25fMTE4KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoaz49KDApKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGs+PWkpJiYo
KChzdGF0ZSA9IChzY19zdGF0ZXNfMTE0W2tdKSksIChjb25mX3NldCA9IChzdGF0ZVsocHJldiso
MSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkh
PT0gZmFsc2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG5iX3ByZXZfdHJlZXMgPSAobmJfZGVyaXZfdHJlZXMocHJldiwg
aSwgaywgc2NfZW5kZXJzXzExMSwgc2Nfc3RlcHNfMTEyLCBzY190b2tzXzExMywgc2Nfc3RhdGVz
XzExNCwgQmdMX3NjX25iemQybnRzXzExNXpkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYl9lbmRlcl90cmVlcyA9IChu
Yl9kZXJpdl90cmVlcyhlbmRlciwgaywgaiwgc2NfZW5kZXJzXzExMSwgc2Nfc3RlcHNfMTEyLCBz
Y190b2tzXzExMywgc2Nfc3RhdGVzXzExNCwgQmdMX3NjX25iemQybnRzXzExNXpkMikpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChrID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG4gKz0obmJfcHJldl90cmVlcypuYl9l
bmRlcl90cmVlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoayA9IChlbmRlcl9zZXRbKGsrKDUpKV0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfMTE2KChsLmNk
ciksIG4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNj
X25fMTE4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0pLCAoc2NfbG9vcDFfMTE2KChzY19lbmRlcnNfMTExWyhzY19zdGVwc18xMTJbcHJl
dl0pXSksICgwKSkpKSkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICBCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzQ4emEyID0gZnVuY3Rpb24obnQsIGks
IGosIHNjX250c18xMTksIHNjX2VuZGVyc18xMjAsIHNjX3N0ZXBzXzEyMSwgc2NfdG9rc18xMjIs
IHNjX3N0YXRlc18xMjMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzY19jb25mXzEyNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIG5iX3RyZWVzOworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIEJnTF9zY19uYnpkMm50c18xMjV6ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgQmdMX3NjX250emEyXzEyNnphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX250emEyXzEyNnphMiA9IChzY19pbmRfNDMo
bnQsIHNjX250c18xMTkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChCZ0xf
c2NfbnR6YTJfMTI2emEyIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19uYnpkMm50
c18xMjV6ZDIgPSAoc2NfbnRzXzExOS5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsID0gKHNjX2VuZGVyc18xMjBbQmdMX3NjX250emEyXzEyNnphMl0pKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYl90cmVlcyA9ICgwKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBz
Y19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2NvbmZfMTI0ID0g
KGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgoKChzdGF0ZSA9IChzY19zdGF0ZXNfMTIzW2pdKSksIChjb25mX3NldCA9IChzdGF0ZVsoc2Nf
Y29uZl8xMjQrKDEpKV0pKSwgKChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZfc2V0WyhpKyg1KSld
KTpmYWxzZSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChuYl90cmVlcyA9ICgobmJfZGVyaXZfdHJlZXMoc2NfY29u
Zl8xMjQsIGksIGosIHNjX2VuZGVyc18xMjAsIHNjX3N0ZXBzXzEyMSwgc2NfdG9rc18xMjIsIHNj
X3N0YXRlc18xMjMsIEJnTF9zY19uYnpkMm50c18xMjV6ZDIpKStuYl90cmVlcykpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
Yl90cmVlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICAobGV4ZXIgPSAocGFyc2VyX2Rlc2NyWygwKV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgKHNjX250c180MiA9IChwYXJzZXJfZGVzY3JbKDEpXSkpOwor
ICAgICAgICAgICAgICAgICAgICAoc2Nfc3RhcnRlcnNfNDEgPSAocGFyc2VyX2Rlc2NyWygyKV0p
KTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX2VuZGVyc180MCA9IChwYXJzZXJfZGVzY3JbKDMp
XSkpOworICAgICAgICAgICAgICAgICAgICAoc2NfcHJlZGljdG9yc18zOSA9IChwYXJzZXJfZGVz
Y3JbKDQpXSkpOworICAgICAgICAgICAgICAgICAgICAoc2Nfc3RlcHNfMzggPSAocGFyc2VyX2Rl
c2NyWyg1KV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX25hbWVzXzM3ID0gKHBhcnNlcl9k
ZXNjclsoNildKSk7CisgICAgICAgICAgICAgICAgICAgIChmYWxzZUhlYWQxMTI4ID0gKG5ldyBz
Y19QYWlyKG51bGwsIG51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgIChMMTEyNSA9IChsZXhl
cihpbnB1dCkpKTsKKyAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTI5ID0gZmFsc2VIZWFkMTEy
OCk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICghKEwxMTI1ID09PSBudWxsKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2sg
PSAoTDExMjUuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gKHRvay5j
ZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDIgPSBudWxsKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNjX2lfMjkgPSAoc2NfaW5kXzQzKChsMS5jYXIpLCBzY19udHNfNDIpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNjX2lfMjkhPT0gZmFs
c2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDIgPSAobmV3IHNjX1Bh
aXIoc2NfaV8yOSwgbDIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMSA9IChsMS5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfb3B0ck9wbmRfMjIgPSAobmV3IHNjX1Bh
aXIoKHRvay5jYXIpLCAoc2NfcmV2ZXJzZShsMikpKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzY19vcHRyT3BuZF8yMSA9IChuZXcgc2NfUGFpcihzY19vcHRyT3BuZF8yMiwgbnVs
bCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFpbDExMjkuY2RyID0gc2Nfb3B0
ck9wbmRfMjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWlsMTEyOSA9ICh0YWls
MTEyOS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTDExMjUgPSAoTDExMjUu
Y2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgKHNjX29wdHJPcG5kXzIwID0gKGZhbHNlSGVhZDExMjguY2Ry
KSk7CisgICAgICAgICAgICAgICAgICAgIChzY190b2tzXzM2ID0gKHNjX2xpc3QydmVjdG9yKHNj
X29wdHJPcG5kXzIwKSkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQydG9rc18z
NXpkMiA9IChzY190b2tzXzM2Lmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3Nj
X25iemQyY29uZnNfMzR6ZDIgPSAoc2Nfc3RlcHNfMzgubGVuZ3RoKSk7CisgICAgICAgICAgICAg
ICAgICAgIChzY19zdGF0ZXNfMzMgPSAobWFrZV9zdGF0ZXMoQmdMX3NjX25iemQydG9rc18zNXpk
MiwgQmdMX3NjX25iemQyY29uZnNfMzR6ZDIpKSk7CisgICAgICAgICAgICAgICAgICAgIChnb2Fs
X3N0YXJ0ZXJzID0gKHNjX3N0YXJ0ZXJzXzQxWygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAg
KEJnTF9zY19jb25memQyc2V0emQyYWRqb2luemEyXzQ1emEyKHNjX3N0YXRlc18zMywgKDApLCBn
b2FsX3N0YXJ0ZXJzLCAoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgKGZvcncoc2Nfc3RhdGVz
XzMzLCAoMCksIHNjX3N0YXJ0ZXJzXzQxLCBzY19lbmRlcnNfNDAsIHNjX3ByZWRpY3RvcnNfMzks
IHNjX3N0ZXBzXzM4LCBzY19udHNfNDIpKTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX2lfMjgg
PSAoMCkpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2lfMjg8QmdMX3NjX25iemQy
dG9rc18zNXpkMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodG9rX250cyA9ICgoc2NfdG9rc18zNltzY19pXzI4XSkuY2RyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19jb25memQyc2V0emQyYWRqb2luemEy
XzQ1emEyKHNjX3N0YXRlc18zMywgKHNjX2lfMjgrKDEpKSwgdG9rX250cywgc2NfaV8yOCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3KHNjX3N0YXRlc18zMywgKHNjX2lfMjgr
KDEpKSwgc2Nfc3RhcnRlcnNfNDEsIHNjX2VuZGVyc180MCwgc2NfcHJlZGljdG9yc18zOSwgc2Nf
c3RlcHNfMzgsIHNjX250c180MikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrK3Nj
X2lfMjgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIChuYl90b2tzID0gKHNjX3Rva3NfMzYubGVuZ3RoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18zMnpkMiA9IChzY19zdGVwc18z
OC5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19uYnpkMm50c18zMXpkMiA9
IChzY19udHNfNDIubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGVz
emEyXzMwemEyID0gKG1ha2Vfc3RhdGVzKG5iX3Rva3MsIEJnTF9zY19uYnpkMmNvbmZzXzMyemQy
KSkpOworICAgICAgICAgICAgICAgICAgICAoZ29hbF9lbmRlcnMgPSAoc2NfZW5kZXJzXzQwWygw
KV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKGwgPSBnb2FsX2VuZGVycyk7CisgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmYgPSAobC5jYXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpv
aW56YTJ6YTJfNDZ6MDAoc2Nfc3RhdGVzXzMzLCBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyLCBuYl90
b2tzLCBjb25mLCAoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNk
cikpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIChpID0gbmJfdG9rcyk7CisgICAgICAgICAgICAgICAgICAgIHdo
aWxlICgoaT49KDApKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdGF0ZXMgPSBzY19zdGF0ZXNfMzMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGVzemEyXzI3emEyID0gQmdMX3NjX3N0YXRlc3phMl8z
MHphMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlX251bSA9IGkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzY19lbmRlcnNfMjYgPSBzY19lbmRlcnNfNDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19zdGVwc18yNSA9IHNjX3N0ZXBzXzM4KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzI0emQyID0gQmdM
X3NjX25iemQybnRzXzMxemQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG9rcyA9
IHNjX3Rva3NfMzYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGV6
YTJfMjN6YTIgPSAoQmdMX3NjX3N0YXRlc3phMl8zMHphMltpXSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvb3AxID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzY19sb29wMV8xMjc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBwcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3Nj
X3N0YXRlc3phMl8xMjh6YTI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBz
Y19zdGF0ZXNfMTI5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgajsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzY19pXzEzMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGhlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3Nl
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfMTMxOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2NfY29uZl8xMzEgPSAoQmdMX3NjX3N0YXRlemEyXzIzemEyWygwKV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfY29uZl8xMzE+PSgw
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXQgPSAoQmdMX3NjX3N0
YXRlemEyXzIzemEyWyhzY19jb25mXzEzMSsoMSkpXSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoaGVhZCA9IChjb25mX3NldFsoNCldKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGV6YTJfMjN6
YTJbKDApXSA9IChjb25mX3NldFsoMCldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjb25mX3NldF9tZXJnZV9uZXdfYmFuZyhjb25mX3NldCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfaV8xMzAgPSBoZWFk
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChz
Y19pXzEzMD49KDApKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpID0gc2NfaV8xMzApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChqID0gc3RhdGVfbnVtKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfc3RhdGVzXzEyOSA9IHN0YXRlcyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJn
TF9zY19zdGF0ZXN6YTJfMTI4emEyID0gQmdMX3NjX3N0YXRlc3phMl8yN3phMik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXYgPSAoc2Nf
Y29uZl8xMzEtKDEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCgoc2NfY29uZl8xMzE+PUJnTF9zY19uYnpkMm50c18yNHpkMikmJigo
c2Nfc3RlcHNfMjVbcHJldl0pPj0oMCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfbG9vcDFfMTI3ID0gZnVuY3Rpb24o
bCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcl9zZXQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXIgPSAobC5jYXIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZW5kZXJfc2V0ID0gKChzdGF0ZSA9IChzY19zdGF0ZXNfMTI5W2pdKSksIChzdGF0
ZVsoZW5kZXIrKDEpKV0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlbmRlcl9zZXQhPT0g
ZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoayA9IChlbmRlcl9zZXRbKDIpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKChrPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGs+PWkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpv
aW56YTJ6YTJfNDZ6MDAoc2Nfc3RhdGVzXzEyOSwgQmdMX3NjX3N0YXRlc3phMl8xMjh6YTIsIGss
IHByZXYsIGkpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKEJnTF9zY19jb25memQyc2V0emQyYWRqb2luemEyemEyXzQ2ejAwKHNjX3N0YXRl
c18xMjksIEJnTF9zY19zdGF0ZXN6YTJfMTI4emEyLCBqLCBlbmRlciwgaykpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoayA9IChlbmRlcl9zZXRbKGsrKDUpKV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzEyNygobC5j
ZHIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzY19sb29wMV8xMjcoKHNjX2VuZGVyc18yNlsoc2Nfc3RlcHNfMjVb
cHJldl0pXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzY19pXzEzMCA9IChjb25mX3NldFsoc2NfaV8xMzArKDUpKV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3AxKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9v
cDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0taSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
KG9wdHJPcG5kID0gQmdMX3NjX3N0YXRlc3phMl8zMHphMik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBbc2NfbnRzXzQyLCBzY19zdGFydGVyc180MSwgc2NfZW5kZXJzXzQwLCBzY19wcmVk
aWN0b3JzXzM5LCBzY19zdGVwc18zOCwgc2NfbmFtZXNfMzcsIHNjX3Rva3NfMzYsIG9wdHJPcG5k
LCBpc19wYXJzZWQsIEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzQ3ejcwLCBCZ0xfc2NfbmJ6ZDJk
ZXJpdnpkMnRyZWVzemEyXzQ4emEyXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
OworICAgICAgICB9CisgICAgfTsKKyAgICBCZ0xfcGFyc2V6ZDJ6ZTNwYXJzZWR6ZjN6YzIgPSBm
dW5jdGlvbihwYXJzZSwgbnQsIGksIGopIHsKKyAgICAgICAgdmFyIGlzX3BhcnNlZDsKKyAgICAg
ICAgdmFyIHN0YXRlczsKKyAgICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIG50czsKKyAg
ICAgICAgcmV0dXJuICgobnRzID0gKHBhcnNlWygwKV0pKSwgKGVuZGVycyA9IChwYXJzZVsoMild
KSksIChzdGF0ZXMgPSAocGFyc2VbKDcpXSkpLCAoaXNfcGFyc2VkID0gKHBhcnNlWyg4KV0pKSwg
KGlzX3BhcnNlZChudCwgaSwgaiwgbnRzLCBlbmRlcnMsIHN0YXRlcykpKTsKKyAgICB9OworICAg
IEJnTF9wYXJzZXpkMnplM3RyZWVzejMxID0gZnVuY3Rpb24ocGFyc2UsIG50LCBpLCBqKSB7Cisg
ICAgICAgIHZhciBCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl8xMzJ6NzA7CisgICAgICAgIHZhciBz
dGF0ZXM7CisgICAgICAgIHZhciB0b2tzOworICAgICAgICB2YXIgbmFtZXM7CisgICAgICAgIHZh
ciBzdGVwczsKKyAgICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIG50czsKKyAgICAgICAg
cmV0dXJuICgobnRzID0gKHBhcnNlWygwKV0pKSwgKGVuZGVycyA9IChwYXJzZVsoMildKSksIChz
dGVwcyA9IChwYXJzZVsoNCldKSksIChuYW1lcyA9IChwYXJzZVsoNSldKSksICh0b2tzID0gKHBh
cnNlWyg2KV0pKSwgKHN0YXRlcyA9IChwYXJzZVsoNyldKSksIChCZ0xfc2NfZGVyaXZ6ZDJ0cmVl
c3phMl8xMzJ6NzAgPSAocGFyc2VbKDkpXSkpLCAoQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfMTMy
ejcwKG50LCBpLCBqLCBudHMsIGVuZGVycywgc3RlcHMsIG5hbWVzLCB0b2tzLCBzdGF0ZXMpKSk7
CisgICAgfTsKKyAgICBCZ0xfcGFyc2V6ZDJ6ZTNuYnpkMnRyZWVzemUzID0gZnVuY3Rpb24ocGFy
c2UsIG50LCBpLCBqKSB7CisgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEy
XzEzM3phMjsKKyAgICAgICAgdmFyIHN0YXRlczsKKyAgICAgICAgdmFyIHRva3M7CisgICAgICAg
IHZhciBzdGVwczsKKyAgICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIG50czsKKyAgICAg
ICAgcmV0dXJuICgobnRzID0gKHBhcnNlWygwKV0pKSwgKGVuZGVycyA9IChwYXJzZVsoMildKSks
IChzdGVwcyA9IChwYXJzZVsoNCldKSksICh0b2tzID0gKHBhcnNlWyg2KV0pKSwgKHN0YXRlcyA9
IChwYXJzZVsoNyldKSksIChCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzEzM3phMiA9IChw
YXJzZVsoMTApXSkpLCAoQmdMX3NjX25iemQyZGVyaXZ6ZDJ0cmVlc3phMl8xMzN6YTIobnQsIGks
IGosIG50cywgZW5kZXJzLCBzdGVwcywgdG9rcywgc3RhdGVzKSkpOworICAgIH07CisgICAgdGVz
dCA9IGZ1bmN0aW9uKGspIHsKKyAgICAgICAgdmFyIHg7CisgICAgICAgIHZhciBwOworICAgICAg
ICByZXR1cm4gKChwID0gKEJnTF9tYWtlemQycGFyc2VyemQyKGNvbnN0X2VhcmxleSwgZnVuY3Rp
b24obCkgeworICAgICAgICAgICAgdmFyIHNjX3hfMTM0OworICAgICAgICAgICAgdmFyIHRhaWwx
MTM0OworICAgICAgICAgICAgdmFyIEwxMTMwOworICAgICAgICAgICAgdmFyIGZhbHNlSGVhZDEx
MzM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKGZhbHNlSGVhZDExMzMgPSAobmV3
IHNjX1BhaXIobnVsbCwgbnVsbCkpKTsKKyAgICAgICAgICAgICAgICAodGFpbDExMzQgPSBmYWxz
ZUhlYWQxMTMzKTsKKyAgICAgICAgICAgICAgICAoTDExMzAgPSBsKTsKKyAgICAgICAgICAgICAg
ICB3aGlsZSAoIShMMTEzMCA9PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTM0LmNkciA9IChuZXcgc2NfUGFpcigoKHNjX3hf
MTM0ID0gKEwxMTMwLmNhcikpLCAoc2NfbGlzdChzY194XzEzNCwgc2NfeF8xMzQpKSksIG51bGwp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAodGFpbDExMzQgPSAodGFpbDExMzQuY2RyKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAoTDExMzAgPSAoTDExMzAuY2RyKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IChmYWxzZUhlYWQxMTMzLmNkcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0pKSksICh4ID0g
KHAoKHNjX3ZlY3RvcjJsaXN0KChzY19tYWtlVmVjdG9yKGssICJcdTFFOUNhIikpKSkpKSksIChz
Y19sZW5ndGgoKEJnTF9wYXJzZXpkMnplM3RyZWVzejMxKHgsICJcdTFFOUNzIiwgKDApLCBrKSkp
KSk7CisgICAgfTsKKyAgICBCZ0xfZWFybGV5emQyYmVuY2htYXJremQyID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBhcmdzID0gbnVsbDsKKyAgICAgICAgZm9yICh2YXIgc2NfdG1wID0gYXJn
dW1lbnRzLmxlbmd0aCAtIDE7IHNjX3RtcCA+PSAwOyBzY190bXAtLSkgeworICAgICAgICAgICAg
YXJncyA9IHNjX2NvbnMoYXJndW1lbnRzW3NjX3RtcF0sIGFyZ3MpOworICAgICAgICB9CisgICAg
ICAgIHZhciBrOworICAgICAgICByZXR1cm4gKChrID0gKChhcmdzID09PSBudWxsKT8oNyk6KGFy
Z3MuY2FyKSkpLCAoQmdMX3J1bnpkMmJlbmNobWFya3pkMigiZWFybGV5IiwgKDEpLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHJldHVybiAodGVzdChrKSk7CisgICAgICAgIH0sIGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgcmV0dXJuICgoc2NfZGlzcGxheShyZXN1bHQpKSwgKHNj
X25ld2xpbmUoKSksIHJlc3VsdCA9PSAxMzIpOworICAgICAgICB9KSkpOworICAgIH07Cit9CisK
KworLyoqKioqKioqKioqKiogRU5EIE9GIEdFTkVSQVRFRCBDT0RFICoqKioqKioqKioqKiovCisv
LyBJbnZva2UgdGhpcyBmdW5jdGlvbiB0byBydW4gYSBiZW5jaG1hcmsuCisvLyBUaGUgZmlyc3Qg
YXJndW1lbnQgaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGJlbmNobWFyay4KKy8vIFRoZSBz
ZWNvbmQgYXJndW1lbnQgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIGJlbmNobWFy
ay4KKy8vIFRoZSB0aGlyZCBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uIHRoYXQgcnVucyB0aGUgYmVu
Y2htYXJrLgorLy8gVGhlIGZvdXJ0aCBhcmd1bWVudCBpcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQg
d2FybnMgaWYgdGhlIHJlc3VsdAorLy8gcmV0dXJuZWQgYnkgdGhlIGJlbmNobWFyayBpcyBpbmNv
cnJlY3QuCisvLworLy8gRXhhbXBsZToKKy8vIFJ1bkJlbmNobWFyaygibmV3IEFycmF5KCkiLAor
Ly8gICAgICAgICAgICAgIDEsCisvLyAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBuZXcgQXJy
YXkoMTAwMDAwMCk7IH0KKy8vICAgICAgICAgICAgICBmdW5jdGlvbiAodikgeworLy8gICAgICAg
ICAgICAgICAgcmV0dXJuICh2IGluc3RhbmNlb2YgQXJyYXkpICYmICh2Lmxlbmd0aCA9PSAxMDAw
MDAwKTsKKy8vICAgICAgICAgICAgICB9KTsKKworU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfR2Vu
ZXJpY091dHB1dFBvcnQoZnVuY3Rpb24ocykge30pOworU0NfRVJST1JfT1VUID0gU0NfREVGQVVM
VF9PVVQ7CisKK2Z1bmN0aW9uIFJ1bkJlbmNobWFyayhuYW1lLCBjb3VudCwgcnVuLCB3YXJuKSB7
CisgIGZvciAodmFyIG4gPSAwOyBuIDwgY291bnQ7ICsrbikgeworICAgIHJlc3VsdCA9IHJ1bigp
OworICAgIGlmICghd2FybihyZXN1bHQpKSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVhcmxl
eSBvciBCb3llciBkaWQgaW5jb3JyZWN0IG51bWJlciBvZiByZXdyaXRlcyIpOworICAgIH0KKyAg
fQorfQorCit2YXIgQmdMX3J1bnpkMmJlbmNobWFya3pkMiA9IFJ1bkJlbmNobWFyazsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgQmdMX2VhcmxleXpkMmJlbmNobWFya3pkMigp
OworICBCZ0xfbmJveWVyemQyYmVuY2htYXJremQyKCk7Cit9CkluZGV4OiBTdW5TcGlkZXIvdGVz
dHMvdjgtdjYvdjgtcmF5dHJhY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU3VuU3BpZGVyL3Rlc3RzL3Y4
LXY2L3Y4LXJheXRyYWNlLmpzCShyZXZpc2lvbiAwKQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2
L3Y4LXJheXRyYWNlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwMiBAQAorLy8gVGhlIHJh
eSB0cmFjZXIgY29kZSBpbiB0aGlzIGZpbGUgaXMgd3JpdHRlbiBieSBBZGFtIEJ1cm1pc3Rlci4g
SXQKKy8vIGlzIGF2YWlsYWJsZSBpbiBpdHMgb3JpZ2luYWwgZm9ybSBmcm9tOgorLy8KKy8vICAg
aHR0cDovL2xhYnMuZmxvZy5uei5jby9yYXl0cmFjZXIvCisvLworLy8gSXQgaGFzIGJlZW4gbW9k
aWZpZWQgc2xpZ2h0bHkgYnkgR29vZ2xlIHRvIHdvcmsgYXMgYSBzdGFuZGFsb25lCisvLyBiZW5j
aG1hcmssIGJ1dCB0aGUgYWxsIHRoZSBjb21wdXRhdGlvbmFsIGNvZGUgcmVtYWlucworLy8gdW50
b3VjaGVkLiBUaGlzIGZpbGUgYWxzbyBjb250YWlucyBhIGNvcHkgb2YgcGFydHMgb2YgdGhlIFBy
b3RvdHlwZQorLy8gSmF2YVNjcmlwdCBmcmFtZXdvcmsgd2hpY2ggaXMgdXNlZCBieSB0aGUgcmF5
IHRyYWNlci4KKworLy8gVmFyaWFibGUgdXNlZCB0byBob2xkIGEgbnVtYmVyIHRoYXQgY2FuIGJl
IHVzZWQgdG8gdmVyaWZ5IHRoYXQKKy8vIHRoZSBzY2VuZSB3YXMgcmF5IHRyYWNlZCBjb3JyZWN0
bHkuCit2YXIgY2hlY2tOdW1iZXI7CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworLy8gVGhlIGZvbGxvd2luZyBpcyBhIGNvcHkgb2YgcGFydHMgb2YgdGhlIFBy
b3RvdHlwZSBKYXZhU2NyaXB0IGxpYnJhcnk6CisKKy8vIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZy
YW1ld29yaywgdmVyc2lvbiAxLjUuMAorLy8gKGMpIDIwMDUtMjAwNyBTYW0gU3RlcGhlbnNvbgor
Ly8KKy8vIFByb3RvdHlwZSBpcyBmcmVlbHkgZGlzdHJpYnV0YWJsZSB1bmRlciB0aGUgdGVybXMg
b2YgYW4gTUlULXN0eWxlIGxpY2Vuc2UuCisvLyBGb3IgZGV0YWlscywgc2VlIHRoZSBQcm90b3R5
cGUgd2ViIHNpdGU6IGh0dHA6Ly9wcm90b3R5cGUuY29uaW8ubmV0LworCisKK3ZhciBDbGFzcyA9
IHsKKyAgY3JlYXRlOiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAg
ICB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB9CisgIH0KK307
CisKKworT2JqZWN0LmV4dGVuZCA9IGZ1bmN0aW9uKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHsKKyAg
Zm9yICh2YXIgcHJvcGVydHkgaW4gc291cmNlKSB7CisgICAgZGVzdGluYXRpb25bcHJvcGVydHld
ID0gc291cmNlW3Byb3BlcnR5XTsKKyAgfQorICByZXR1cm4gZGVzdGluYXRpb247Cit9OworCisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoZSByZXN0IG9m
IHRoaXMgZmlsZSBpcyB0aGUgYWN0dWFsIHJheSB0cmFjZXIgd3JpdHRlbiBieSBBZGFtCisvLyBC
dXJtaXN0ZXIuIEl0J3MgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgZmlsZXM6Cisv
LworLy8gICBmbG9nL2NvbG9yLmpzCisvLyAgIGZsb2cvbGlnaHQuanMKKy8vICAgZmxvZy92ZWN0
b3IuanMKKy8vICAgZmxvZy9yYXkuanMKKy8vICAgZmxvZy9zY2VuZS5qcworLy8gICBmbG9nL21h
dGVyaWFsL2Jhc2VtYXRlcmlhbC5qcworLy8gICBmbG9nL21hdGVyaWFsL3NvbGlkLmpzCisvLyAg
IGZsb2cvbWF0ZXJpYWwvY2hlc3Nib2FyZC5qcworLy8gICBmbG9nL3NoYXBlL2Jhc2VzaGFwZS5q
cworLy8gICBmbG9nL3NoYXBlL3NwaGVyZS5qcworLy8gICBmbG9nL3NoYXBlL3BsYW5lLmpzCisv
LyAgIGZsb2cvaW50ZXJzZWN0aW9uaW5mby5qcworLy8gICBmbG9nL2NhbWVyYS5qcworLy8gICBm
bG9nL2JhY2tncm91bmQuanMKKy8vICAgZmxvZy9lbmdpbmUuanMKKworCisvKiBGYWtlIGEgRmxv
Zy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxv
ZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5S
YXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuQ29sb3IgPSBDbGFzcy5jcmVhdGUoKTsK
KworRmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlID0geworICAgIHJlZCA6IDAuMCwKKyAg
ICBncmVlbiA6IDAuMCwKKyAgICBibHVlIDogMC4wLAorCisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0
aW9uKHIsIGcsIGIpIHsKKyAgICAgICAgaWYoIXIpIHIgPSAwLjA7CisgICAgICAgIGlmKCFnKSBn
ID0gMC4wOworICAgICAgICBpZighYikgYiA9IDAuMDsKKworICAgICAgICB0aGlzLnJlZCA9IHI7
CisgICAgICAgIHRoaXMuZ3JlZW4gPSBnOworICAgICAgICB0aGlzLmJsdWUgPSBiOworICAgIH0s
CisKKyAgICBhZGQgOiBmdW5jdGlvbihjMSwgYzIpeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3
IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICByZXN1bHQucmVkID0gYzEu
cmVkICsgYzIucmVkOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiArIGMyLmdyZWVu
OworICAgICAgICByZXN1bHQuYmx1ZSA9IGMxLmJsdWUgKyBjMi5ibHVlOworCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIGFkZFNjYWxhcjogZnVuY3Rpb24oYzEsIHMpewor
ICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKwor
ICAgICAgICByZXN1bHQucmVkID0gYzEucmVkICsgczsKKyAgICAgICAgcmVzdWx0LmdyZWVuID0g
YzEuZ3JlZW4gKyBzOworICAgICAgICByZXN1bHQuYmx1ZSA9IGMxLmJsdWUgKyBzOworCisgICAg
ICAgIHJlc3VsdC5saW1pdCgpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKwor
ICAgIHN1YnRyYWN0OiBmdW5jdGlvbihjMSwgYzIpeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3
IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICByZXN1bHQucmVkID0gYzEu
cmVkIC0gYzIucmVkOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiAtIGMyLmdyZWVu
OworICAgICAgICByZXN1bHQuYmx1ZSA9IGMxLmJsdWUgLSBjMi5ibHVlOworCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIG11bHRpcGx5IDogZnVuY3Rpb24oYzEsIGMyKSB7
CisgICAgICAgIHZhciByZXN1bHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMCwwLDApOwor
CisgICAgICAgIHJlc3VsdC5yZWQgPSBjMS5yZWQgKiBjMi5yZWQ7CisgICAgICAgIHJlc3VsdC5n
cmVlbiA9IGMxLmdyZWVuICogYzIuZ3JlZW47CisgICAgICAgIHJlc3VsdC5ibHVlID0gYzEuYmx1
ZSAqIGMyLmJsdWU7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgbXVs
dGlwbHlTY2FsYXIgOiBmdW5jdGlvbihjMSwgZikgeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3
IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICByZXN1bHQucmVkID0gYzEu
cmVkICogZjsKKyAgICAgICAgcmVzdWx0LmdyZWVuID0gYzEuZ3JlZW4gKiBmOworICAgICAgICBy
ZXN1bHQuYmx1ZSA9IGMxLmJsdWUgKiBmOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSwKKworICAgIGRpdmlkZUZhY3RvciA6IGZ1bmN0aW9uKGMxLCBmKSB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMCwwLDApOworCisgICAgICAgIHJlc3Vs
dC5yZWQgPSBjMS5yZWQgLyBmOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiAvIGY7
CisgICAgICAgIHJlc3VsdC5ibHVlID0gYzEuYmx1ZSAvIGY7CisKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9LAorCisgICAgbGltaXQ6IGZ1bmN0aW9uKCl7CisgICAgICAgIHRoaXMucmVk
ID0gKHRoaXMucmVkID4gMC4wKSA/ICggKHRoaXMucmVkID4gMS4wKSA/IDEuMCA6IHRoaXMucmVk
ICkgOiAwLjA7CisgICAgICAgIHRoaXMuZ3JlZW4gPSAodGhpcy5ncmVlbiA+IDAuMCkgPyAoICh0
aGlzLmdyZWVuID4gMS4wKSA/IDEuMCA6IHRoaXMuZ3JlZW4gKSA6IDAuMDsKKyAgICAgICAgdGhp
cy5ibHVlID0gKHRoaXMuYmx1ZSA+IDAuMCkgPyAoICh0aGlzLmJsdWUgPiAxLjApID8gMS4wIDog
dGhpcy5ibHVlICkgOiAwLjA7CisgICAgfSwKKworICAgIGRpc3RhbmNlIDogZnVuY3Rpb24oY29s
b3IpIHsKKyAgICAgICAgdmFyIGQgPSBNYXRoLmFicyh0aGlzLnJlZCAtIGNvbG9yLnJlZCkgKyBN
YXRoLmFicyh0aGlzLmdyZWVuIC0gY29sb3IuZ3JlZW4pICsgTWF0aC5hYnModGhpcy5ibHVlIC0g
Y29sb3IuYmx1ZSk7CisgICAgICAgIHJldHVybiBkOworICAgIH0sCisKKyAgICBibGVuZDogZnVu
Y3Rpb24oYzEsIGMyLCB3KXsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBGbG9nLlJheVRyYWNl
ci5Db2xvcigwLDAsMCk7CisgICAgICAgIHJlc3VsdCA9IEZsb2cuUmF5VHJhY2VyLkNvbG9yLnBy
b3RvdHlwZS5hZGQoCisgICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLkNvbG9yLnBy
b3RvdHlwZS5tdWx0aXBseVNjYWxhcihjMSwgMSAtIHcpLAorICAgICAgICAgICAgICAgICAgICBG
bG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIoYzIsIHcpCisgICAg
ICAgICAgICAgICAgICApOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBi
cmlnaHRuZXNzIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciByID0gTWF0aC5mbG9vcih0aGlz
LnJlZCoyNTUpOworICAgICAgICB2YXIgZyA9IE1hdGguZmxvb3IodGhpcy5ncmVlbioyNTUpOwor
ICAgICAgICB2YXIgYiA9IE1hdGguZmxvb3IodGhpcy5ibHVlKjI1NSk7CisgICAgICAgIHJldHVy
biAociAqIDc3ICsgZyAqIDE1MCArIGIgKiAyOSkgPj4gODsKKyAgICB9LAorCisgICAgdG9TdHJp
bmcgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciByID0gTWF0aC5mbG9vcih0aGlzLnJlZCoy
NTUpOworICAgICAgICB2YXIgZyA9IE1hdGguZmxvb3IodGhpcy5ncmVlbioyNTUpOworICAgICAg
ICB2YXIgYiA9IE1hdGguZmxvb3IodGhpcy5ibHVlKjI1NSk7CisKKyAgICAgICAgcmV0dXJuICJy
Z2IoIisgciArIiwiKyBnICsiLCIrIGIgKyIpIjsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4q
IG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9
IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlU
cmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuTGlnaHQgPSBDbGFzcy5jcmVhdGUoKTsKKwor
RmxvZy5SYXlUcmFjZXIuTGlnaHQucHJvdG90eXBlID0geworICAgIHBvc2l0aW9uOiBudWxsLAor
ICAgIGNvbG9yOiBudWxsLAorICAgIGludGVuc2l0eTogMTAuMCwKKworICAgIGluaXRpYWxpemUg
OiBmdW5jdGlvbihwb3MsIGNvbG9yLCBpbnRlbnNpdHkpIHsKKyAgICAgICAgdGhpcy5wb3NpdGlv
biA9IHBvczsKKyAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yOworICAgICAgICB0aGlzLmludGVu
c2l0eSA9IChpbnRlbnNpdHkgPyBpbnRlbnNpdHkgOiAxMC4wKTsKKyAgICB9LAorCisgICAgdG9T
dHJpbmcgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAnTGlnaHQgWycgKyB0aGlzLnBv
c2l0aW9uLnggKyAnLCcgKyB0aGlzLnBvc2l0aW9uLnkgKyAnLCcgKyB0aGlzLnBvc2l0aW9uLnog
KyAnXSc7CisgICAgfQorfQorLyogRmFrZSBhIEZsb2cuKiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVv
ZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJh
eVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyID0ge307CisKK0Zsb2cuUmF5
VHJhY2VyLlZlY3RvciA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5WZWN0b3Iu
cHJvdG90eXBlID0geworICAgIHggOiAwLjAsCisgICAgeSA6IDAuMCwKKyAgICB6IDogMC4wLAor
CisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKHgsIHksIHopIHsKKyAgICAgICAgdGhpcy54ID0g
KHggPyB4IDogMCk7CisgICAgICAgIHRoaXMueSA9ICh5ID8geSA6IDApOworICAgICAgICB0aGlz
LnogPSAoeiA/IHogOiAwKTsKKyAgICB9LAorCisgICAgY29weTogZnVuY3Rpb24odmVjdG9yKXsK
KyAgICAgICAgdGhpcy54ID0gdmVjdG9yLng7CisgICAgICAgIHRoaXMueSA9IHZlY3Rvci55Owor
ICAgICAgICB0aGlzLnogPSB2ZWN0b3IuejsKKyAgICB9LAorCisgICAgbm9ybWFsaXplIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBtID0gdGhpcy5tYWduaXR1ZGUoKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IodGhpcy54IC8gbSwgdGhpcy55IC8gbSwgdGhp
cy56IC8gbSk7CisgICAgfSwKKworICAgIG1hZ25pdHVkZSA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gTWF0aC5zcXJ0KCh0aGlzLnggKiB0aGlzLngpICsgKHRoaXMueSAqIHRoaXMueSkg
KyAodGhpcy56ICogdGhpcy56KSk7CisgICAgfSwKKworICAgIGNyb3NzIDogZnVuY3Rpb24odykg
eworICAgICAgICByZXR1cm4gbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXRoaXMueiAqIHcueSArIHRoaXMueSAq
IHcueiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnog
KiB3LnggLSB0aGlzLnggKiB3LnosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtdGhpcy55ICogdy54ICsgdGhpcy54ICogdy55KTsKKyAgICB9LAorCisgICAgZG90
IDogZnVuY3Rpb24odykgeworICAgICAgICByZXR1cm4gdGhpcy54ICogdy54ICsgdGhpcy55ICog
dy55ICsgdGhpcy56ICogdy56OworICAgIH0sCisKKyAgICBhZGQgOiBmdW5jdGlvbih2LCB3KSB7
CisgICAgICAgIHJldHVybiBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKHcueCArIHYueCwgdy55
ICsgdi55LCB3LnogKyB2LnopOworICAgIH0sCisKKyAgICBzdWJ0cmFjdCA6IGZ1bmN0aW9uKHYs
IHcpIHsKKyAgICAgICAgaWYoIXcgfHwgIXYpIHRocm93ICdWZWN0b3JzIG11c3QgYmUgZGVmaW5l
ZCBbJyArIHYgKyAnLCcgKyB3ICsgJ10nOworICAgICAgICByZXR1cm4gbmV3IEZsb2cuUmF5VHJh
Y2VyLlZlY3Rvcih2LnggLSB3LngsIHYueSAtIHcueSwgdi56IC0gdy56KTsKKyAgICB9LAorCisg
ICAgbXVsdGlwbHlWZWN0b3IgOiBmdW5jdGlvbih2LCB3KSB7CisgICAgICAgIHJldHVybiBuZXcg
RmxvZy5SYXlUcmFjZXIuVmVjdG9yKHYueCAqIHcueCwgdi55ICogdy55LCB2LnogKiB3LnopOwor
ICAgIH0sCisKKyAgICBtdWx0aXBseVNjYWxhciA6IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3Iodi54ICogdywgdi55ICogdywgdi56ICog
dyk7CisgICAgfSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1
cm4gJ1ZlY3RvciBbJyArIHRoaXMueCArICcsJyArIHRoaXMueSArICcsJyArIHRoaXMueiArICdd
JzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZs
b2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJh
Y2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFj
ZXIuUmF5ID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLlJheS5wcm90b3R5cGUg
PSB7CisgICAgcG9zaXRpb24gOiBudWxsLAorICAgIGRpcmVjdGlvbiA6IG51bGwsCisgICAgaW5p
dGlhbGl6ZSA6IGZ1bmN0aW9uKHBvcywgZGlyKSB7CisgICAgICAgIHRoaXMucG9zaXRpb24gPSBw
b3M7CisgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyOworICAgIH0sCisKKyAgICB0b1N0cmlu
ZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdSYXkgWycgKyB0aGlzLnBvc2l0aW9u
ICsgJywnICsgdGhpcy5kaXJlY3Rpb24gKyAnXSc7CisgICAgfQorfQorLyogRmFrZSBhIEZsb2cu
KiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cg
PSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5
VHJhY2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLlNjZW5lID0gQ2xhc3MuY3JlYXRlKCk7CisK
K0Zsb2cuUmF5VHJhY2VyLlNjZW5lLnByb3RvdHlwZSA9IHsKKyAgICBjYW1lcmEgOiBudWxsLAor
ICAgIHNoYXBlcyA6IFtdLAorICAgIGxpZ2h0cyA6IFtdLAorICAgIGJhY2tncm91bmQgOiBudWxs
LAorCisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNhbWVyYSA9
IG5ldyBGbG9nLlJheVRyYWNlci5DYW1lcmEoCisgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFj
ZXIuVmVjdG9yKDAsMCwtNSksCisgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9y
KDAsMCwxKSwKKyAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoMCwxLDApCisg
ICAgICAgICk7CisgICAgICAgIHRoaXMuc2hhcGVzID0gbmV3IEFycmF5KCk7CisgICAgICAgIHRo
aXMubGlnaHRzID0gbmV3IEFycmF5KCk7CisgICAgICAgIHRoaXMuYmFja2dyb3VuZCA9IG5ldyBG
bG9nLlJheVRyYWNlci5CYWNrZ3JvdW5kKG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLDAsMC41
KSwgMC4yKTsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlw
ZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cu
UmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKK2lmKHR5cGVv
ZihGbG9nLlJheVRyYWNlci5NYXRlcmlhbCkgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2Vy
Lk1hdGVyaWFsID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLkJhc2VNYXRlcmlhbCA9
IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5CYXNlTWF0ZXJpYWwu
cHJvdG90eXBlID0geworCisgICAgZ2xvc3M6IDIuMCwgICAgICAgICAgICAgLy8gWzAuLi5pbmZp
bml0eV0gMCA9IG1hdHQKKyAgICB0cmFuc3BhcmVuY3k6IDAuMCwgICAgICAvLyAwPW9wYXF1ZQor
ICAgIHJlZmxlY3Rpb246IDAuMCwgICAgICAgIC8vIFswLi4uaW5maW5pdHldIDAgPSBubyByZWZs
ZWN0aW9uCisgICAgcmVmcmFjdGlvbjogMC41MCwKKyAgICBoYXNUZXh0dXJlOiBmYWxzZSwKKwor
ICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbigpIHsKKworICAgIH0sCisKKyAgICBnZXRDb2xvcjog
ZnVuY3Rpb24odSwgdil7CisKKyAgICB9LAorCisgICAgd3JhcFVwOiBmdW5jdGlvbih0KXsKKyAg
ICAgICAgdCA9IHQgJSAyLjA7CisgICAgICAgIGlmKHQgPCAtMSkgdCArPSAyLjA7CisgICAgICAg
IGlmKHQgPj0gMSkgdCAtPSAyLjA7CisgICAgICAgIHJldHVybiB0OworICAgIH0sCisKKyAgICB0
b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdNYXRlcmlhbCBbZ2xvc3M9
JyArIHRoaXMuZ2xvc3MgKyAnLCB0cmFuc3BhcmVuY3k9JyArIHRoaXMudHJhbnNwYXJlbmN5ICsg
JywgaGFzVGV4dHVyZT0nICsgdGhpcy5oYXNUZXh0dXJlICsnXSc7CisgICAgfQorfQorLyogRmFr
ZSBhIEZsb2cuKiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykg
dmFyIEZsb2cgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcp
IEZsb2cuUmF5VHJhY2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLlNvbGlkID0g
Q2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLlNvbGlkLnByb3RvdHlw
ZSA9IE9iamVjdC5leHRlbmQoCisgICAgbmV3IEZsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLkJhc2VN
YXRlcmlhbCgpLCB7CisgICAgICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihjb2xvciwgcmVmbGVj
dGlvbiwgcmVmcmFjdGlvbiwgdHJhbnNwYXJlbmN5LCBnbG9zcykgeworICAgICAgICAgICAgdGhp
cy5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgdGhpcy5yZWZsZWN0aW9uID0gcmVmbGVjdGlv
bjsKKyAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0gdHJhbnNwYXJlbmN5OworICAgICAg
ICAgICAgdGhpcy5nbG9zcyA9IGdsb3NzOworICAgICAgICAgICAgdGhpcy5oYXNUZXh0dXJlID0g
ZmFsc2U7CisgICAgICAgIH0sCisKKyAgICAgICAgZ2V0Q29sb3I6IGZ1bmN0aW9uKHUsIHYpewor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7CisgICAgICAgIH0sCisKKyAgICAgICAgdG9T
dHJpbmcgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gJ1NvbGlkTWF0ZXJpYWwg
W2dsb3NzPScgKyB0aGlzLmdsb3NzICsgJywgdHJhbnNwYXJlbmN5PScgKyB0aGlzLnRyYW5zcGFy
ZW5jeSArICcsIGhhc1RleHR1cmU9JyArIHRoaXMuaGFzVGV4dHVyZSArJ10nOworICAgICAgICB9
CisgICAgfQorKTsKKy8qIEZha2UgYSBGbG9nLiogbmFtZXNwYWNlICovCitpZih0eXBlb2YoRmxv
ZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9nID0ge307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFj
ZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlciA9IHt9OworCitGbG9nLlJheVRyYWNl
ci5NYXRlcmlhbC5DaGVzc2JvYXJkID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2Vy
Lk1hdGVyaWFsLkNoZXNzYm9hcmQucHJvdG90eXBlID0gT2JqZWN0LmV4dGVuZCgKKyAgICBuZXcg
RmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwuQmFzZU1hdGVyaWFsKCksIHsKKyAgICAgICAgY29sb3JF
dmVuOiBudWxsLAorICAgICAgICBjb2xvck9kZDogbnVsbCwKKyAgICAgICAgZGVuc2l0eTogMC41
LAorCisgICAgICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihjb2xvckV2ZW4sIGNvbG9yT2RkLCBy
ZWZsZWN0aW9uLCB0cmFuc3BhcmVuY3ksIGdsb3NzLCBkZW5zaXR5KSB7CisgICAgICAgICAgICB0
aGlzLmNvbG9yRXZlbiA9IGNvbG9yRXZlbjsKKyAgICAgICAgICAgIHRoaXMuY29sb3JPZGQgPSBj
b2xvck9kZDsKKyAgICAgICAgICAgIHRoaXMucmVmbGVjdGlvbiA9IHJlZmxlY3Rpb247CisgICAg
ICAgICAgICB0aGlzLnRyYW5zcGFyZW5jeSA9IHRyYW5zcGFyZW5jeTsKKyAgICAgICAgICAgIHRo
aXMuZ2xvc3MgPSBnbG9zczsKKyAgICAgICAgICAgIHRoaXMuZGVuc2l0eSA9IGRlbnNpdHk7Cisg
ICAgICAgICAgICB0aGlzLmhhc1RleHR1cmUgPSB0cnVlOworICAgICAgICB9LAorCisgICAgICAg
IGdldENvbG9yOiBmdW5jdGlvbih1LCB2KXsKKyAgICAgICAgICAgIHZhciB0ID0gdGhpcy53cmFw
VXAodSAqIHRoaXMuZGVuc2l0eSkgKiB0aGlzLndyYXBVcCh2ICogdGhpcy5kZW5zaXR5KTsKKwor
ICAgICAgICAgICAgaWYodCA8IDAuMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xv
ckV2ZW47CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29s
b3JPZGQ7CisgICAgICAgIH0sCisKKyAgICAgICAgdG9TdHJpbmcgOiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gJ0NoZXNzTWF0ZXJpYWwgW2dsb3NzPScgKyB0aGlzLmdsb3NzICsg
JywgdHJhbnNwYXJlbmN5PScgKyB0aGlzLnRyYW5zcGFyZW5jeSArICcsIGhhc1RleHR1cmU9JyAr
IHRoaXMuaGFzVGV4dHVyZSArJ10nOworICAgICAgICB9CisgICAgfQorKTsKKy8qIEZha2UgYSBG
bG9nLiogbmFtZXNwYWNlICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBG
bG9nID0ge307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9n
LlJheVRyYWNlciA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyLlNoYXBlKSA9PSAndW5k
ZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIuU2hhcGUgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuU2hh
cGUuU3BoZXJlID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlNwaGVy
ZS5wcm90b3R5cGUgPSB7CisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKHBvcywgcmFkaXVzLCBt
YXRlcmlhbCkgeworICAgICAgICB0aGlzLnJhZGl1cyA9IHJhZGl1czsKKyAgICAgICAgdGhpcy5w
b3NpdGlvbiA9IHBvczsKKyAgICAgICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsOworICAgIH0s
CisKKyAgICBpbnRlcnNlY3Q6IGZ1bmN0aW9uKHJheSl7CisgICAgICAgIHZhciBpbmZvID0gbmV3
IEZsb2cuUmF5VHJhY2VyLkludGVyc2VjdGlvbkluZm8oKTsKKyAgICAgICAgaW5mby5zaGFwZSA9
IHRoaXM7CisKKyAgICAgICAgdmFyIGRzdCA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5
cGUuc3VidHJhY3QocmF5LnBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTsKKworICAgICAgICB2YXIg
QiA9IGRzdC5kb3QocmF5LmRpcmVjdGlvbik7CisgICAgICAgIHZhciBDID0gZHN0LmRvdChkc3Qp
IC0gKHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXMpOworICAgICAgICB2YXIgRCA9IChCICogQikg
LSBDOworCisgICAgICAgIGlmKEQgPiAwKXsgLy8gaW50ZXJzZWN0aW9uIQorICAgICAgICAgICAg
aW5mby5pc0hpdCA9IHRydWU7CisgICAgICAgICAgICBpbmZvLmRpc3RhbmNlID0gKC1CKSAtIE1h
dGguc3FydChEKTsKKyAgICAgICAgICAgIGluZm8ucG9zaXRpb24gPSBGbG9nLlJheVRyYWNlci5W
ZWN0b3IucHJvdG90eXBlLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJheS5wb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlw
bHlTY2FsYXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmF5LmRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLmRpc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpbmZvLm5vcm1hbCA9IEZsb2cuUmF5VHJhY2Vy
LlZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8ucG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApLm5vcm1hbGl6ZSgpOworCisgICAgICAgICAgICBpbmZvLmNvbG9y
ID0gdGhpcy5tYXRlcmlhbC5nZXRDb2xvcigwLDApOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaW5mby5pc0hpdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmZv
OworICAgIH0sCisKKyAgICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu
ICdTcGhlcmUgW3Bvc2l0aW9uPScgKyB0aGlzLnBvc2l0aW9uICsgJywgcmFkaXVzPScgKyB0aGlz
LnJhZGl1cyArICddJzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLwor
aWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9m
KEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKK2lm
KHR5cGVvZihGbG9nLlJheVRyYWNlci5TaGFwZSkgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJh
Y2VyLlNoYXBlID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlBsYW5lID0gQ2xhc3MuY3Jl
YXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlBsYW5lLnByb3RvdHlwZSA9IHsKKyAgICBk
OiAwLjAsCisKKyAgICBpbml0aWFsaXplIDogZnVuY3Rpb24ocG9zLCBkLCBtYXRlcmlhbCkgewor
ICAgICAgICB0aGlzLnBvc2l0aW9uID0gcG9zOworICAgICAgICB0aGlzLmQgPSBkOworICAgICAg
ICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7CisgICAgfSwKKworICAgIGludGVyc2VjdDogZnVu
Y3Rpb24ocmF5KXsKKyAgICAgICAgdmFyIGluZm8gPSBuZXcgRmxvZy5SYXlUcmFjZXIuSW50ZXJz
ZWN0aW9uSW5mbygpOworCisgICAgICAgIHZhciBWZCA9IHRoaXMucG9zaXRpb24uZG90KHJheS5k
aXJlY3Rpb24pOworICAgICAgICBpZihWZCA9PSAwKSByZXR1cm4gaW5mbzsgLy8gbm8gaW50ZXJz
ZWN0aW9uCisKKyAgICAgICAgdmFyIHQgPSAtKHRoaXMucG9zaXRpb24uZG90KHJheS5wb3NpdGlv
bikgKyB0aGlzLmQpIC8gVmQ7CisgICAgICAgIGlmKHQgPD0gMCkgcmV0dXJuIGluZm87CisKKyAg
ICAgICAgaW5mby5zaGFwZSA9IHRoaXM7CisgICAgICAgIGluZm8uaXNIaXQgPSB0cnVlOworICAg
ICAgICBpbmZvLnBvc2l0aW9uID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5hZGQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJheS5wb3NpdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvZy5SYXlU
cmFjZXIuVmVjdG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJheS5kaXJlY3Rpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgICAgICBpbmZvLm5vcm1hbCA9IHRoaXMucG9zaXRpb247Cisg
ICAgICAgIGluZm8uZGlzdGFuY2UgPSB0OworCisgICAgICAgIGlmKHRoaXMubWF0ZXJpYWwuaGFz
VGV4dHVyZSl7CisgICAgICAgICAgICB2YXIgdlUgPSBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9y
KHRoaXMucG9zaXRpb24ueSwgdGhpcy5wb3NpdGlvbi56LCAtdGhpcy5wb3NpdGlvbi54KTsKKyAg
ICAgICAgICAgIHZhciB2ViA9IHZVLmNyb3NzKHRoaXMucG9zaXRpb24pOworICAgICAgICAgICAg
dmFyIHUgPSBpbmZvLnBvc2l0aW9uLmRvdCh2VSk7CisgICAgICAgICAgICB2YXIgdiA9IGluZm8u
cG9zaXRpb24uZG90KHZWKTsKKyAgICAgICAgICAgIGluZm8uY29sb3IgPSB0aGlzLm1hdGVyaWFs
LmdldENvbG9yKHUsdik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbmZvLmNvbG9y
ID0gdGhpcy5tYXRlcmlhbC5nZXRDb2xvcigwLDApOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGluZm87CisgICAgfSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAg
ICByZXR1cm4gJ1BsYW5lIFsnICsgdGhpcy5wb3NpdGlvbiArICcsIGQ9JyArIHRoaXMuZCArICdd
JzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZs
b2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJh
Y2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFj
ZXIuSW50ZXJzZWN0aW9uSW5mbyA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5J
bnRlcnNlY3Rpb25JbmZvLnByb3RvdHlwZSA9IHsKKyAgICBpc0hpdDogZmFsc2UsCisgICAgaGl0
Q291bnQ6IDAsCisgICAgc2hhcGU6IG51bGwsCisgICAgcG9zaXRpb246IG51bGwsCisgICAgbm9y
bWFsOiBudWxsLAorICAgIGNvbG9yOiBudWxsLAorICAgIGRpc3RhbmNlOiBudWxsLAorCisgICAg
aW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNvbG9yID0gbmV3IEZsb2cu
UmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiAnSW50ZXJzZWN0aW9uIFsnICsgdGhpcy5wb3NpdGlvbiAr
ICddJzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9m
KEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5
VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlU
cmFjZXIuQ2FtZXJhID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLkNhbWVyYS5w
cm90b3R5cGUgPSB7CisgICAgcG9zaXRpb246IG51bGwsCisgICAgbG9va0F0OiBudWxsLAorICAg
IGVxdWF0b3I6IG51bGwsCisgICAgdXA6IG51bGwsCisgICAgc2NyZWVuOiBudWxsLAorCisgICAg
aW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKHBvcywgbG9va0F0LCB1cCkgeworICAgICAgICB0aGlzLnBv
c2l0aW9uID0gcG9zOworICAgICAgICB0aGlzLmxvb2tBdCA9IGxvb2tBdDsKKyAgICAgICAgdGhp
cy51cCA9IHVwOworICAgICAgICB0aGlzLmVxdWF0b3IgPSBsb29rQXQubm9ybWFsaXplKCkuY3Jv
c3ModGhpcy51cCk7CisgICAgICAgIHRoaXMuc2NyZWVuID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9y
LnByb3RvdHlwZS5hZGQodGhpcy5wb3NpdGlvbiwgdGhpcy5sb29rQXQpOworICAgIH0sCisKKyAg
ICBnZXRSYXk6IGZ1bmN0aW9uKHZ4LCB2eSl7CisgICAgICAgIHZhciBwb3MgPSBGbG9nLlJheVRy
YWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAorICAgICAgICAgICAgdGhpcy5zY3JlZW4s
CisgICAgICAgICAgICBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAor
ICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlwbHlT
Y2FsYXIodGhpcy5lcXVhdG9yLCB2eCksCisgICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIu
VmVjdG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcih0aGlzLnVwLCB2eSkKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKTsKKyAgICAgICAgcG9zLnkgPSBwb3MueSAqIC0xOworICAgICAgICB2YXIg
ZGlyID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAg
ICAgIHBvcywKKyAgICAgICAgICAgIHRoaXMucG9zaXRpb24KKyAgICAgICAgKTsKKworICAgICAg
ICB2YXIgcmF5ID0gbmV3IEZsb2cuUmF5VHJhY2VyLlJheShwb3MsIGRpci5ub3JtYWxpemUoKSk7
CisKKyAgICAgICAgcmV0dXJuIHJheTsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiAnUmF5IFtdJzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxv
Zy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxv
ZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5S
YXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuQmFja2dyb3VuZCA9IENsYXNzLmNyZWF0
ZSgpOworCitGbG9nLlJheVRyYWNlci5CYWNrZ3JvdW5kLnByb3RvdHlwZSA9IHsKKyAgICBjb2xv
ciA6IG51bGwsCisgICAgYW1iaWVuY2UgOiAwLjAsCisKKyAgICBpbml0aWFsaXplIDogZnVuY3Rp
b24oY29sb3IsIGFtYmllbmNlKSB7CisgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKKyAgICAg
ICAgdGhpcy5hbWJpZW5jZSA9IGFtYmllbmNlOworICAgIH0KK30KKy8qIEZha2UgYSBGbG9nLiog
bmFtZXNwYWNlICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9nID0g
e307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRy
YWNlciA9IHt9OworCitGbG9nLlJheVRyYWNlci5FbmdpbmUgPSBDbGFzcy5jcmVhdGUoKTsKKwor
RmxvZy5SYXlUcmFjZXIuRW5naW5lLnByb3RvdHlwZSA9IHsKKyAgICBjYW52YXM6IG51bGwsIC8q
IDJkIGNvbnRleHQgd2UgY2FuIHJlbmRlciB0byAqLworCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rp
b24ob3B0aW9ucyl7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5leHRlbmQoeworICAg
ICAgICAgICAgICAgIGNhbnZhc0hlaWdodDogMTAwLAorICAgICAgICAgICAgICAgIGNhbnZhc1dp
ZHRoOiAxMDAsCisgICAgICAgICAgICAgICAgcGl4ZWxXaWR0aDogMiwKKyAgICAgICAgICAgICAg
ICBwaXhlbEhlaWdodDogMiwKKyAgICAgICAgICAgICAgICByZW5kZXJEaWZmdXNlOiBmYWxzZSwK
KyAgICAgICAgICAgICAgICByZW5kZXJTaGFkb3dzOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBy
ZW5kZXJIaWdobGlnaHRzOiBmYWxzZSwKKyAgICAgICAgICAgICAgICByZW5kZXJSZWZsZWN0aW9u
czogZmFsc2UsCisgICAgICAgICAgICAgICAgcmF5RGVwdGg6IDIKKyAgICAgICAgICAgIH0sIG9w
dGlvbnMgfHwge30pOworCisgICAgICAgIHRoaXMub3B0aW9ucy5jYW52YXNIZWlnaHQgLz0gdGhp
cy5vcHRpb25zLnBpeGVsSGVpZ2h0OworICAgICAgICB0aGlzLm9wdGlvbnMuY2FudmFzV2lkdGgg
Lz0gdGhpcy5vcHRpb25zLnBpeGVsV2lkdGg7CisKKyAgICAgICAgLyogVE9ETzogZHluYW1pY2Fs
bHkgaW5jbHVkZSBvdGhlciBzY3JpcHRzICovCisgICAgfSwKKworICAgIHNldFBpeGVsOiBmdW5j
dGlvbih4LCB5LCBjb2xvcil7CisgICAgICAgIHZhciBweFcsIHB4SDsKKyAgICAgICAgcHhXID0g
dGhpcy5vcHRpb25zLnBpeGVsV2lkdGg7CisgICAgICAgIHB4SCA9IHRoaXMub3B0aW9ucy5waXhl
bEhlaWdodDsKKworICAgICAgICBpZiAodGhpcy5jYW52YXMpIHsKKyAgICAgICAgICB0aGlzLmNh
bnZhcy5maWxsU3R5bGUgPSBjb2xvci50b1N0cmluZygpOworICAgICAgICAgIHRoaXMuY2FudmFz
LmZpbGxSZWN0ICh4ICogcHhXLCB5ICogcHhILCBweFcsIHB4SCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgaWYgKHggPT09ICB5KSB7CisgICAgICAgICAgICBjaGVja051bWJlciArPSBj
b2xvci5icmlnaHRuZXNzKCk7CisgICAgICAgICAgfQorICAgICAgICAgIC8vIHByaW50KHggKiBw
eFcsIHkgKiBweEgsIHB4VywgcHhIKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZW5kZXJT
Y2VuZTogZnVuY3Rpb24oc2NlbmUsIGNhbnZhcyl7CisgICAgICAgIGNoZWNrTnVtYmVyID0gMDsK
KyAgICAgICAgLyogR2V0IGNhbnZhcyAqLworICAgICAgICBpZiAoY2FudmFzKSB7CisgICAgICAg
ICAgdGhpcy5jYW52YXMgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICB0aGlzLmNhbnZhcyA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgY2FudmFzSGVpZ2h0ID0gdGhpcy5vcHRpb25zLmNhbnZhc0hlaWdodDsKKyAgICAgICAgdmFy
IGNhbnZhc1dpZHRoID0gdGhpcy5vcHRpb25zLmNhbnZhc1dpZHRoOworCisgICAgICAgIGZvcih2
YXIgeT0wOyB5IDwgY2FudmFzSGVpZ2h0OyB5KyspeworICAgICAgICAgICAgZm9yKHZhciB4PTA7
IHggPCBjYW52YXNXaWR0aDsgeCsrKXsKKyAgICAgICAgICAgICAgICB2YXIgeXAgPSB5ICogMS4w
IC8gY2FudmFzSGVpZ2h0ICogMiAtIDE7CisgICAgICAgICAgCQl2YXIgeHAgPSB4ICogMS4wIC8g
Y2FudmFzV2lkdGggKiAyIC0gMTsKKworICAgICAgICAgIAkJdmFyIHJheSA9IHNjZW5lLmNhbWVy
YS5nZXRSYXkoeHAsIHlwKTsKKworICAgICAgICAgIAkJdmFyIGNvbG9yID0gdGhpcy5nZXRQaXhl
bENvbG9yKHJheSwgc2NlbmUpOworCisgICAgICAgICAgICAJdGhpcy5zZXRQaXhlbCh4LCB5LCBj
b2xvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoZWNrTnVtYmVy
ICE9PSAyMzIxKSB7CisgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTY2VuZSByZW5kZXJlZCBp
bmNvcnJlY3RseSIpOworICAgICAgICB9CisgICAgfSwKKworICAgIGdldFBpeGVsQ29sb3I6IGZ1
bmN0aW9uKHJheSwgc2NlbmUpeworICAgICAgICB2YXIgaW5mbyA9IHRoaXMudGVzdEludGVyc2Vj
dGlvbihyYXksIHNjZW5lLCBudWxsKTsKKyAgICAgICAgaWYoaW5mby5pc0hpdCl7CisgICAgICAg
ICAgICB2YXIgY29sb3IgPSB0aGlzLnJheVRyYWNlKGluZm8sIHJheSwgc2NlbmUsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGNvbG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzY2VuZS5i
YWNrZ3JvdW5kLmNvbG9yOworICAgIH0sCisKKyAgICB0ZXN0SW50ZXJzZWN0aW9uOiBmdW5jdGlv
bihyYXksIHNjZW5lLCBleGNsdWRlKXsKKyAgICAgICAgdmFyIGhpdHMgPSAwOworICAgICAgICB2
YXIgYmVzdCA9IG5ldyBGbG9nLlJheVRyYWNlci5JbnRlcnNlY3Rpb25JbmZvKCk7CisgICAgICAg
IGJlc3QuZGlzdGFuY2UgPSAyMDAwOworCisgICAgICAgIGZvcih2YXIgaT0wOyBpPHNjZW5lLnNo
YXBlcy5sZW5ndGg7IGkrKyl7CisgICAgICAgICAgICB2YXIgc2hhcGUgPSBzY2VuZS5zaGFwZXNb
aV07CisKKyAgICAgICAgICAgIGlmKHNoYXBlICE9IGV4Y2x1ZGUpeworICAgICAgICAgICAgICAg
IHZhciBpbmZvID0gc2hhcGUuaW50ZXJzZWN0KHJheSk7CisgICAgICAgICAgICAgICAgaWYoaW5m
by5pc0hpdCAmJiBpbmZvLmRpc3RhbmNlID49IDAgJiYgaW5mby5kaXN0YW5jZSA8IGJlc3QuZGlz
dGFuY2UpeworICAgICAgICAgICAgICAgICAgICBiZXN0ID0gaW5mbzsKKyAgICAgICAgICAgICAg
ICAgICAgaGl0cysrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBiZXN0LmhpdENvdW50ID0gaGl0czsKKyAgICAgICAgcmV0dXJuIGJlc3Q7Cisg
ICAgfSwKKworICAgIGdldFJlZmxlY3Rpb25SYXk6IGZ1bmN0aW9uKFAsTixWKXsKKyAgICAgICAg
dmFyIGMxID0gLU4uZG90KFYpOworICAgICAgICB2YXIgUjEgPSBGbG9nLlJheVRyYWNlci5WZWN0
b3IucHJvdG90eXBlLmFkZCgKKyAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90
b3R5cGUubXVsdGlwbHlTY2FsYXIoTiwgMipjMSksCisgICAgICAgICAgICBWCisgICAgICAgICk7
CisgICAgICAgIHJldHVybiBuZXcgRmxvZy5SYXlUcmFjZXIuUmF5KFAsIFIxKTsKKyAgICB9LAor
CisgICAgcmF5VHJhY2U6IGZ1bmN0aW9uKGluZm8sIHJheSwgc2NlbmUsIGRlcHRoKXsKKyAgICAg
ICAgLy8gQ2FsYyBhbWJpZW50CisgICAgICAgIHZhciBjb2xvciA9IEZsb2cuUmF5VHJhY2VyLkNv
bG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcihpbmZvLmNvbG9yLCBzY2VuZS5iYWNrZ3JvdW5k
LmFtYmllbmNlKTsKKyAgICAgICAgdmFyIG9sZENvbG9yID0gY29sb3I7CisgICAgICAgIHZhciBz
aGluaW5lc3MgPSBNYXRoLnBvdygxMCwgaW5mby5zaGFwZS5tYXRlcmlhbC5nbG9zcyArIDEpOwor
CisgICAgICAgIGZvcih2YXIgaT0wOyBpPHNjZW5lLmxpZ2h0cy5sZW5ndGg7IGkrKyl7CisgICAg
ICAgICAgICB2YXIgbGlnaHQgPSBzY2VuZS5saWdodHNbaV07CisKKyAgICAgICAgICAgIC8vIENh
bGMgZGlmZnVzZSBsaWdodGluZworICAgICAgICAgICAgdmFyIHYgPSBGbG9nLlJheVRyYWNlci5W
ZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaWdodC5wb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5w
b3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkubm9ybWFsaXplKCk7CisKKyAg
ICAgICAgICAgIGlmKHRoaXMub3B0aW9ucy5yZW5kZXJEaWZmdXNlKXsKKyAgICAgICAgICAgICAg
ICB2YXIgTCA9IHYuZG90KGluZm8ubm9ybWFsKTsKKyAgICAgICAgICAgICAgICBpZihMID4gMC4w
KXsKKyAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90
b3R5cGUuYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9y
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2Vy
LkNvbG9yLnByb3RvdHlwZS5tdWx0aXBseSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby5jb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLm11bHRpcGx5U2Nh
bGFyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGln
aHQuY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGdyZWF0ZXIgdGhlIGRlcHRoIHRoZSBtb3JlIGFjY3VyYXRlIHRo
ZSBjb2xvdXJzLCBidXQKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgZXhwb25lbnRpYWxseSAoISkg
ZXhwZW5zaXZlCisgICAgICAgICAgICBpZihkZXB0aCA8PSB0aGlzLm9wdGlvbnMucmF5RGVwdGgp
eworICAgICAgICAgIC8vIGNhbGN1bGF0ZSByZWZsZWN0aW9uIHJheQorICAgICAgICAgIGlmKHRo
aXMub3B0aW9ucy5yZW5kZXJSZWZsZWN0aW9ucyAmJiBpbmZvLnNoYXBlLm1hdGVyaWFsLnJlZmxl
Y3Rpb24gPiAwKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgdmFyIHJlZmxlY3Rpb25SYXkg
PSB0aGlzLmdldFJlZmxlY3Rpb25SYXkoaW5mby5wb3NpdGlvbiwgaW5mby5ub3JtYWwsIHJheS5k
aXJlY3Rpb24pOworICAgICAgICAgICAgICB2YXIgcmVmbCA9IHRoaXMudGVzdEludGVyc2VjdGlv
bihyZWZsZWN0aW9uUmF5LCBzY2VuZSwgaW5mby5zaGFwZSk7CisKKyAgICAgICAgICAgICAgaWYg
KHJlZmwuaXNIaXQgJiYgcmVmbC5kaXN0YW5jZSA+IDApeworICAgICAgICAgICAgICAgICAgcmVm
bC5jb2xvciA9IHRoaXMucmF5VHJhY2UocmVmbCwgcmVmbGVjdGlvblJheSwgc2NlbmUsIGRlcHRo
ICsgMSk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICByZWZsLmNv
bG9yID0gc2NlbmUuYmFja2dyb3VuZC5jb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgY29sb3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5
cGUuYmxlbmQoCisgICAgICAgICAgICAgICAgICAgIGNvbG9yLAorICAgICAgICAgICAgICAgICAg
ICByZWZsLmNvbG9yLAorICAgICAgICAgICAgICAgICAgICBpbmZvLnNoYXBlLm1hdGVyaWFsLnJl
ZmxlY3Rpb24KKyAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gUmVmcmFjdGlvbgorICAgICAgICAgICAgICAgIC8qIFRPRE8gKi8KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLyogUmVuZGVyIHNoYWRvd3MgYW5kIGhpZ2hsaWdodHMgKi8K
KworICAgICAgICAgICAgdmFyIHNoYWRvd0luZm8gPSBuZXcgRmxvZy5SYXlUcmFjZXIuSW50ZXJz
ZWN0aW9uSW5mbygpOworCisgICAgICAgICAgICBpZih0aGlzLm9wdGlvbnMucmVuZGVyU2hhZG93
cyl7CisgICAgICAgICAgICAgICAgdmFyIHNoYWRvd1JheSA9IG5ldyBGbG9nLlJheVRyYWNlci5S
YXkoaW5mby5wb3NpdGlvbiwgdik7CisKKyAgICAgICAgICAgICAgICBzaGFkb3dJbmZvID0gdGhp
cy50ZXN0SW50ZXJzZWN0aW9uKHNoYWRvd1JheSwgc2NlbmUsIGluZm8uc2hhcGUpOworICAgICAg
ICAgICAgICAgIGlmKHNoYWRvd0luZm8uaXNIaXQgJiYgc2hhZG93SW5mby5zaGFwZSAhPSBpbmZv
LnNoYXBlIC8qJiYgc2hhZG93SW5mby5zaGFwZS50eXBlICE9ICdQTEFORScqLyl7CisgICAgICAg
ICAgICAgICAgICAgIHZhciB2QSA9IEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5tdWx0
aXBseVNjYWxhcihjb2xvciwgMC41KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRCID0gKDAu
NSAqIE1hdGgucG93KHNoYWRvd0luZm8uc2hhcGUubWF0ZXJpYWwudHJhbnNwYXJlbmN5LCAwLjUp
KTsKKyAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90
b3R5cGUuYWRkU2NhbGFyKHZBLGRCKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgIC8vIFBob25nIHNwZWN1bGFyIGhpZ2hsaWdodHMKKyAgICAgIGlmKHRoaXMub3B0
aW9ucy5yZW5kZXJIaWdobGlnaHRzICYmICFzaGFkb3dJbmZvLmlzSGl0ICYmIGluZm8uc2hhcGUu
bWF0ZXJpYWwuZ2xvc3MgPiAwKXsKKyAgICAgICAgdmFyIEx2ID0gRmxvZy5SYXlUcmFjZXIuVmVj
dG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
LnNoYXBlLnBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0LnBvc2l0
aW9uCisgICAgICAgICAgICAgICAgICAgICAgICApLm5vcm1hbGl6ZSgpOworCisgICAgICAgIHZh
ciBFID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY2VuZS5jYW1lcmEucG9zaXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby5zaGFwZS5wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgKS5ub3JtYWxpemUoKTsKKworICAgICAgICB2YXIgSCA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rv
ci5wcm90b3R5cGUuc3VidHJhY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMdgorICAgICAgICAgICAgICAgICAgICAgICAgKS5u
b3JtYWxpemUoKTsKKworICAgICAgICB2YXIgZ2xvc3NXZWlnaHQgPSBNYXRoLnBvdyhNYXRoLm1h
eChpbmZvLm5vcm1hbC5kb3QoSCksIDApLCBzaGluaW5lc3MpOworICAgICAgICBjb2xvciA9IEZs
b2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5hZGQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLm11bHRpcGx5U2NhbGFyKGxpZ2h0
LmNvbG9yLCBnbG9zc1dlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IK
KyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y29sb3IubGltaXQoKTsKKyAgICAgICAgcmV0dXJuIGNvbG9yOworICAgIH0KK307CisKKworZnVu
Y3Rpb24gcmVuZGVyU2NlbmUoKXsKKyAgICB2YXIgc2NlbmUgPSBuZXcgRmxvZy5SYXlUcmFjZXIu
U2NlbmUoKTsKKworICAgIHNjZW5lLmNhbWVyYSA9IG5ldyBGbG9nLlJheVRyYWNlci5DYW1lcmEo
CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKDAsIDAs
IC0xNSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9y
KC0wLjIsIDAsIDUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2Vy
LlZlY3RvcigwLCAxLCAwKQorICAgICAgICAgICAgICAgICAgICApOworCisgICAgc2NlbmUuYmFj
a2dyb3VuZCA9IG5ldyBGbG9nLlJheVRyYWNlci5CYWNrZ3JvdW5kKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMC41LCAwLjUsIDAuNSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisKKyAgICB2YXIgc3BoZXJlID0gbmV3IEZsb2cuUmF5VHJhY2VyLlNoYXBl
LlNwaGVyZSgKKyAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigtMS41LCAxLjUsIDIp
LAorICAgICAgICAxLjUsCisgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5Tb2xp
ZCgKKyAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLDAuNSwwLjUpLAorICAg
ICAgICAgICAgMC4zLAorICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgMC4wLAorICAgICAg
ICAgICAgMi4wCisgICAgICAgICkKKyAgICApOworCisgICAgdmFyIHNwaGVyZTEgPSBuZXcgRmxv
Zy5SYXlUcmFjZXIuU2hhcGUuU3BoZXJlKAorICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVj
dG9yKDEsIDAuMjUsIDEpLAorICAgICAgICAwLjUsCisgICAgICAgIG5ldyBGbG9nLlJheVRyYWNl
ci5NYXRlcmlhbC5Tb2xpZCgKKyAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigw
LjksMC45LDAuOSksCisgICAgICAgICAgICAwLjEsCisgICAgICAgICAgICAwLjAsCisgICAgICAg
ICAgICAwLjAsCisgICAgICAgICAgICAxLjUKKyAgICAgICAgKQorICAgICk7CisKKyAgICB2YXIg
cGxhbmUgPSBuZXcgRmxvZy5SYXlUcmFjZXIuU2hhcGUuUGxhbmUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoMC4xLCAwLjksIC0wLjUp
Lm5vcm1hbGl6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5D
aGVzc2JvYXJkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2cu
UmF5VHJhY2VyLkNvbG9yKDEsMSwxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLDAsMCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICBzY2VuZS5z
aGFwZXMucHVzaChwbGFuZSk7CisgICAgc2NlbmUuc2hhcGVzLnB1c2goc3BoZXJlKTsKKyAgICBz
Y2VuZS5zaGFwZXMucHVzaChzcGhlcmUxKTsKKworICAgIHZhciBsaWdodCA9IG5ldyBGbG9nLlJh
eVRyYWNlci5MaWdodCgKKyAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3Rvcig1LCAxMCwg
LTEpLAorICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMC44LCAwLjgsIDAuOCkKKyAg
ICApOworCisgICAgdmFyIGxpZ2h0MSA9IG5ldyBGbG9nLlJheVRyYWNlci5MaWdodCgKKyAgICAg
ICAgbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigtMywgNSwgLTE1KSwKKyAgICAgICAgbmV3IEZs
b2cuUmF5VHJhY2VyLkNvbG9yKDAuOCwgMC44LCAwLjgpLAorICAgICAgICAxMDAKKyAgICApOwor
CisgICAgc2NlbmUubGlnaHRzLnB1c2gobGlnaHQpOworICAgIHNjZW5lLmxpZ2h0cy5wdXNoKGxp
Z2h0MSk7CisKKyAgICB2YXIgaW1hZ2VXaWR0aCA9IDEwMDsgLy8gJEYoJ2ltYWdlV2lkdGgnKTsK
KyAgICB2YXIgaW1hZ2VIZWlnaHQgPSAxMDA7IC8vICRGKCdpbWFnZUhlaWdodCcpOworICAgIHZh
ciBwaXhlbFNpemUgPSAiNSw1Ii5zcGxpdCgnLCcpOyAvLyAgJEYoJ3BpeGVsU2l6ZScpLnNwbGl0
KCcsJyk7CisgICAgdmFyIHJlbmRlckRpZmZ1c2UgPSB0cnVlOyAvLyAkRigncmVuZGVyRGlmZnVz
ZScpOworICAgIHZhciByZW5kZXJTaGFkb3dzID0gdHJ1ZTsgLy8gJEYoJ3JlbmRlclNoYWRvd3Mn
KTsKKyAgICB2YXIgcmVuZGVySGlnaGxpZ2h0cyA9IHRydWU7IC8vICRGKCdyZW5kZXJIaWdobGln
aHRzJyk7CisgICAgdmFyIHJlbmRlclJlZmxlY3Rpb25zID0gdHJ1ZTsgLy8gJEYoJ3JlbmRlclJl
ZmxlY3Rpb25zJyk7CisgICAgdmFyIHJheURlcHRoID0gMjsvLyRGKCdyYXlEZXB0aCcpOworCisg
ICAgdmFyIHJheXRyYWNlciA9IG5ldyBGbG9nLlJheVRyYWNlci5FbmdpbmUoCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNhbnZhc1dpZHRoOiBpbWFnZVdpZHRoLAorICAgICAgICAgICAgY2FudmFz
SGVpZ2h0OiBpbWFnZUhlaWdodCwKKyAgICAgICAgICAgIHBpeGVsV2lkdGg6IHBpeGVsU2l6ZVsw
XSwKKyAgICAgICAgICAgIHBpeGVsSGVpZ2h0OiBwaXhlbFNpemVbMV0sCisgICAgICAgICAgICAi
cmVuZGVyRGlmZnVzZSI6IHJlbmRlckRpZmZ1c2UsCisgICAgICAgICAgICAicmVuZGVySGlnaGxp
Z2h0cyI6IHJlbmRlckhpZ2hsaWdodHMsCisgICAgICAgICAgICAicmVuZGVyU2hhZG93cyI6IHJl
bmRlclNoYWRvd3MsCisgICAgICAgICAgICAicmVuZGVyUmVmbGVjdGlvbnMiOiByZW5kZXJSZWZs
ZWN0aW9ucywKKyAgICAgICAgICAgICJyYXlEZXB0aCI6IHJheURlcHRoCisgICAgICAgIH0KKyAg
ICApOworCisgICAgcmF5dHJhY2VyLnJlbmRlclNjZW5lKHNjZW5lLCBudWxsLCAwKTsKK30KKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpCisgIHJlbmRlclNjZW5lKCk7CkluZGV4OiBTdW5T
cGlkZXIvdGVzdHMvdjgtdjYvdjgtcmVnZXhwLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1blNwaWRlci90
ZXN0cy92OC12Ni92OC1yZWdleHAuanMJKHJldmlzaW9uIDApCisrKyBTdW5TcGlkZXIvdGVzdHMv
djgtdjYvdjgtcmVnZXhwLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MTMgQEAKKy8vIENv
cHlyaWdodCAyMDA5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgb24gMjAw
OS0wMS0zMC4KKworLy8gVGhpcyBiZW5jaG1hcmsgaXMgZ2VuZXJhdGVkIGJ5IGxvYWRpbmcgNTAg
b2YgdGhlIG1vc3QgcG9wdWxhciBwYWdlcworLy8gb24gdGhlIHdlYiBhbmQgbG9nZ2luZyBhbGwg
cmVnZXhwIG9wZXJhdGlvbnMgcGVyZm9ybWVkLiAgRWFjaAorLy8gb3BlcmF0aW9uIGlzIGdpdmVu
IGEgd2VpZ2h0IHRoYXQgaXMgY2FsY3VsYXRlZCBmcm9tIGFuIGVzdGltYXRlIG9mCisvLyB0aGUg
cG9wdWxhcml0eSBvZiB0aGUgcGFnZXMgd2hlcmUgaXQgb2NjdXJzIGFuZCB0aGUgbnVtYmVyIG9m
IHRpbWVzCisvLyBpdCBpcyBleGVjdXRlZCB3aGlsZSBsb2FkaW5nIGVhY2ggcGFnZS4gIEZpbmFs
bHkgdGhlIGxpdGVyYWwKKy8vIGxldHRlcnMgaW4gdGhlIGRhdGEgYXJlIGVuY29kZWQgdXNpbmcg
Uk9UMTMgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdAorLy8gYWZmZWN0IGhvdyB0aGUgcmVnZXhwcyBt
YXRjaCB0aGVpciBpbnB1dC4KKworZnVuY3Rpb24gcnVuUmVnRXhwQmVuY2htYXJrKCkgeworICB2
YXIgcmUwID0gL15iYS87CisgIHZhciByZTEgPSAvKCgoXHcrKTpcL1wvKShbXlwvOl0qKSg6KFxk
KykpPyk/KFteIz9dKikoXD8oW14jXSopKT8oIyguKikpPy87CisgIHZhciByZTIgPSAvXlxzKnxc
cyokL2c7CisgIHZhciByZTMgPSAvXGJRQlpQYmFnZWJ5X2N5bnBydWJ5cXJlXGIvOworICB2YXIg
cmU0ID0gLywvOworICB2YXIgcmU1ID0gL1xiUUJaUGJhZ2VieV9jeW5wcnVieXFyZVxiL2c7Cisg
IHZhciByZTYgPSAvXltcc1x4YTBdK3xbXHNceGEwXSskL2c7CisgIHZhciByZTcgPSAvKFxkKiko
XEQqKS9nOworICB2YXIgcmU4ID0gLz0vOworICB2YXIgcmU5ID0gLyhefFxzKWxodlwtaChcc3wk
KS87CisgIHZhciBzdHIwID0gJ1pibXZ5eW4vNS4wIChKdmFxYmpmOyBIOyBKdmFxYmpmIEFHIDUu
MTsgcmEtSEYpIE5jY3lySnJvWHZnLzUyOC45IChYVUdaWSwgeXZ4ciBUcnB4YikgUHVlYnpyLzIu
MC4xNTcuMCBGbnNuZXYvNTI4LjknOworICB2YXIgcmUxMCA9IC9cIy9nOworICB2YXIgcmUxMSA9
IC9cLi9nOworICB2YXIgcmUxMiA9IC8nL2c7CisgIHZhciByZTEzID0gL1w/W1x3XFddKihzZXZy
YXF2cXxwdW5hYXJ5dnF8dGViaGN2cSk9KFteXCZcPyNdKikvaTsKKyAgdmFyIHN0cjEgPSAnRnVi
cHhqbmlyIFN5bmZ1IDkuMCAgZTExNSc7CisgIHZhciByZTE0ID0gL1xzKy9nOworICB2YXIgcmUx
NSA9IC9eXHMqKFxTKihccytcUyspKilccyokLzsKKyAgdmFyIHJlMTYgPSAvKC1bYS16XSkvaTsK
KyAgZnVuY3Rpb24gcnVuQmxvY2swKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjUxMTsg
aSsrKSB7CisgICAgICByZTAuZXhlYygncHl2cHgnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxODQ0OyBpKyspIHsKKyAgICAgIHJlMS5leGVjKCd1Z2djOi8vampqLnNucHJvYmJ4
LnBiei95YnR2YS5jdWMnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3Mzk7IGkr
KykgeworICAgICAgJ1FCWlBiYWdlYnlfY3lucHJ1YnlxcmUnLnJlcGxhY2UocmUyLCAnJyk7Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTk4OyBpKyspIHsKKyAgICAgIHJlMS5leGVj
KCd1Z2djOi8vampqLnNucHJvYmJ4LnBiei8nKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA0NTQ7IGkrKykgeworICAgICAgcmUxLmV4ZWMoJ3VnZ2M6Ly9qamouc25wcm9iYngucGJ6
L2ZlcHUuY3VjJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzUyOyBpKyspIHsK
KyAgICAgIC9xcXFxfHFxcXxxcXxxfFpaWlp8WlpafFpafFp8bGxsbHxsbHxsfHV1fHV8VVV8VXx6
enx6fGZmfGZ8Z2d8Z3xzc3N8c3N8c3xtbW18bW18bS9nLmV4ZWMoJ3FxcXEsIFpaWiBxLCBsbGxs
Jyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzEyOyBpKyspIHsKKyAgICAgIHJl
My5leGVjKCd2YWNoZ2dya2cgUUJaUGJhZ2VieV9jeW5wcnVieXFyZScpOworICAgIH0KKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDI4MjsgaSsrKSB7CisgICAgICByZTQuZXhlYygnL1psRmNucHJV
YnpyY250ci9WYXFyay1GdmdyVWJ6ciwxMDAwMDAwMCcpOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDE3NzsgaSsrKSB7CisgICAgICAndmFjaGdncmtnJy5yZXBsYWNlKHJlNSwgJycp
OworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE3MDsgaSsrKSB7CisgICAgICAnNTI4
LjknLnJlcGxhY2UocmU2LCAnJyk7CisgICAgICByZTcuZXhlYygnNTI4Jyk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTU2OyBpKyspIHsKKyAgICAgIHJlOC5leGVjKCdWQ1BoeWdo
ZXI9cmEtSEYnKTsKKyAgICAgIHJlOC5leGVjKCdDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJyk7Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTQ0OyBpKyspIHsKKyAgICAgIHJlMC5leGVj
KCd4cmxjZXJmZicpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEzOTsgaSsrKSB7
CisgICAgICAnNTIxJy5yZXBsYWNlKHJlNiwgJycpOworICAgICAgcmU3LmV4ZWMoJzUyMScpOwor
ICAgICAgcmU5LmV4ZWMoJycpOworICAgICAgL0pyb1h2Z1wvKFxTKykvLmV4ZWMoc3RyMCk7Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTM3OyBpKyspIHsKKyAgICAgICdxdmkgLnNv
X3pyYWgnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJ3F2aSAuc29fenJhaCcucmVwbGFjZSgv
XFsvZywgJycpOworICAgICAgJ3F2aS5zb196cmFoJy5yZXBsYWNlKHJlMTEsICcnKTsKKyAgICB9
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMTc7IGkrKykgeworICAgICAgJ3V2cXFyYV9yeXJ6
Jy5yZXBsYWNlKHJlMiwgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDk1OyBp
KyspIHsKKyAgICAgIC8oPzpefDspXHMqc2V2cmFxZmdyZV95bmF0PShbXjtdKikvLmV4ZWMoJ3Nl
dnJhcWZncmVfbmFiYT1udnElM1FuNnNzOXA4NW44NjhybzlzMDU5cG44NTQ3MzU5NTZvMyUyNmVy
cyUzUSUyNmRmJTNRJTI2dnBnbCUzUUhGJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgOTM7IGkrKykgeworICAgICAgJ3VnZ2M6Ly91YnpyLnpsZmNucHIucGJ6L3ZhcXJrLnBzeicu
cmVwbGFjZShyZTEyLCAnJyk7CisgICAgICByZTEzLmV4ZWMoJ3VnZ2M6Ly91YnpyLnpsZmNucHIu
cGJ6L3ZhcXJrLnBzeicpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDkyOyBpKysp
IHsKKyAgICAgIHN0cjEucmVwbGFjZSgvKFthLXpBLVpdfFxzKSsvLCAnJyk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgODU7IGkrKykgeworICAgICAgJ3N2ZWZnJy5yZXBsYWNlKHJl
MTQsICcnKTsKKyAgICAgICdzdmVmZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAndWdnYzov
L2NlYnN2eXIuemxmY25wci5wYnovdmFxcmsucHN6Jy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAg
ICd5bmZnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICd5bmZnJy5yZXBsYWNlKHJlMTUsICcn
KTsKKyAgICAgIHJlMTYuZXhlYygncXZmY3lubCcpOworICAgICAgcmUxMy5leGVjKCd1Z2djOi8v
Y2Vic3Z5ci56bGZjbnByLnBiei92YXFyay5wc3onKTsKKyAgICB9CisgIH0KKyAgdmFyIHJlMTcg
PSAvKF58W15cXF0pXCJcXFwvUW5nclwoKC0/WzAtOV0rKVwpXFxcL1wiL2c7CisgIHZhciBzdHIy
ID0gJ3siYW56ciI6IiIsImFoem9yZVNiZXpuZyI6eyJQaGVlcmFwbFFycHZ6bnlRdnR2Z2YiOjIs
IlBoZWVyYXBsUXJwdnpueUZyY25lbmdiZSI6Ii4iLCJWZkVybnFCYXlsIjpnZWhyLCJQaGVlcmFw
bFRlYmhjRnZtcmYiOlszXSwiQWh6b3JlVGViaGNGdm1yZiI6WzNdLCJDcmVwcmFnVGViaGNGdm1y
ZiI6WzNdLCJQaGVlcmFwbFRlYmhjRnJjbmVuZ2JlIjoiLCIsIlBoZWVyYXBsRmx6b2J5IjoiXHhh
NCIsIkFuQUZsem9ieSI6IkFuQSIsIlBoZWVyYXBsQXJ0bmd2aXJDbmdncmVhIjowLCJBaHpvcmVB
cnRuZ3ZpckNuZ2dyZWEiOjEsIkNyZXByYWdDYmZ2Z3ZpckNuZ2dyZWEiOjAsIkNyZXByYWdBcnRu
Z3ZpckNuZ2dyZWEiOjAsIkFydG5ndmlyVmFzdmF2Z2xGbHpvYnkiOiItVmFzdmF2Z2wiLCJBcnRu
Z3ZpckZ2dGEiOiItIiwiQWh6b3JlUXJwdnpueVF2dHZnZiI6MiwiQWh6b3JlUXJwdnpueUZyY25l
bmdiZSI6Ii4iLCJBaHpvcmVUZWJoY0ZyY25lbmdiZSI6IiwiLCJQaGVlcmFwbENiZnZndmlyQ25n
Z3JlYSI6MCwiQ2Jmdmd2aXJWYXN2YXZnbEZsem9ieSI6IlZhc3ZhdmdsIiwiQ2Jmdmd2aXJGdnRh
IjoiKyIsIkNyZXByYWdRcnB2em55UXZ0dmdmIjoyLCJDcmVwcmFnUXJwdnpueUZyY25lbmdiZSI6
Ii4iLCJDcmVwcmFnVGViaGNGcmNuZW5nYmUiOiIsIiwiQ3JlcHJhZ0Zsem9ieSI6IiUiLCJDcmVa
dnl5ckZsem9ieSI6Ilx1MjAzMCIsIkFuZ3ZpclF2dHZnZiI6WyIwIiwiMSIsIjIiLCIzIiwiNCIs
IjUiLCI2IiwiNyIsIjgiLCI5Il0sIlF2dHZnRmhvZmd2Z2hndmJhIjoxfSwicW5nckd2enJTYmV6
bmciOnsiTlpRcmZ2dGFuZ2JlIjoiTloiLCJQbnlyYXFuZSI6eyJadmFGaGNjYmVncnFRbmdyR3Z6
ciI6IkAtNjIxMzU1NjgwMDAwMDBAIiwiWm5rRmhjY2JlZ3JxUW5nckd2enIiOiJAMjUzNDAyMzAw
Nzk5OTk5QCIsIk55dGJldmd1ekdsY3IiOjEsIlBueXJhcW5lR2xjciI6MSwiUmVuZiI6WzFdLCJH
amJRdnR2Z0xybmVabmsiOjIwMjksIlZmRXJucUJheWwiOmdlaHJ9LCJRbmdyRnJjbmVuZ2JlIjoi
LyIsIlN2ZWZnUW5sQnNKcnJ4IjowLCJQbnlyYXFuZUpycnhFaHlyIjowLCJTaHl5UW5nckd2enJD
bmdncmVhIjoicXFxcSwgcXEgWlpaWiBsbGxsIFVVOnp6OmZmIiwiWWJhdFFuZ3JDbmdncmVhIjoi
cXFxcSwgcXEgWlpaWiBsbGxsIiwiWWJhdEd2enJDbmdncmVhIjoiVVU6eno6ZmYiLCJaYmFndVFu
bENuZ2dyZWEiOiJaWlpaIHFxIiwiQ1pRcmZ2dGFuZ2JlIjoiQ1oiLCJFU1AxMTIzQ25nZ3JlYSI6
InFxcSwgcXEgWlpaIGxsbGwgVVVcJzpcJ3p6XCc6XCdmZiBcJ1RaR1wnIiwiRnViZWdRbmdyQ25n
Z3JlYSI6IlpaL3FxL2xsbGwiLCJGdWJlZ0d2enJDbmdncmVhIjoiVVU6enoiLCJGYmVnbm95clFu
Z3JHdnpyQ25nZ3JlYSI6ImxsbGxcJy1cJ1paXCctXCdxcVwnR1wnVVVcJzpcJ3p6XCc6XCdmZiIs
Ikd2enJGcmNuZW5nYmUiOiI6IiwiSGF2aXJlZm55RmJlZ25veXJRbmdyR3Z6ckNuZ2dyZWEiOiJs
bGxsXCctXCdaWlwnLVwncXEgVVVcJzpcJ3p6XCc6XCdmZlwnTVwnIiwiTHJuZVpiYWd1Q25nZ3Jl
YSI6ImxsbGwgWlpaWiIsIk5vb2VyaXZuZ3JxUW5sQW56cmYiOlsiRmhhIiwiWmJhIiwiR2hyIiwi
SnJxIiwiR3VoIiwiU2V2IiwiRm5nIl0sIkZ1YmVncmZnUW5sQW56cmYiOlsiRmgiLCJaYiIsIkdo
IiwiSnIiLCJHdSIsIlNlIiwiRm4iXSwiUW5sQW56cmYiOlsiRmhhcW5sIiwiWmJhcW5sIiwiR2hy
ZnFubCIsIkpycWFyZnFubCIsIkd1aGVmcW5sIiwiU2V2cW5sIiwiRm5naGVxbmwiXSwiTm9vZXJp
dm5ncnFaYmFndUFuenJmIjpbIlduYSIsIlNybyIsIlpuZSIsIk5jZSIsIlpubCIsIldoYSIsIldo
eSIsIk5odCIsIkZyYyIsIkJwZyIsIkFiaSIsIlFycCIsIiJdLCJaYmFndUFuenJmIjpbIlduYWhu
ZWwiLCJTcm9laG5lbCIsIlpuZXB1IiwiTmNldnkiLCJabmwiLCJXaGFyIiwiV2h5bCIsIk5odGhm
ZyIsIkZyY2dyem9yZSIsIkJwZ2JvcmUiLCJBYmlyem9yZSIsIlFycHJ6b3JlIiwiIl0sIlZmRXJu
cUJheWwiOmdlaHIsIkFuZ3ZpclBueXJhcW5lQW56ciI6IlRlcnRiZXZuYSBQbnlyYXFuZSIsIk5v
b2VyaXZuZ3JxWmJhZ3VUcmF2Z3ZpckFuenJmIjpbIlduYSIsIlNybyIsIlpuZSIsIk5jZSIsIlpu
bCIsIldoYSIsIldoeSIsIk5odCIsIkZyYyIsIkJwZyIsIkFiaSIsIlFycCIsIiJdLCJaYmFndVRy
YXZndmlyQW56cmYiOlsiV25haG5lbCIsIlNyb2VobmVsIiwiWm5lcHUiLCJOY2V2eSIsIlpubCIs
IldoYXIiLCJXaHlsIiwiTmh0aGZnIiwiRnJjZ3J6b3JlIiwiQnBnYm9yZSIsIkFiaXJ6b3JlIiwi
UXJwcnpvcmUiLCIiXX19JzsKKyAgdmFyIHN0cjMgPSAneyJhbnpyIjoicmEtSEYiLCJhaHpvcmVT
YmV6bmciOnsiUGhlZXJhcGxRcnB2em55UXZ0dmdmIjoyLCJQaGVlcmFwbFFycHZ6bnlGcmNuZW5n
YmUiOiIuIiwiVmZFcm5xQmF5bCI6c255ZnIsIlBoZWVyYXBsVGViaGNGdm1yZiI6WzNdLCJBaHpv
cmVUZWJoY0Z2bXJmIjpbM10sIkNyZXByYWdUZWJoY0Z2bXJmIjpbM10sIlBoZWVyYXBsVGViaGNG
cmNuZW5nYmUiOiIsIiwiUGhlZXJhcGxGbHpvYnkiOiIkIiwiQW5BRmx6b2J5IjoiQW5BIiwiUGhl
ZXJhcGxBcnRuZ3ZpckNuZ2dyZWEiOjAsIkFoem9yZUFydG5ndmlyQ25nZ3JlYSI6MSwiQ3JlcHJh
Z0NiZnZndmlyQ25nZ3JlYSI6MCwiQ3JlcHJhZ0FydG5ndmlyQ25nZ3JlYSI6MCwiQXJ0bmd2aXJW
YXN2YXZnbEZsem9ieSI6Ii1WYXN2YXZnbCIsIkFydG5ndmlyRnZ0YSI6Ii0iLCJBaHpvcmVRcnB2
em55UXZ0dmdmIjoyLCJBaHpvcmVRcnB2em55RnJjbmVuZ2JlIjoiLiIsIkFoem9yZVRlYmhjRnJj
bmVuZ2JlIjoiLCIsIlBoZWVyYXBsQ2Jmdmd2aXJDbmdncmVhIjowLCJDYmZ2Z3ZpclZhc3Zhdmds
Rmx6b2J5IjoiVmFzdmF2Z2wiLCJDYmZ2Z3ZpckZ2dGEiOiIrIiwiQ3JlcHJhZ1FycHZ6bnlRdnR2
Z2YiOjIsIkNyZXByYWdRcnB2em55RnJjbmVuZ2JlIjoiLiIsIkNyZXByYWdUZWJoY0ZyY25lbmdi
ZSI6IiwiLCJDcmVwcmFnRmx6b2J5IjoiJSIsIkNyZVp2eXlyRmx6b2J5IjoiXHUyMDMwIiwiQW5n
dmlyUXZ0dmdmIjpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiXSwiUXZ0
dmdGaG9mZ3ZnaGd2YmEiOjF9LCJxbmdyR3Z6clNiZXpuZyI6eyJOWlFyZnZ0YW5nYmUiOiJOWiIs
IlBueXJhcW5lIjp7Ilp2YUZoY2NiZWdycVFuZ3JHdnpyIjoiQC02MjEzNTU2ODAwMDAwMEAiLCJa
bmtGaGNjYmVncnFRbmdyR3Z6ciI6IkAyNTM0MDIzMDA3OTk5OTlAIiwiTnl0YmV2Z3V6R2xjciI6
MSwiUG55cmFxbmVHbGNyIjoxLCJSZW5mIjpbMV0sIkdqYlF2dHZnTHJuZVpuayI6MjAyOSwiVmZF
cm5xQmF5bCI6c255ZnJ9LCJRbmdyRnJjbmVuZ2JlIjoiLyIsIlN2ZWZnUW5sQnNKcnJ4IjowLCJQ
bnlyYXFuZUpycnhFaHlyIjowLCJTaHl5UW5nckd2enJDbmdncmVhIjoicXFxcSwgWlpaWiBxcSwg
bGxsbCB1Onp6OmZmIGdnIiwiWWJhdFFuZ3JDbmdncmVhIjoicXFxcSwgWlpaWiBxcSwgbGxsbCIs
IlliYXRHdnpyQ25nZ3JlYSI6InU6eno6ZmYgZ2ciLCJaYmFndVFubENuZ2dyZWEiOiJaWlpaIHFx
IiwiQ1pRcmZ2dGFuZ2JlIjoiQ1oiLCJFU1AxMTIzQ25nZ3JlYSI6InFxcSwgcXEgWlpaIGxsbGwg
VVVcJzpcJ3p6XCc6XCdmZiBcJ1RaR1wnIiwiRnViZWdRbmdyQ25nZ3JlYSI6IlovcS9sbGxsIiwi
RnViZWdHdnpyQ25nZ3JlYSI6InU6enogZ2ciLCJGYmVnbm95clFuZ3JHdnpyQ25nZ3JlYSI6Imxs
bGxcJy1cJ1paXCctXCdxcVwnR1wnVVVcJzpcJ3p6XCc6XCdmZiIsIkd2enJGcmNuZW5nYmUiOiI6
IiwiSGF2aXJlZm55RmJlZ25veXJRbmdyR3Z6ckNuZ2dyZWEiOiJsbGxsXCctXCdaWlwnLVwncXEg
VVVcJzpcJ3p6XCc6XCdmZlwnTVwnIiwiTHJuZVpiYWd1Q25nZ3JlYSI6IlpaWlosIGxsbGwiLCJO
b29lcml2bmdycVFubEFuenJmIjpbIkZoYSIsIlpiYSIsIkdociIsIkpycSIsIkd1aCIsIlNldiIs
IkZuZyJdLCJGdWJlZ3JmZ1FubEFuenJmIjpbIkZoIiwiWmIiLCJHaCIsIkpyIiwiR3UiLCJTZSIs
IkZuIl0sIlFubEFuenJmIjpbIkZoYXFubCIsIlpiYXFubCIsIkdocmZxbmwiLCJKcnFhcmZxbmwi
LCJHdWhlZnFubCIsIlNldnFubCIsIkZuZ2hlcW5sIl0sIk5vb2VyaXZuZ3JxWmJhZ3VBbnpyZiI6
WyJXbmEiLCJTcm8iLCJabmUiLCJOY2UiLCJabmwiLCJXaGEiLCJXaHkiLCJOaHQiLCJGcmMiLCJC
cGciLCJBYmkiLCJRcnAiLCIiXSwiWmJhZ3VBbnpyZiI6WyJXbmFobmVsIiwiU3JvZWhuZWwiLCJa
bmVwdSIsIk5jZXZ5IiwiWm5sIiwiV2hhciIsIldoeWwiLCJOaHRoZmciLCJGcmNncnpvcmUiLCJC
cGdib3JlIiwiQWJpcnpvcmUiLCJRcnByem9yZSIsIiJdLCJWZkVybnFCYXlsIjpzbnlmciwiQW5n
dmlyUG55cmFxbmVBbnpyIjoiVGVydGJldm5hIFBueXJhcW5lIiwiTm9vZXJpdm5ncnFaYmFndVRy
YXZndmlyQW56cmYiOlsiV25hIiwiU3JvIiwiWm5lIiwiTmNlIiwiWm5sIiwiV2hhIiwiV2h5Iiwi
Tmh0IiwiRnJjIiwiQnBnIiwiQWJpIiwiUXJwIiwiIl0sIlpiYWd1VHJhdmd2aXJBbnpyZiI6WyJX
bmFobmVsIiwiU3JvZWhuZWwiLCJabmVwdSIsIk5jZXZ5IiwiWm5sIiwiV2hhciIsIldoeWwiLCJO
aHRoZmciLCJGcmNncnpvcmUiLCJCcGdib3JlIiwiQWJpcnpvcmUiLCJRcnByem9yZSIsIiJdfX0n
OworICB2YXIgc3RyNCA9ICdIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVu
SjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgz
RXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpF
eUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIl
M1EnOworICB2YXIgc3RyNSA9ICdIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9h
RXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpE
dEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkw
cUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlE
MFI9JzsKKyAgdmFyIHJlMTggPSAvXlxzK3xccyskL2c7CisgIHZhciBzdHI2ID0gJ3VnZ2M6Ly9q
amouc25wcm9iYngucGJ6L3ZhcXJrLmN1Yyc7CisgIHZhciByZTE5ID0gLyg/Ol58XHMrKWJhKD86
XHMrfCQpLzsKKyAgdmFyIHJlMjAgPSAvWyssIF0vOworICB2YXIgcmUyMSA9IC95Ym5xcnF8cGJ6
Y3lyZ3IvOworICB2YXIgc3RyNyA9ICc7O2p2YXFiai5JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZR
PXNoYXBndmJhKHIpe3ZzKCFyKWluZSByPWp2YXFiai5yaXJhZztpbmUgYz0tMTt2cyhkMSljPWQx
LkVieXlic3NDbmFyeTtpbmUgYm89SWpUcmdCb3coIklqQ25heU5RX1ZRXyIrYyk7dnMoYm8mJmJv
LmZnbHlyLml2ZnZvdnl2Z2w9PSJpdmZ2b3lyIil7aW5lIGZucz1JakZucz84OjA7aW5lIHBoZUs9
ci5weXZyYWdLK0lqQk9GcGUoIlUiKStmbnMscGhlTD1yLnB5dnJhZ0wrSWpCT0ZwZSgiSSIpK2Zu
cztpbmUgeT1JakJPRUMoTlFfVlEsYm8sIlkiKSxnPUlqQk9FQyhOUV9WUSxibywiRyIpO2luZSBl
PXkrZDEuQ25hcnlmW2NdLkp2cWd1LG89ZytkMS5DbmFyeWZbY10uVXJ2dHVnO3ZzKChwaGVLPHkp
fHwocGhlSz5lKXx8KHBoZUw8Zyl8fChwaGVMPm8pKXt2cyhqdmFxYmouSWpCYUVieXlic3NOUV9W
USlJakJhRWJ5eWJzc05RX1ZRKGMpO3J5ZnIgSWpQeWJmck5xKE5RX1ZRLGMsZ2VociwiIik7fXJ5
ZnIgZXJnaGVhO31JalBuYXByeVpiaGZyWXZmZ3JhcmVOUV9WUSgpO307O2p2YXFiai5JakZyZ0Vi
eXlic3NDbmFyeU5RX1ZRPXNoYXBndmJhKGMpe2luZSB6PSJ6YmhmcnpiaXIiLHE9cWJwaHpyYWcs
cz1JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRO2M9SWpUYyhOUV9WUSxjKTt2cyhkMSYmZDEuRWJ5
eWJzc0NuYXJ5Pi0xKUlqUG5hcHJ5WmJoZnJZdmZncmFyZU5RX1ZRKCk7dnMoZDEpZDEuRWJ5eWJz
c0NuYXJ5PWM7Z2Vse3ZzKHEubnFxUmlyYWdZdmZncmFyZSlxLm5xcVJpcmFnWXZmZ3JhcmUoeixz
LHNueWZyKTtyeWZyIHZzKHEubmdnbnB1UmlyYWcpcS5uZ2ducHVSaXJhZygiYmEiK3oscyk7fXBu
Z3B1KHIpe319OztqdmFxYmouSWpQbmFwcnlaYmhmcll2ZmdyYXJlTlFfVlE9c2hhcGd2YmEoKXtp
bmUgej0iemJoZnJ6YmlyIixxPXFicGh6cmFnLHM9SWpQdXJweFpiaGZyQ2Jmdmd2YmFOUV9WUTt2
cyhkMSlkMS5FYnl5YnNzQ25hcnk9LTE7Z2Vse3ZzKHEuZXJ6YmlyUmlyYWdZdmZncmFyZSlxLmVy
emJpclJpcmFnWXZmZ3JhcmUoeixzLHNueWZyKTtyeWZyIHZzKHEucXJnbnB1UmlyYWcpcS5xcmdu
cHVSaXJhZygiYmEiK3oscyk7fXBuZ3B1KHIpe319OztkMS5JalRjPWQyKG4sYyl7aW5lIG5xPWQx
O3ZzKHZmQW5BKGMpKXtzYmUoaW5lIHY9MDt2PG5xLkNuYXJ5Zi55cmF0Z3U7disrKXZzKG5xLkNu
YXJ5Zlt2XS5BbnpyPT1jKWVyZ2hlYSB2O2VyZ2hlYSAwO31lcmdoZWEgYzt9OztkMS5JalRweT1k
MihuLGMscCl7aW5lIGNuPWQxLkNuYXJ5ZltJalRjKG4sYyldO3ZzKCFjbillcmdoZWEgMDt2cyh2
ZkFuQShwKSl7c2JlKGluZSB2PTA7djxjbi5QeXZweGd1ZWhmLnlyYXRndTt2KyspdnMoY24uUHl2
cHhndWVoZlt2XS5BbnpyPT1wKWVyZ2hlYSB2O2VyZ2hlYSAwO31lcmdoZWEgcDt9OztkMS5Jakdl
bnByPWQyKG4sZil7Z2Vse3ZzKGp2YXFialsiSWoiKyJRdFEiXSlqdmFxYmpbIklqIisiUXRRIl0o
biwxLGYpO31wbmdwdShyKXt9fTs7ZDEuSWpZdnp2ZzE9ZDIobixmKXtpbmUgbnE9ZDEsdmg9Zi5m
Y3l2ZygiLyIpO3NiZShpbmUgdj0wLHA9MDt2PHZoLnlyYXRndTt2Kyspe3ZzKHZoW3ZdLnlyYXRn
dT4wKXt2cyhucS5GelYueXJhdGd1PjApbnEuRnpWKz0iLyI7bnEuRnpWKz12aFt2XTtucS5GdFpb
bnEuRnRaLnlyYXRndV09c255ZnI7fX19OztkMS5Jall2enZnMD1kMihuLGYpe2luZSBucT1kMSx2
aD1mLmZjeXZnKCIvIik7c2JlKGluZSB2PTA7djx2aC55cmF0Z3U7disrKXt2cyh2aFt2XS55cmF0
Z3U+MCl7dnMobnEuT3ZDLnlyYXRndT4wKW5xLk92Qys9Ii8iO25xLk92Qys9dmhbdl07fX19Oztk
MS5JalJWU1Q9ZDIobixjKXtqdmFxYmpbIklqQ25heU5RX1ZRXyIrYysiX0JvdyJdPUlqVHJnQm93
KCJJakNuYXlOUV9WUV8iK2MrIl9Cb3ciKTt2cyhqdmFxYmpbIklqQ25heU5RX1ZRXyIrYysiX0Jv
dyJdPT1haHl5KWZyZ0d2enJiaGcoIklqUlZTVChOUV9WUSwiK2MrIikiLGQxLnJ2c2cpO307O2Qx
LklqTmF2elNIQz1kMihuLGMpe2luZSBucT1kMTt2cyhjPm5xLkNuYXJ5Zi55cmF0Z3UpZXJnaGVh
O2luZSBjbmE9bnEuQ25hcnlmW2NdLG5uPWdlaHIsb249Z2Vocix5bj1nZWhyLGVuPWdlaHIsY249
bnEuQ25hcnlmWzBdLHNmPW5xLlNoRixqPWNuLkp2cWd1LHU9Y24uVXJ2dHVnO3ZzKGo9PSIxMDAl
Iil7aj1zZjtlbj1zbnlmcjt5bj1zbnlmcjt9dnModT09IjEwMCUiKXt1PXNmO25uPXNueWZyO29u
PXNueWZyO312cyhjbi5Zblk9PSJZIil5bj1zbnlmcjt2cyhjbi5Zblk9PSJFIillbj1zbnlmcjt2
cyhjbi5Hblk9PSJHIilubj1zbnlmcjt2cyhjbi5Hblk9PSJPIilvbj1zbnlmcjtpbmUgaz0wLGw9
MDtmanZncHUobnEuTnNoUCU4KXtwbmZyIDA6b2Vybng7cG5mciAxOnZzKG5uKWw9LXNmO29lcm54
O3BuZnIgMjprPWotc2Y7b2Vybng7cG5mciAzOnZzKGVuKWs9ajtvZXJueDtwbmZyIDQ6az1qLXNm
O2w9dS1zZjtvZXJueDtwbmZyIDU6az1qLXNmO3ZzKG9uKWw9dTtvZXJueDtwbmZyIDY6bD11LXNm
O29lcm54O3BuZnIgNzp2cyh5bilrPS1zZjtsPXUtc2Y7b2Vybng7fXZzKG5xLk5zaFArKyA8bnEu
TnNoRylmcmdHdnpyYmhnKCgiSWpOYXZ6U0hDKE5RX1ZRLCIrYysiKSIpLG5xLk5zaEMpO3J5ZnJ7
az0tMTAwMDtsPWs7fWNuYS5ZcnNnQnNzZnJnPWs7Y25hLkdiY0Jzc2ZyZz1sO0lqTmhFcmNiKG4s
Yyk7fTs7ZDEuSWpUcmdFcm55Q2Jmdmd2YmE9ZDIobixiLGope2VyZ2hlYSBJakJPRUMubmNjeWwo
Z3V2ZixuZXRoenJhZ2YpO307O2QxLklqUG5hcHJ5R3Z6cmJoZz1kMihuLGMpe2M9SWpUYyhuLGMp
O2luZSBjYXk9ZDEuQ25hcnlmW2NdO3ZzKGNheSYmY2F5LlVnVSE9IiIpe3B5cm5lR3Z6cmJoZyhj
YXkuVWdVKTt9fTs7ZDEuSWpQbmFwcnlOeXlHdnpyYmhnZj1kMihuKXt2cyhkMS5ZYnB4R3Z6cmJo
Z1B1bmF0cmYpZXJnaGVhO3NiZShpbmUgYz0wO2M8ZDEuYmFjO2MrKylJalBuYXByeUd2enJiaGco
bixjKTt9OztkMS5JakZnbmVnR3Z6cmJoZz1kMihuLGMsYkcpe2M9SWpUYyhuLGMpO2luZSBjYXk9
ZDEuQ25hcnlmW2NdO3ZzKGNheSYmKChjYXkuVXZxckd2enJiaGdJbnlocj4wKXx8KG5ldGh6cmFn
Zi55cmF0Z3U9PTMmJmJHPjApKSl7cHlybmVHdnpyYmhnKGNheS5VZ1UpO2NheS5VZ1U9ZnJnR3Z6
cmJoZyhjYXkuVXZxck5wZ3ZiYSwobmV0aHpyYWdmLnlyYXRndT09Mz9iRzpjYXkuVXZxckd2enJi
aGdJbnlocikpO319OztkMS5JakVyZnJnR3Z6cmJoZz1kMihuLGMsYkcpe2M9SWpUYyhuLGMpO0lq
UG5hcHJ5R3Z6cmJoZyhuLGMpO3JpbnkoIklqRmduZWdHdnpyYmhnKE5RX1ZRLGMiKyhuZXRoenJh
Z2YueXJhdGd1PT0zPyIsYkciOiIiKSsiKSIpO307O2QxLklqRXJmcmdOeXlHdnpyYmhnZj1kMihu
KXtzYmUoaW5lIGM9MDtjPGQxLmJhYztjKyspSWpFcmZyZ0d2enJiaGcobixjKTt9OztkMS5JalFy
Z25wdXJlPWQyKG4scmlnLHNhcCl7Z2Vse3ZzKElqUVZSNSlyaW55KCJqdmFxYmoucXJnbnB1Umly
YWcoXCdiYSIrcmlnKyJcJywiK3NhcCsiTlFfVlEpIik7cnlmciB2cyghSWpRVlJabnApcmlueSgi
anZhcWJqLmVyemJpclJpcmFnWXZmZ3JhcmUoXCciK3JpZysiXCcsIitzYXArIk5RX1ZRLHNueWZy
KSIpO31wbmdwdShyKXt9fTs7ZDEuSWpQeXJuYUhjPWQyKG4pe0lqQ3ZhdChuLCJHIik7aW5lIG5x
PWQxO3NiZShpbmUgdj0wO3Y8bnEuQ25hcnlmLnlyYXRndTt2Kyspe0lqVXZxckNuYXJ5KG4sdixn
ZWhyKTt9Z2Vse0lqVHJnQm93KG5xLmd5YSkudmFhcmVVR1pZPSIiO31wbmdwdShyKXt9dnMobnEu
Z3lhIT1ucS5neWEyKWdlbHtJalRyZ0JvdyhucS5neWEyKS52YWFyZVVHWlk9IiI7fXBuZ3B1KHIp
e31nZWx7ZDE9YWh5eTt9cG5ncHUocil7fWdlbHtJalFyZ25wdXJlKG4sImhheWJucSIsIklqSGF5
TlFfVlEiKTt9cG5ncHUocil7fWdlbHtqdmFxYmouSWpIYXlOUV9WUT1haHl5O31wbmdwdShyKXt9
Z2Vse0lqUXJnbnB1cmUobiwiZnBlYnl5IiwiSWpGZU5RX1ZRIik7fXBuZ3B1KHIpe31nZWx7anZh
cWJqLklqRmVOUV9WUT1haHl5O31wbmdwdShyKXt9Z2Vse0lqUXJnbnB1cmUobiwiZXJmdm1yIiwi
SWpFbU5RX1ZRIik7fXBuZ3B1KHIpe31nZWx7anZhcWJqLklqRW1OUV9WUT1haHl5O31wbmdwdShy
KXt9Z2Vse0lqUXJnbnB1cmUobic7CisgIHZhciBzdHI4ID0gJzs7anZhcWJqLklqUHVycHhaYmhm
ckNiZnZndmJhTlFfVlE9c2hhcGd2YmEocil7dnMoIXIpaW5lIHI9anZhcWJqLnJpcmFnO2luZSBj
PS0xO3ZzKGp2YXFiai5Jak5xTlFfVlEpYz1qdmFxYmouSWpOcU5RX1ZRLkVieXlic3NDbmFyeTtp
bmUgYm89SWpUcmdCb3coIklqQ25heU5RX1ZRXyIrYyk7dnMoYm8mJmJvLmZnbHlyLml2ZnZvdnl2
Z2w9PSJpdmZ2b3lyIil7aW5lIGZucz1JakZucz84OjA7aW5lIHBoZUs9ci5weXZyYWdLK0lqQk9G
cGUoIlUiKStmbnMscGhlTD1yLnB5dnJhZ0wrSWpCT0ZwZSgiSSIpK2ZucztpbmUgeT1JakJPRUMo
TlFfVlEsYm8sIlkiKSxnPUlqQk9FQyhOUV9WUSxibywiRyIpO2luZSBlPXkranZhcWJqLklqTnFO
UV9WUS5DbmFyeWZbY10uSnZxZ3Usbz1nK2p2YXFiai5Jak5xTlFfVlEuQ25hcnlmW2NdLlVydnR1
Zzt2cygocGhlSzx5KXx8KHBoZUs+ZSl8fChwaGVMPGcpfHwocGhlTD5vKSl7dnMoanZhcWJqLklq
QmFFYnl5YnNzTlFfVlEpSWpCYUVieXlic3NOUV9WUShjKTtyeWZyIElqUHliZnJOcShOUV9WUSxj
LGdlaHIsIiIpO31yeWZyIGVyZ2hlYTt9SWpQbmFwcnlaYmhmcll2ZmdyYXJlTlFfVlEoKTt9Oztq
dmFxYmouSWpGcmdFYnl5YnNzQ25hcnlOUV9WUT1zaGFwZ3ZiYShjKXtpbmUgej0iemJoZnJ6Ymly
IixxPXFicGh6cmFnLHM9SWpQdXJweFpiaGZyQ2Jmdmd2YmFOUV9WUTtjPUlqVGMoTlFfVlEsYyk7
dnMoanZhcWJqLklqTnFOUV9WUSYmanZhcWJqLklqTnFOUV9WUS5FYnl5YnNzQ25hcnk+LTEpSWpQ
bmFwcnlaYmhmcll2ZmdyYXJlTlFfVlEoKTt2cyhqdmFxYmouSWpOcU5RX1ZRKWp2YXFiai5Jak5x
TlFfVlEuRWJ5eWJzc0NuYXJ5PWM7Z2Vse3ZzKHEubnFxUmlyYWdZdmZncmFyZSlxLm5xcVJpcmFn
WXZmZ3JhcmUoeixzLHNueWZyKTtyeWZyIHZzKHEubmdnbnB1UmlyYWcpcS5uZ2ducHVSaXJhZygi
YmEiK3oscyk7fXBuZ3B1KHIpe319OztqdmFxYmouSWpQbmFwcnlaYmhmcll2ZmdyYXJlTlFfVlE9
c2hhcGd2YmEoKXtpbmUgej0iemJoZnJ6YmlyIixxPXFicGh6cmFnLHM9SWpQdXJweFpiaGZyQ2Jm
dmd2YmFOUV9WUTt2cyhqdmFxYmouSWpOcU5RX1ZRKWp2YXFiai5Jak5xTlFfVlEuRWJ5eWJzc0Nu
YXJ5PS0xO2dlbHt2cyhxLmVyemJpclJpcmFnWXZmZ3JhcmUpcS5lcnpiaXJSaXJhZ1l2ZmdyYXJl
KHoscyxzbnlmcik7cnlmciB2cyhxLnFyZ25wdVJpcmFnKXEucXJnbnB1UmlyYWcoImJhIit6LHMp
O31wbmdwdShyKXt9fTs7anZhcWJqLklqTnFOUV9WUS5JalRjPXNoYXBndmJhKG4sYyl7aW5lIG5x
PWp2YXFiai5Jak5xTlFfVlE7dnModmZBbkEoYykpe3NiZShpbmUgdj0wO3Y8bnEuQ25hcnlmLnly
YXRndTt2KyspdnMobnEuQ25hcnlmW3ZdLkFuenI9PWMpZXJnaGVhIHY7ZXJnaGVhIDA7fWVyZ2hl
YSBjO307O2p2YXFiai5Jak5xTlFfVlEuSWpUcHk9c2hhcGd2YmEobixjLHApe2luZSBjbj1qdmFx
YmouSWpOcU5RX1ZRLkNuYXJ5ZltJalRjKG4sYyldO3ZzKCFjbillcmdoZWEgMDt2cyh2ZkFuQShw
KSl7c2JlKGluZSB2PTA7djxjbi5QeXZweGd1ZWhmLnlyYXRndTt2KyspdnMoY24uUHl2cHhndWVo
Zlt2XS5BbnpyPT1wKWVyZ2hlYSB2O2VyZ2hlYSAwO31lcmdoZWEgcDt9OztqdmFxYmouSWpOcU5R
X1ZRLklqR2VucHI9c2hhcGd2YmEobixmKXtnZWx7dnMoanZhcWJqWyJJaiIrIlF0USJdKWp2YXFi
alsiSWoiKyJRdFEiXShuLDEsZik7fXBuZ3B1KHIpe319OztqdmFxYmouSWpOcU5RX1ZRLklqWXZ6
dmcxPXNoYXBndmJhKG4sZil7aW5lIG5xPWp2YXFiai5Jak5xTlFfVlEsdmg9Zi5mY3l2ZygiLyIp
O3NiZShpbmUgdj0wLHA9MDt2PHZoLnlyYXRndTt2Kyspe3ZzKHZoW3ZdLnlyYXRndT4wKXt2cyhu
cS5GelYueXJhdGd1PjApbnEuRnpWKz0iLyI7bnEuRnpWKz12aFt2XTtucS5GdFpbbnEuRnRaLnly
YXRndV09c255ZnI7fX19OztqdmFxYmouSWpOcU5RX1ZRLklqWXZ6dmcwPXNoYXBndmJhKG4sZil7
aW5lIG5xPWp2YXFiai5Jak5xTlFfVlEsdmg9Zi5mY3l2ZygiLyIpO3NiZShpbmUgdj0wO3Y8dmgu
eXJhdGd1O3YrKyl7dnModmhbdl0ueXJhdGd1PjApe3ZzKG5xLk92Qy55cmF0Z3U+MClucS5PdkMr
PSIvIjtucS5PdkMrPXZoW3ZdO319fTs7anZhcWJqLklqTnFOUV9WUS5JalJWU1Q9c2hhcGd2YmEo
bixjKXtqdmFxYmpbIklqQ25heU5RX1ZRXyIrYysiX0JvdyJdPUlqVHJnQm93KCJJakNuYXlOUV9W
UV8iK2MrIl9Cb3ciKTt2cyhqdmFxYmpbIklqQ25heU5RX1ZRXyIrYysiX0JvdyJdPT1haHl5KWZy
Z0d2enJiaGcoIklqUlZTVChOUV9WUSwiK2MrIikiLGp2YXFiai5Jak5xTlFfVlEucnZzZyk7fTs7
anZhcWJqLklqTnFOUV9WUS5Jak5hdnpTSEM9c2hhcGd2YmEobixjKXtpbmUgbnE9anZhcWJqLklq
TnFOUV9WUTt2cyhjPm5xLkNuYXJ5Zi55cmF0Z3UpZXJnaGVhO2luZSBjbmE9bnEuQ25hcnlmW2Nd
LG5uPWdlaHIsb249Z2Vocix5bj1nZWhyLGVuPWdlaHIsY249bnEuQ25hcnlmWzBdLHNmPW5xLlNo
RixqPWNuLkp2cWd1LHU9Y24uVXJ2dHVnO3ZzKGo9PSIxMDAlIil7aj1zZjtlbj1zbnlmcjt5bj1z
bnlmcjt9dnModT09IjEwMCUiKXt1PXNmO25uPXNueWZyO29uPXNueWZyO312cyhjbi5Zblk9PSJZ
Iil5bj1zbnlmcjt2cyhjbi5Zblk9PSJFIillbj1zbnlmcjt2cyhjbi5Hblk9PSJHIilubj1zbnlm
cjt2cyhjbi5Hblk9PSJPIilvbj1zbnlmcjtpbmUgaz0wLGw9MDtmanZncHUobnEuTnNoUCU4KXtw
bmZyIDA6b2Vybng7cG5mciAxOnZzKG5uKWw9LXNmO29lcm54O3BuZnIgMjprPWotc2Y7b2Vybng7
cG5mciAzOnZzKGVuKWs9ajtvZXJueDtwbmZyIDQ6az1qLXNmO2w9dS1zZjtvZXJueDtwbmZyIDU6
az1qLXNmO3ZzKG9uKWw9dTtvZXJueDtwbmZyIDY6bD11LXNmO29lcm54O3BuZnIgNzp2cyh5bilr
PS1zZjtsPXUtc2Y7b2Vybng7fXZzKG5xLk5zaFArKyA8bnEuTnNoRylmcmdHdnpyYmhnKCgiSWpO
YXZ6U0hDKE5RX1ZRLCIrYysiKSIpLG5xLk5zaEMpO3J5ZnJ7az0tMTAwMDtsPWs7fWNuYS5ZcnNn
QnNzZnJnPWs7Y25hLkdiY0Jzc2ZyZz1sO0lqTmhFcmNiKG4sYyk7fTs7anZhcWJqLklqTnFOUV9W
US5JalRyZ0VybnlDYmZ2Z3ZiYT1zaGFwZ3ZiYShuLGIsail7ZXJnaGVhIElqQk9FQy5uY2N5bChn
dXZmLG5ldGh6cmFnZik7fTs7anZhcWJqLklqTnFOUV9WUS5JalBuYXByeUd2enJiaGc9c2hhcGd2
YmEobixjKXtjPUlqVGMobixjKTtpbmUgY2F5PWp2YXFiai5Jak5xTlFfVlEuQ25hcnlmW2NdO3Zz
KGNheSYmY2F5LlVnVSE9IiIpe3B5cm5lR3Z6cmJoZyhjYXkuVWdVKTt9fTs7anZhcWJqLklqTnFO
UV9WUS5JalBuYXByeU55eUd2enJiaGdmPXNoYXBndmJhKG4pe3ZzKGp2YXFiai5Jak5xTlFfVlEu
WWJweEd2enJiaGdQdW5hdHJmKWVyZ2hlYTtzYmUoaW5lIGM9MDtjPGp2YXFiai5Jak5xTlFfVlEu
YmFjO2MrKylJalBuYXByeUd2enJiaGcobixjKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqRmduZWdH
dnpyYmhnPXNoYXBndmJhKG4sYyxiRyl7Yz1JalRjKG4sYyk7aW5lIGNheT1qdmFxYmouSWpOcU5R
X1ZRLkNuYXJ5ZltjXTt2cyhjYXkmJigoY2F5LlV2cXJHdnpyYmhnSW55aHI+MCl8fChuZXRoenJh
Z2YueXJhdGd1PT0zJiZiRz4wKSkpe3B5cm5lR3Z6cmJoZyhjYXkuVWdVKTtjYXkuVWdVPWZyZ0d2
enJiaGcoY2F5LlV2cXJOcGd2YmEsKG5ldGh6cmFnZi55cmF0Z3U9PTM/Ykc6Y2F5LlV2cXJHdnpy
YmhnSW55aHIpKTt9fTs7anZhcWJqLklqTnFOUV9WUS5JakVyZnJnR3Z6cmJoZz1zaGFwZ3ZiYShu
LGMsYkcpe2M9SWpUYyhuLGMpO0lqUG5hcHJ5R3Z6cmJoZyhuLGMpO3JpbnkoIklqRmduZWdHdnpy
YmhnKE5RX1ZRLGMiKyhuZXRoenJhZ2YueXJhdGd1PT0zPyIsYkciOiIiKSsiKSIpO307O2p2YXFi
ai5Jak5xTlFfVlEuSWpFcmZyZ055eUd2enJiaGdmPXNoYXBndmJhKG4pe3NiZShpbmUgYz0wO2M8
anZhcWJqLklqTnFOUV9WUS5iYWM7YysrKUlqRXJmcmdHdnpyYmhnKG4sYyk7fTs7anZhcWJqLklq
TnFOUV9WUS5JalFyZ25wdXJlPXNoYXBndmJhKG4scmlnLHNhcCl7Z2Vse3ZzKElqUVZSNSlyaW55
KCJqdmFxYmoucXJnbnB1UmlyYWcoXCdiYSIrcmlnKyJcJywiK3NhcCsiTlFfVlEpIik7cnlmciB2
cyghSWpRVlJabnApcmlueSgianZhcWJqLmVyemJpcic7CisgIHZhciBzdHI5ID0gJzs7anZhcWJq
LklqUHVycHhaYmhmckNiZnZndmJhTlFfVlE9c2hhcGd2YmEocil7dnMoIXIpaW5lIHI9anZhcWJq
LnJpcmFnO2luZSBjPS0xO3ZzKGp2YXFiai5Jak5xTlFfVlEpYz1qdmFxYmouSWpOcU5RX1ZRLkVi
eXlic3NDbmFyeTtpbmUgYm89SWpUcmdCb3coIklqQ25heU5RX1ZRXyIrYyk7dnMoYm8mJmJvLmZn
bHlyLml2ZnZvdnl2Z2w9PSJpdmZ2b3lyIil7aW5lIGZucz1JakZucz84OjA7aW5lIHBoZUs9ci5w
eXZyYWdLK0lqQk9GcGUoIlUiKStmbnMscGhlTD1yLnB5dnJhZ0wrSWpCT0ZwZSgiSSIpK2Zucztp
bmUgeT1JakJPRUMoTlFfVlEsYm8sIlkiKSxnPUlqQk9FQyhOUV9WUSxibywiRyIpO2luZSBlPXkr
anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbY10uSnZxZ3Usbz1nK2p2YXFiai5Jak5xTlFfVlEuQ25h
cnlmW2NdLlVydnR1Zzt2cygocGhlSzx5KXx8KHBoZUs+ZSl8fChwaGVMPGcpfHwocGhlTD5vKSl7
dnMoanZhcWJqLklqQmFFYnl5YnNzTlFfVlEpSWpCYUVieXlic3NOUV9WUShjKTtyeWZyIElqUHli
ZnJOcShOUV9WUSxjLGdlaHIsIiIpO31yeWZyIGVyZ2hlYTt9SWpQbmFwcnlaYmhmcll2ZmdyYXJl
TlFfVlEoKTt9OztqdmFxYmouSWpGcmdFYnl5YnNzQ25hcnlOUV9WUT1zaGFwZ3ZiYShjKXtpbmUg
ej0iemJoZnJ6YmlyIixxPXFicGh6cmFnLHM9SWpQdXJweFpiaGZyQ2Jmdmd2YmFOUV9WUTtjPUlq
VGMoTlFfVlEsYyk7dnMoanZhcWJqLklqTnFOUV9WUSYmanZhcWJqLklqTnFOUV9WUS5FYnl5YnNz
Q25hcnk+LTEpSWpQbmFwcnlaYmhmcll2ZmdyYXJlTlFfVlEoKTt2cyhqdmFxYmouSWpOcU5RX1ZR
KWp2YXFiai5Jak5xTlFfVlEuRWJ5eWJzc0NuYXJ5PWM7Z2Vse3ZzKHEubnFxUmlyYWdZdmZncmFy
ZSlxLm5xcVJpcmFnWXZmZ3JhcmUoeixzLHNueWZyKTtyeWZyIHZzKHEubmdnbnB1UmlyYWcpcS5u
Z2ducHVSaXJhZygiYmEiK3oscyk7fXBuZ3B1KHIpe319OztqdmFxYmouSWpQbmFwcnlaYmhmcll2
ZmdyYXJlTlFfVlE9c2hhcGd2YmEoKXtpbmUgej0iemJoZnJ6YmlyIixxPXFicGh6cmFnLHM9SWpQ
dXJweFpiaGZyQ2Jmdmd2YmFOUV9WUTt2cyhqdmFxYmouSWpOcU5RX1ZRKWp2YXFiai5Jak5xTlFf
VlEuRWJ5eWJzc0NuYXJ5PS0xO2dlbHt2cyhxLmVyemJpclJpcmFnWXZmZ3JhcmUpcS5lcnpiaXJS
aXJhZ1l2ZmdyYXJlKHoscyxzbnlmcik7cnlmciB2cyhxLnFyZ25wdVJpcmFnKXEucXJnbnB1Umly
YWcoImJhIit6LHMpO31wbmdwdShyKXt9fTs7anZhcWJqLklqTnFOUV9WUS5JalRjPWQyKG4sYyl7
aW5lIG5xPWp2YXFiai5Jak5xTlFfVlE7dnModmZBbkEoYykpe3NiZShpbmUgdj0wO3Y8bnEuQ25h
cnlmLnlyYXRndTt2KyspdnMobnEuQ25hcnlmW3ZdLkFuenI9PWMpZXJnaGVhIHY7ZXJnaGVhIDA7
fWVyZ2hlYSBjO307O2p2YXFiai5Jak5xTlFfVlEuSWpUcHk9ZDIobixjLHApe2luZSBjbj1qdmFx
YmouSWpOcU5RX1ZRLkNuYXJ5ZltJalRjKG4sYyldO3ZzKCFjbillcmdoZWEgMDt2cyh2ZkFuQShw
KSl7c2JlKGluZSB2PTA7djxjbi5QeXZweGd1ZWhmLnlyYXRndTt2KyspdnMoY24uUHl2cHhndWVo
Zlt2XS5BbnpyPT1wKWVyZ2hlYSB2O2VyZ2hlYSAwO31lcmdoZWEgcDt9OztqdmFxYmouSWpOcU5R
X1ZRLklqR2VucHI9ZDIobixmKXtnZWx7dnMoanZhcWJqWyJJaiIrIlF0USJdKWp2YXFialsiSWoi
KyJRdFEiXShuLDEsZik7fXBuZ3B1KHIpe319OztqdmFxYmouSWpOcU5RX1ZRLklqWXZ6dmcxPWQy
KG4sZil7aW5lIG5xPWp2YXFiai5Jak5xTlFfVlEsdmg9Zi5mY3l2ZygiLyIpO3NiZShpbmUgdj0w
LHA9MDt2PHZoLnlyYXRndTt2Kyspe3ZzKHZoW3ZdLnlyYXRndT4wKXt2cyhucS5GelYueXJhdGd1
PjApbnEuRnpWKz0iLyI7bnEuRnpWKz12aFt2XTtucS5GdFpbbnEuRnRaLnlyYXRndV09c255ZnI7
fX19OztqdmFxYmouSWpOcU5RX1ZRLklqWXZ6dmcwPWQyKG4sZil7aW5lIG5xPWp2YXFiai5Jak5x
TlFfVlEsdmg9Zi5mY3l2ZygiLyIpO3NiZShpbmUgdj0wO3Y8dmgueXJhdGd1O3YrKyl7dnModmhb
dl0ueXJhdGd1PjApe3ZzKG5xLk92Qy55cmF0Z3U+MClucS5PdkMrPSIvIjtucS5PdkMrPXZoW3Zd
O319fTs7anZhcWJqLklqTnFOUV9WUS5JalJWU1Q9ZDIobixjKXtqdmFxYmpbIklqQ25heU5RX1ZR
XyIrYysiX0JvdyJdPUlqVHJnQm93KCJJakNuYXlOUV9WUV8iK2MrIl9Cb3ciKTt2cyhqdmFxYmpb
IklqQ25heU5RX1ZRXyIrYysiX0JvdyJdPT1haHl5KWZyZ0d2enJiaGcoIklqUlZTVChOUV9WUSwi
K2MrIikiLGp2YXFiai5Jak5xTlFfVlEucnZzZyk7fTs7anZhcWJqLklqTnFOUV9WUS5Jak5hdnpT
SEM9ZDIobixjKXtpbmUgbnE9anZhcWJqLklqTnFOUV9WUTt2cyhjPm5xLkNuYXJ5Zi55cmF0Z3Up
ZXJnaGVhO2luZSBjbmE9bnEuQ25hcnlmW2NdLG5uPWdlaHIsb249Z2Vocix5bj1nZWhyLGVuPWdl
aHIsY249bnEuQ25hcnlmWzBdLHNmPW5xLlNoRixqPWNuLkp2cWd1LHU9Y24uVXJ2dHVnO3ZzKGo9
PSIxMDAlIil7aj1zZjtlbj1zbnlmcjt5bj1zbnlmcjt9dnModT09IjEwMCUiKXt1PXNmO25uPXNu
eWZyO29uPXNueWZyO312cyhjbi5Zblk9PSJZIil5bj1zbnlmcjt2cyhjbi5Zblk9PSJFIillbj1z
bnlmcjt2cyhjbi5Hblk9PSJHIilubj1zbnlmcjt2cyhjbi5Hblk9PSJPIilvbj1zbnlmcjtpbmUg
az0wLGw9MDtmanZncHUobnEuTnNoUCU4KXtwbmZyIDA6b2Vybng7cG5mciAxOnZzKG5uKWw9LXNm
O29lcm54O3BuZnIgMjprPWotc2Y7b2Vybng7cG5mciAzOnZzKGVuKWs9ajtvZXJueDtwbmZyIDQ6
az1qLXNmO2w9dS1zZjtvZXJueDtwbmZyIDU6az1qLXNmO3ZzKG9uKWw9dTtvZXJueDtwbmZyIDY6
bD11LXNmO29lcm54O3BuZnIgNzp2cyh5bilrPS1zZjtsPXUtc2Y7b2Vybng7fXZzKG5xLk5zaFAr
KyA8bnEuTnNoRylmcmdHdnpyYmhnKCgiSWpOYXZ6U0hDKE5RX1ZRLCIrYysiKSIpLG5xLk5zaEMp
O3J5ZnJ7az0tMTAwMDtsPWs7fWNuYS5ZcnNnQnNzZnJnPWs7Y25hLkdiY0Jzc2ZyZz1sO0lqTmhF
cmNiKG4sYyk7fTs7anZhcWJqLklqTnFOUV9WUS5JalRyZ0VybnlDYmZ2Z3ZiYT1kMihuLGIsail7
ZXJnaGVhIElqQk9FQy5uY2N5bChndXZmLG5ldGh6cmFnZik7fTs7anZhcWJqLklqTnFOUV9WUS5J
alBuYXByeUd2enJiaGc9ZDIobixjKXtjPUlqVGMobixjKTtpbmUgY2F5PWp2YXFiai5Jak5xTlFf
VlEuQ25hcnlmW2NdO3ZzKGNheSYmY2F5LlVnVSE9IiIpe3B5cm5lR3Z6cmJoZyhjYXkuVWdVKTt9
fTs7anZhcWJqLklqTnFOUV9WUS5JalBuYXByeU55eUd2enJiaGdmPWQyKG4pe3ZzKGp2YXFiai5J
ak5xTlFfVlEuWWJweEd2enJiaGdQdW5hdHJmKWVyZ2hlYTtzYmUoaW5lIGM9MDtjPGp2YXFiai5J
ak5xTlFfVlEuYmFjO2MrKylJalBuYXByeUd2enJiaGcobixjKTt9OztqdmFxYmouSWpOcU5RX1ZR
LklqRmduZWdHdnpyYmhnPWQyKG4sYyxiRyl7Yz1JalRjKG4sYyk7aW5lIGNheT1qdmFxYmouSWpO
cU5RX1ZRLkNuYXJ5ZltjXTt2cyhjYXkmJigoY2F5LlV2cXJHdnpyYmhnSW55aHI+MCl8fChuZXRo
enJhZ2YueXJhdGd1PT0zJiZiRz4wKSkpe3B5cm5lR3Z6cmJoZyhjYXkuVWdVKTtjYXkuVWdVPWZy
Z0d2enJiaGcoY2F5LlV2cXJOcGd2YmEsKG5ldGh6cmFnZi55cmF0Z3U9PTM/Ykc6Y2F5LlV2cXJH
dnpyYmhnSW55aHIpKTt9fTs7anZhcWJqLklqTnFOUV9WUS5JakVyZnJnR3Z6cmJoZz1kMihuLGMs
Ykcpe2M9SWpUYyhuLGMpO0lqUG5hcHJ5R3Z6cmJoZyhuLGMpO3JpbnkoIklqRmduZWdHdnpyYmhn
KE5RX1ZRLGMiKyhuZXRoenJhZ2YueXJhdGd1PT0zPyIsYkciOiIiKSsiKSIpO307O2p2YXFiai5J
ak5xTlFfVlEuSWpFcmZyZ055eUd2enJiaGdmPWQyKG4pe3NiZShpbmUgYz0wO2M8anZhcWJqLklq
TnFOUV9WUS5iYWM7YysrKUlqRXJmcmdHdnpyYmhnKG4sYyk7fTs7anZhcWJqLklqTnFOUV9WUS5J
alFyZ25wdXJlPWQyKG4scmlnLHNhcCl7Z2Vse3ZzKElqUVZSNSlyaW55KCJqdmFxYmoucXJnbnB1
UmlyYWcoXCdiYSIrcmlnKyJcJywiK3NhcCsiTlFfVlEpIik7cnlmciB2cyghSWpRVlJabnApcmlu
eSgianZhcWJqLmVyemJpclJpcmFnWXZmZ3JhcmUoXCciK3JpZysiXCcsIitzYXArIk5RX1ZRLHNu
eWZyKSIpO31wbmdwdShyKXt9fTs7anZhcWJqLklqTnFOUV9WUS5JalB5cm5hJzsKKyAgZnVuY3Rp
b24gcnVuQmxvY2sxKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODE7IGkrKykgeworICAg
ICAgcmU4LmV4ZWMoJ1ZDPTc0LjEyNS43NS4xJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNzg7IGkrKykgeworICAgICAgJzkuMCAgZTExNScucmVwbGFjZSgvKFxzKStlLywgJycp
OworICAgICAgJ2snLnJlcGxhY2UoLy4vLCAnJyk7CisgICAgICBzdHIyLnJlcGxhY2UocmUxNywg
JycpOworICAgICAgc3RyMy5yZXBsYWNlKHJlMTcsICcnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2
MzE2NTgnKTsKKyAgICAgIHJlOC5leGVjKCdQYmhhZ2VsPUlJWiUzUScpOworICAgICAgcmU4LmV4
ZWMoJ1BiaGFnZWw9SUlaPScpOworICAgICAgcmU4LmV4ZWMoJ0NlcnNyZWVycVBoeWdoZXJDcmFx
dmF0PScpOworICAgICAgcmU4LmV4ZWMoc3RyNCk7CisgICAgICByZTguZXhlYyhzdHI1KTsKKyAg
ICAgIHJlOC5leGVjKCdfX2hnenA9MTQ0NjMxNjU4Jyk7CisgICAgICByZTguZXhlYygnZ3Z6ck1i
YXI9LTgnKTsKKyAgICAgIHJlOC5leGVjKCdndnpyTWJhcj0wJyk7CisgICAgICAvRm5zbmV2XC8o
XGQrXC5cZCspLy5leGVjKHN0cjApOworICAgICAgcmUzLmV4ZWMoJ3ZhY2hnZ3JrZyAgUUJaUGJh
Z2VieV9jeW5wcnVieXFyZScpOworICAgICAgcmUwLmV4ZWMoJ3hybHFiamEnKTsKKyAgICAgIHJl
MC5leGVjKCd4cmxoYycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc3OyBpKysp
IHsKKyAgICAgICd1Z2djOi8venJmZm50dmF0LnpsZmNucHIucGJ6L3ZhcXJrLnBzeicucmVwbGFj
ZShyZTEyLCAnJyk7CisgICAgICByZTEzLmV4ZWMoJ3VnZ2M6Ly96cmZmbnR2YXQuemxmY25wci5w
YnovdmFxcmsucHN6Jyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzM7IGkrKykg
eworICAgICAgJ0ZyZmZ2YmFGZ2JlbnRyPSU3TyUyMkdub1RodnElMjIlM04lN08lMjJ0aHZxJTIy
JTNOMTIzMTM2NzEyNTAxNyU3USU3UScucmVwbGFjZShyZTE4LCAnJyk7CisgICAgfQorICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNzI7IGkrKykgeworICAgICAgcmUxLmV4ZWMoc3RyNik7CisgICAg
fQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzE7IGkrKykgeworICAgICAgcmUxOS5leGVjKCcn
KTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3MDsgaSsrKSB7CisgICAgICAnMy41
LjAuMCcucmVwbGFjZShyZTExLCAnJyk7CisgICAgICBzdHI3LnJlcGxhY2UoL2QxL2csICcnKTsK
KyAgICAgIHN0cjgucmVwbGFjZSgvTlFfVlEvZywgJycpOworICAgICAgc3RyOS5yZXBsYWNlKC9k
Mi9nLCAnJyk7CisgICAgICAnTkklM1ExX0NJJTNRMV9QSSUzUTFfRUklM1ExX0hJJTNRMV9IUCUz
UTFfSUMlM1EwLjAuMC4wX0lIJTNRMCcucmVwbGFjZSgvXy9nLCAnJyk7CisgICAgICAnc3Z6X3ps
ZmNucHJfdWJ6cmNudHJfYWJneWJ0dHJxdmEsc3Z6X3psZmNucHJfYWJhX0hUUCxzdnpfemxmY25w
cl9oYXZncnEtZmduZ3JmJy5zcGxpdChyZTIwKTsKKyAgICAgIHJlMjEuZXhlYygneWJucXZhdCcp
OworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY4OyBpKyspIHsKKyAgICAgIHJlMS5l
eGVjKCcjJyk7CisgICAgICAvKD86WkZWUi4oXGQrXC5cZCspKXwoPzooPzpTdmVyc2JrfFRlbmFD
bmVucXZmYnxWcHJqcm5mcnkpLihcZCtcLlxkKykpfCg/OkJjcmVuLihcZCtcLlxkKykpfCg/Ok5j
Y3lySnJvWHZnLihcZCsoPzpcLlxkKyk/KSkvLmV4ZWMoc3RyMCk7CisgICAgICAvKFpucCBCRiBL
KXwoSnZhcWJqZjspLy5leGVjKHN0cjApOworICAgICAgL1RycHhiXC8oWzAtOV0rKS8uZXhlYyhz
dHIwKTsKKyAgICAgIHJlMjEuZXhlYygneWJucXJxJyk7CisgICAgfQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNDk7IGkrKykgeworICAgICAgcmUxNi5leGVjKCdwYnliZScpOworICAgIH0KKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDQ0OyBpKyspIHsKKyAgICAgICd1Z2djOi8vc2V2cmFxZi56
bGZjbnByLnBiei92YXFyay5wc3onLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgcmUxMy5leGVj
KCd1Z2djOi8vc2V2cmFxZi56bGZjbnByLnBiei92YXFyay5wc3onKTsKKyAgICB9CisgIH0KKyAg
dmFyIHJlMjIgPSAvXGJzb196cmFoXGIvOworICB2YXIgcmUyMyA9IC9eKD86KD86W146XC8/I10r
KTopPyg/OlwvXC8oPzpbXlwvPyNdKikpPyhbXj8jXSopKD86XD8oW14jXSopKT8oPzojKC4qKSk/
LzsKKyAgdmFyIHJlMjQgPSAvdWdnY2Y/OlwvXC8oW15cL10rXC4pP3NucHJvYmJ4XC5wYnpcLy87
CisgIHZhciByZTI1ID0gLyIvZzsKKyAgdmFyIHJlMjYgPSAvXihbXj8jXSspKD86XD8oW14jXSop
KT8oIy4qKT8vOworICBmdW5jdGlvbiBydW5CbG9jazIoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA0MDsgaSsrKSB7CisgICAgICAnZnJ5cnBncnEnLnJlcGxhY2UocmUxNCwgJycpOworICAg
ICAgJ2ZyeXJwZ3JxJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAzOTsgaSsrKSB7CisgICAgICAndmFjaGdncmtnIHV2cXFyYV9yeXJ6Jy5yZXBsYWNl
KC9cYnV2cXFyYV9yeXJ6XGIvZywgJycpOworICAgICAgcmUzLmV4ZWMoJ3ZhY2hnZ3JrZyAnKTsK
KyAgICAgIHJlMy5leGVjKCd2YWNoZ2dya2cnKTsKKyAgICAgIHJlMjIuZXhlYygnSFZZdmF4T2hn
Z2JhJyk7CisgICAgICByZTIyLmV4ZWMoJ0hWWXZheE9oZ2diYV9FJyk7CisgICAgICByZTIyLmV4
ZWMoJ0hWWXZheE9oZ2diYV9FSicpOworICAgICAgcmUyMi5leGVjKCd6cmFoX3lidHZhX3BiYWdu
dmFyZScpOworICAgICAgL1xidXZxcXJhX3J5cnpcYi8uZXhlYygndmFjaGdjbmZmamJlcScpOwor
ICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM3OyBpKyspIHsKKyAgICAgIHJlOC5leGVj
KCcxMTFzb3FzNTdxbzhvODQ4MHFvMThzb3IyMDExcjNuNTkxcTdzNnMzN3IxMjA5MDQnKTsKKyAg
ICAgIHJlOC5leGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNTY2MDE2NDk4MCcpOworICAg
ICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMyPTExMXNvcXM1N3FvOG84NDgwcW8xOHNvcjIwMTFyM241
OTFxN3M2czM3cjEyMDkwNCcpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM1OyBp
KyspIHsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAn
cHV2eXEgcDEgc3ZlZmcnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3N5bGJoZyBweWJmcnEn
LnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3N5bGJoZyBweWJmcnEnLnJlcGxhY2UocmUxNSwg
JycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM0OyBpKyspIHsKKyAgICAgIHJl
MTkuZXhlYygnZ25vMicpOworICAgICAgcmUxOS5leGVjKCdnbm8zJyk7CisgICAgICByZTguZXhl
YygnNDQxMzJyNTAzNjYwJyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2
NjkzMTY4NjAxMTMyOTYnKTsKKyAgICAgIHJlOC5leGVjKCdBRlBfenBfZGZjdHd6cy1hb3diXzgw
PTQ0MTMycjUwMzY2MCcpOworICAgICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMyPXM2cjQ1NzlucG40
cm4yMTM1czkwNHIwczc1cHAxbzUzMzRwNnM2cG9zcG8xMjY5NicpOworICAgICAgcmU4LmV4ZWMo
J3M2cjQ1NzlucG40cm4yMTM1czkwNHIwczc1cHAxbzUzMzRwNnM2cG9zcG8xMjY5NicpOworICAg
IH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspIHsKKyAgICAgIC9wdWVienIvaS5l
eGVjKHN0cjApOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMxOyBpKyspIHsKKyAg
ICAgICd1Z2djOi8vampqLnNucHJvYmJ4LnBiei8nLnJlcGxhY2UocmUyMywgJycpOworICAgICAg
cmU4LmV4ZWMoJ1NiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU4NTI3MjQ0ODE4Jyk7CisgICAgICBy
ZTguZXhlYygnVkM9NjYuMjQ5Ljg1LjEzMCcpOworICAgICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMy
PXMxNXE1M3A5bjM3MnNuNzZucHIxM28yNzFuNHMzcDVyMjlwMjM1NzQ2cDkwOHA1OCcpOworICAg
ICAgcmU4LmV4ZWMoJ3MxNXE1M3A5bjM3MnNuNzZucHIxM28yNzFuNHMzcDVyMjlwMjM1NzQ2cDkw
OHA1OCcpOworICAgICAgcmUyNC5leGVjKCd1Z2djOi8vampqLnNucHJvYmJ4LnBiei8nKTsKKyAg
ICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgaSsrKSB7CisgICAgICAnNDE5Jy5yZXBs
YWNlKHJlNiwgJycpOworICAgICAgLyg/Ol58XHMrKWd2enJmZ256Yyg/OlxzK3wkKS8uZXhlYygn
Z3Z6cmZnbnpjJyk7CisgICAgICByZTcuZXhlYygnNDE5Jyk7CisgICAgfQorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMjk7IGkrKykgeworICAgICAgJ3VnZ2M6Ly9qamouc25wcm9iYngucGJ6L3li
dHZhLmN1YycucmVwbGFjZShyZTIzLCAnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMjg7IGkrKykgeworICAgICAgJ0Z1bmVyIGd1dmYgdG5xdHJnJy5yZXBsYWNlKHJlMjUsICcn
KTsKKyAgICAgICdGdW5lciBndXZmIHRucXRyZycucmVwbGFjZShyZTEyLCAnJyk7CisgICAgICBy
ZTI2LmV4ZWMoJ3VnZ2M6Ly9qamoudGJidHlyLnBiei92dC9xdmVycGdiZWwnKTsKKyAgICB9Cisg
IH0KKyAgdmFyIHJlMjcgPSAvLVxEL2c7CisgIHZhciByZTI4ID0gL1xibnBndmluZ3JcYi87Cisg
IHZhciByZTI5ID0gLyUyUi9naTsKKyAgdmFyIHJlMzAgPSAvJTJTL2dpOworICB2YXIgcmUzMSA9
IC9eKG11LShQQXxHSil8d258eGIpJC87CisgIHZhciByZTMyID0gL1xzPztccz8vOworICB2YXIg
cmUzMyA9IC8lXHc/JC87CisgIHZhciByZTM0ID0gL1ROUVA9KFteO10qKS9pOworICB2YXIgc3Ry
MTAgPSAnRnJmZnZiYVFRUzI9MTExc29xczU3cW84bzg0ODBxbzE4c29yMjAxMXIzbjU5MXE3czZz
MzdyMTIwOTA0OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNy
ZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZT
YmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNTY2MDE2NDk4MCZndnpyTWJhcj0wJkhGRVlCUD1ES1d5
TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlI
bE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFU
eTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJF
eUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIgc3RyMTEgPSAnRnJmZnZiYVFR
UzI9MTExc29xczU3cW84bzg0ODBxbzE4c29yMjAxMXIzbjU5MXE3czZzMzdyMTIwOTA0OyBfX2hn
em09MTQ0NjMxNjU4LjEyMzEzNjM1NzAuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJw
Zyl8aGd6cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4zNDI2ODc1MjE5NzE4MDg0MDAwLjEy
MzEzNjM1NzAuMTIzMTM2MzU3MC4xMjMxMzYzNTcwLjE7IF9faGd6bz0xNDQ2MzE2NTguMC4xMC4x
MjMxMzYzNTcwOyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQ
aHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJx
UmtjdmVuZ3ZiYT02MzM2NjkzMTU2NjAxNjQ5ODAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFp
TVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFv
M0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFK
RXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4
MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjEyID0gJ3VnZ2M6Ly90YmJ0
eXJucWYudC5xYmhveXJweXZweC5hcmcvY250cm5xL25xZj9weXZyYWc9cG4tc3Z6X3psZmNucHJf
emxmY25wci11YnpyY250cl93ZiZxZz0xMjMxMzYzNTE0MDY1JnV5PXJhJm5xZm5zcj11dnR1JmJy
PWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZucWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2MzUx
NDA2NSZwdW5hYXJ5PXN2el96bGZjbnByX3VienJjbnRyX2FiZ3lidHRycXZhJTJQc3Z6X3psZmNu
cHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYmaGV5PXVnZ2MlM04lMlMlMlN1
YnpyLnpsZmNucHIucGJ6JTJTdmFxcmsucHN6Jm5xX2dsY3I9Z3JrZyZydnE9NjA4MzAyNyZybj0w
JnNlej0wJnRuX2l2cT0xMzI2NDY5MjIxLjEyMzEzNjM1NTcmdG5fZnZxPTEyMzEzNjM1NTcmdG5f
dXZxPTExMTQ2MzY1MDkmc3luZnU9OS4wLjExNSZoX3U9NzY4Jmhfaj0xMDI0JmhfbnU9NzM4Jmhf
bmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4MCZoX3V2Zj0yJmhfd25pbj1nZWhyJmhfYWN5aHQ9NyZo
X2F6dnpyPTIyJzsKKyAgdmFyIHN0cjEzID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1Bo
eWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFS
a2N2ZW5ndmJhPTYzMzY2OTMxNTY2MDE2NDk4MCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlN
VEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8z
SWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpF
eUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gw
WlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyMTQgPSAnWkZQaHlnaGVyPVZD
PTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNy
ZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2Njkz
MTU2NjAxNjQ5ODAmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5
MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkw
TUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhN
MnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9K
SDlEMFI9JzsKKyAgdmFyIHJlMzUgPSAvWzw+XS9nOworICB2YXIgc3RyMTUgPSAnRnJmZnZiYVFR
UzI9czZyNDU3OW5wbjRybjIxMzVzOTA0cjBzNzVwcDFvNTMzNHA2czZwb3NwbzEyNjk2OyBaRlBo
eWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEt
SEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJh
PTYzMzY2OTMxNjg2MDExMzI5NiZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hB
Y3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNn
TUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtC
R1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0y
eWlveDV1b0pIOUQwUj07IEFGUF96cF9kZmN0d3pzLWFvd2JfODA9NDQxMzJyNTAzNjYwJzsKKyAg
dmFyIHN0cjE2ID0gJ0ZyZmZ2YmFRUVMyPXM2cjQ1NzlucG40cm4yMTM1czkwNHIwczc1cHAxbzUz
MzRwNnM2cG9zcG8xMjY5NjsgQUZQX3pwX2RmY3R3enMtYW93Yl84MD00NDEzMnI1MDM2NjA7IF9f
aGd6bT0xNDQ2MzE2NTguMTIzMTM2MzYzOC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZl
cnBnKXxoZ3pwenE9KGFiYXIpOyBfX2hnem49MTQ0NjMxNjU4Ljk2NTg2NzA0NzY3OTQ5ODgwMC4x
MjMxMzYzNjM4LjEyMzEzNjM2MzguMTIzMTM2MzYzOC4xOyBfX2hnem89MTQ0NjMxNjU4LjAuMTAu
MTIzMTM2MzYzODsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZD
UGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBy
cVJrY3Zlbmd2YmE9NjMzNjY5MzE2ODYwMTEzMjk2Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhB
aU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1R
bzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBx
SkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNH
eDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHIxNyA9ICd1Z2djOi8vdGJi
dHlybnFmLnQucWJob3lycHl2cHguYXJnL2NudHJucS9ucWY/cHl2cmFnPXBuLXN2el96bGZjbnBy
X3psZmNucHItdWJ6cmNudHJfd2YmcWc9MTIzMTM2MzYyMTAxNCZ1eT1yYSZucWZuc3I9dXZ0dSZi
cj1oZ3M4JmFoel9ucWY9NCZiaGdjaGc9d2YmbnFncmZnPWJzcyZwYmVlcnluZ2JlPTEyMzEzNjM2
MjEwMTQmcHVuYWFyeT1zdnpfemxmY25wcl91YnpyY250cl9hYmd5YnR0cnF2YSUyUHN2el96bGZj
bnByX2FiYV9IVFAlMlBzdnpfemxmY25wcl9oYXZncnEtZmduZ3JmJmhleT11Z2djJTNOJTJTJTJT
Y2Vic3Z5ci56bGZjbnByLnBieiUyU3ZhcXJrLnBzeiZucV9nbGNyPWdya2cmcnZxPTYwODMwMjcm
cm49MCZzZXo9MCZ0bl9pdnE9MzQ4Njk5MTE5LjEyMzEzNjM2MjQmdG5fZnZxPTEyMzEzNjM2MjQm
dG5fdXZxPTg5NTUxMTAzNCZzeW5mdT05LjAuMTE1JmhfdT03NjgmaF9qPTEwMjQmaF9udT03Mzgm
aF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZmPTImaF93bmluPWdlaHImaF9hY3lodD03
JmhfYXp2enI9MjInOworICB2YXIgc3RyMTggPSAndWdnYzovL2pqai55cm9iYXBidmEuc2UveXYn
OworICB2YXIgc3RyMTkgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1I
RiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9
NjMzNjY5MzE2ODYwMTEzMjk2Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hB
Y3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNn
TUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtC
R1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0y
eWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHIyMCA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1
LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hl
ckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNjg2MDExMzI5
NiZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJ
enl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFU
SW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Yw
a1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOwor
ICBmdW5jdGlvbiBydW5CbG9jazMoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNzsgaSsr
KSB7CisgICAgICAnZTExNScucmVwbGFjZSgvW0EtWmEtel0vZywgJycpOworICAgIH0KKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDIzOyBpKyspIHsKKyAgICAgICdxdmZjeW5sJy5yZXBsYWNlKHJl
MjcsICcnKTsKKyAgICAgICdjYmZ2Z3ZiYScucmVwbGFjZShyZTI3LCAnJyk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMjI7IGkrKykgeworICAgICAgJ3VuYXF5cicucmVwbGFjZShy
ZTE0LCAnJyk7CisgICAgICAndW5hcXlyJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd5dmFy
Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICd5dmFyJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAg
ICAgICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdubycucmVwbGFjZShyZTE0LCAnJyk7CisgICAg
ICAnY25lcmFnIHB1ZWJ6cjYgZnZhdHlyMSBnbm8nLnJlcGxhY2UocmUxNSwgJycpOworICAgICAg
J2Z5dnFyZScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnZnl2cXJlJy5yZXBsYWNlKHJlMTUs
ICcnKTsKKyAgICAgIHJlMjguZXhlYygnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMjE7IGkrKykgeworICAgICAgJ3VnZ2M6Ly9qamouemxmY25wci5wYnovJy5yZXBsYWNlKHJl
MTIsICcnKTsKKyAgICAgIHJlMTMuZXhlYygndWdnYzovL2pqai56bGZjbnByLnBiei8nKTsKKyAg
ICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMDsgaSsrKSB7CisgICAgICAnY250cml2cmon
LnJlcGxhY2UocmUyOSwgJycpOworICAgICAgJ2NudHJpdnJqJy5yZXBsYWNlKHJlMzAsICcnKTsK
KyAgICAgIHJlMTkuZXhlYygneW5mZycpOworICAgICAgcmUxOS5leGVjKCdiYSBzdmVmZycpOwor
ICAgICAgcmU4LmV4ZWMoJ1ZDPTc0LjEyNS43NS4zJyk7CisgICAgfQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTk7IGkrKykgeworICAgICAgcmUzMS5leGVjKCdyYScpOworICAgIH0KKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDE4OyBpKyspIHsKKyAgICAgIHN0cjEwLnNwbGl0KHJlMzIpOwor
ICAgICAgc3RyMTEuc3BsaXQocmUzMik7CisgICAgICBzdHIxMi5yZXBsYWNlKHJlMzMsICcnKTsK
KyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMC4xMC4xMjMxMzYzNTcwJyk7CisgICAgICByZTgu
ZXhlYygnMTQ0NjMxNjU4LjEyMzEzNjM1NzAuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2
ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4zNDI2ODc1
MjE5NzE4MDg0MDAwLjEyMzEzNjM1NzAuMTIzMTM2MzU3MC4xMjMxMzYzNTcwLjEnKTsKKyAgICAg
IHJlOC5leGVjKHN0cjEzKTsKKyAgICAgIHJlOC5leGVjKHN0cjE0KTsKKyAgICAgIHJlOC5leGVj
KCdfX2hnem49MTQ0NjMxNjU4LjM0MjY4NzUyMTk3MTgwODQwMDAuMTIzMTM2MzU3MC4xMjMxMzYz
NTcwLjEyMzEzNjM1NzAuMScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4x
MC4xMjMxMzYzNTcwJyk7CisgICAgICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzYz
NTcwLjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsK
KyAgICAgIHJlMzQuZXhlYyhzdHIxMCk7CisgICAgICByZTM0LmV4ZWMoc3RyMTEpOworICAgIH0K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE3OyBpKyspIHsKKyAgICAgIHN0cjAubWF0Y2goL3pm
dnIvZ2kpOworICAgICAgc3RyMC5tYXRjaCgvYmNyZW4vZ2kpOworICAgICAgc3RyMTUuc3BsaXQo
cmUzMik7CisgICAgICBzdHIxNi5zcGxpdChyZTMyKTsKKyAgICAgICdvaGdnYmEnLnJlcGxhY2Uo
cmUxNCwgJycpOworICAgICAgJ29oZ2diYScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHV2
eXEgcDEgc3ZlZmcgc3lsYmhnIHB5YmZycScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHV2
eXEgcDEgc3ZlZmcgc3lsYmhnIHB5YmZycScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHZn
dnJmJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdmd2cmYnLnJlcGxhY2UocmUxNSwgJycp
OworICAgICAgJ3B5YmZycScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHliZnJxJy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICdxcnknLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3Fy
eScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAndXF5X3piYScucmVwbGFjZShyZTE0LCAnJyk7
CisgICAgICAndXF5X3piYScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICBzdHIxNy5yZXBsYWNl
KHJlMzMsICcnKTsKKyAgICAgIHN0cjE4LnJlcGxhY2UoLyUzUC9nLCAnJyk7CisgICAgICBzdHIx
OC5yZXBsYWNlKC8lM1IvZywgJycpOworICAgICAgc3RyMTgucmVwbGFjZSgvJTNxL2csICcnKTsK
KyAgICAgIHN0cjE4LnJlcGxhY2UocmUzNSwgJycpOworICAgICAgJ3l2YXh5dmZnMTYnLnJlcGxh
Y2UocmUxNCwgJycpOworICAgICAgJ3l2YXh5dmZnMTYnLnJlcGxhY2UocmUxNSwgJycpOworICAg
ICAgJ3p2YWhmJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICd6dmFoZicucmVwbGFjZShyZTE1
LCAnJyk7CisgICAgICAnYmNyYScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnYmNyYScucmVw
bGFjZShyZTE1LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjUgZnZhdHlyMSBwcyBOVScucmVw
bGFjZShyZTE0LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjUgZnZhdHlyMSBwcyBOVScucmVw
bGFjZShyZTE1LCAnJyk7CisgICAgICAnY3lubHJlJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAg
ICdjeW5scmUnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2N5aGYnLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgJ2N5aGYnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NiX3VxeScucmVw
bGFjZShyZTE0LCAnJyk7CisgICAgICAnY2JfdXF5Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAg
ICdoeUpWenQnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2h5SlZ6dCcucmVwbGFjZShyZTE1
LCAnJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAuMTIzMTM2MzYzOCcpOworICAg
ICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzYzNjM4LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6
cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTgu
OTY1ODY3MDQ3Njc5NDk4ODAwLjEyMzEzNjM2MzguMTIzMTM2MzYzOC4xMjMxMzYzNjM4LjEnKTsK
KyAgICAgIHJlOC5leGVjKCc0NDEzMjY4cTM2NjAnKTsKKyAgICAgIHJlOC5leGVjKCc0c3M3NDdv
Nzc5MDQzMzNxMzc0b3I4NHFycjFzOXIwbnBycDhyNXE4MTUzNG85NG4nKTsKKyAgICAgIHJlOC5l
eGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyMTY5OTA5MzA2MCcpOworICAgICAgcmU4LmV4
ZWMoJ1ZDPTc0LjEyNS43NS4yMCcpOworICAgICAgcmU4LmV4ZWMoc3RyMTkpOworICAgICAgcmU4
LmV4ZWMoc3RyMjApOworICAgICAgcmU4LmV4ZWMoJ0FGUF96cF90ZndzYnJnLWFvd2JfODA9NDQx
MzI2OHEzNjYwJyk7CisgICAgICByZTguZXhlYygnRnJmZnZiYVFRUzI9NHNzNzQ3bzc3OTA0MzMz
cTM3NG9yODRxcnIxczlyMG5wcnA4cjVxODE1MzRvOTRuJyk7CisgICAgICByZTguZXhlYygnX19o
Z3puPTE0NDYzMTY1OC45NjU4NjcwNDc2Nzk0OTg4MDAuMTIzMTM2MzYzOC4xMjMxMzYzNjM4LjEy
MzEzNjM2MzguMScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMx
MzYzNjM4Jyk7CisgICAgICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzYzNjM4LjEu
MS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAg
IHJlMzQuZXhlYyhzdHIxNSk7CisgICAgICByZTM0LmV4ZWMoc3RyMTYpOworICAgIH0KKyAgfQor
ICB2YXIgcmUzNiA9IC91ZXJzfGZlcHxmcnlycGdycS87CisgIHZhciByZTM3ID0gL1xzKihbKz5+
XHNdKVxzKihbYS16QS1aIy4qOlxbXSkvZzsKKyAgdmFyIHJlMzggPSAvXihcdyt8XCopJC87Cisg
IHZhciBzdHIyMSA9ICdGcmZmdmJhUVFTMj1zMTVxNTNwOW4zNzJzbjc2bnByMTNvMjcxbjRzM3A1
cjI5cDIzNTc0NnA5MDhwNTg7IFpGUGh5Z2hlcj1WQz02Ni4yNDkuODUuMTMwJlZDUGh5Z2hlcj1y
YS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhh
Z2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTg1MjcyNDQ4MTgmZ3Z6ck1iYXI9MCZI
RkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVX
NUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5
QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURv
M0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAgdmFyIHN0cjIyID0g
J0ZyZmZ2YmFRUVMyPXMxNXE1M3A5bjM3MnNuNzZucHIxM28yNzFuNHMzcDVyMjlwMjM1NzQ2cDkw
OHA1ODsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY3ODIyLjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6
cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2NTguNDEyNzUyMDYzMDMy
MTk4NDUwMC4xMjMxMzY3ODIyLjEyMzEzNjc4MjIuMTIzMTM2NzgyMi4xOyBfX2hnem89MTQ0NjMx
NjU4LjAuMTAuMTIzMTM2NzgyMjsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHlnaGVyPVZDPTY2LjI0
OS44NS4xMzAmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1J
SVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTg1MjcyNDQ4MTgmZ3Z6ck1iYXI9LTgmSEZF
WUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVE
Mjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJR
TjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNB
MExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjIzID0g
J3VnZ2M6Ly90YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250cm5xL25xZj9weXZyYWc9cG4t
c3Z6X3psZmNucHJfemxmY25wci11YnpyY250cl93ZiZxZz0xMjMxMzY3ODAzNzk3JnV5PXJhJm5x
Zm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZucWdyZmc9YnNzJnBiZWVyeW5n
YmU9MTIzMTM2NzgwMzc5NyZwdW5hYXJ5PXN2el96bGZjbnByX3VienJjbnRyX2FiZ3lidHRycXZh
JTJQc3Z6X3psZmNucHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYmaGV5PXVn
Z2MlM04lMlMlMlN6cmZmbnR2YXQuemxmY25wci5wYnolMlN2YXFyay5wc3ombnFfZ2xjcj1ncmtn
JnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAmdG5faXZxPTExOTI1NTIwOTEuMTIzMTM2NzgwNyZ0bl9m
dnE9MTIzMTM2NzgwNyZ0bl91dnE9MTE1NTQ0Njg1NyZzeW5mdT05LjAuMTE1JmhfdT03NjgmaF9q
PTEwMjQmaF9udT03MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZmPTImaF93bmlu
PWdlaHImaF9hY3lodD03JmhfYXp2enI9MjInOworICB2YXIgc3RyMjQgPSAnWkZQaHlnaGVyPVZD
PTY2LjI0OS44NS4xMzAmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJo
YWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTg1MjcyNDQ4MTgmZ3Z6ck1iYXI9
LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJ
aHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFp
TVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNB
UE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0
cjI1ID0gJ1pGUGh5Z2hlcj1WQz02Ni4yNDkuODUuMTMwJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVl
cnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2Jl
cHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTg1MjcyNDQ4MTgmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxI
QWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxN
UW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkw
cUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlD
R3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAgdmFyIHN0cjI2ID0gJ2h5LnluYXQtZnJ5
cnBnYmUnOworICB2YXIgcmUzOSA9IC9cXC9nOworICB2YXIgcmU0MCA9IC8gL2c7CisgIHZhciBy
ZTQxID0gL1wvXHhjNFwvdC87CisgIHZhciByZTQyID0gL1wvXHhkNlwvdC87CisgIHZhciByZTQz
ID0gL1wvXHhkY1wvdC87CisgIHZhciByZTQ0ID0gL1wvXHhkZlwvdC87CisgIHZhciByZTQ1ID0g
L1wvXHhlNFwvdC87CisgIHZhciByZTQ2ID0gL1wvXHhmNlwvdC87CisgIHZhciByZTQ3ID0gL1wv
XHhmY1wvdC87CisgIHZhciByZTQ4ID0gL1xXL2c7CisgIHZhciByZTQ5ID0gL3VlcnN8ZmVwfGZn
bHlyLzsKKyAgZnVuY3Rpb24gcnVuQmxvY2s0KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTY7IGkrKykgeworICAgICAgJycucmVwbGFjZSgvXCovZywgJycpOworICAgICAgL1xibnBndmly
XGIvLmV4ZWMoJ25wZ3ZpcicpOworICAgICAgL3N2ZXJzYmsvaS5leGVjKHN0cjApOworICAgICAg
cmUzNi5leGVjKCdnbGNyJyk7CisgICAgICAvemZ2ci9pLmV4ZWMoc3RyMCk7CisgICAgICAvYmNy
ZW4vaS5leGVjKHN0cjApOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE1OyBpKysp
IHsKKyAgICAgIHN0cjIxLnNwbGl0KHJlMzIpOworICAgICAgc3RyMjIuc3BsaXQocmUzMik7Cisg
ICAgICAndWdnYzovL29oeXlyZ3ZhZi56bGZjbnByLnBiei92YXFyay5wc3onLnJlcGxhY2UocmUx
MiwgJycpOworICAgICAgc3RyMjMucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICAneXYnLnJlcGxh
Y2UocmUzNywgJycpOworICAgICAgJ3l2Jy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgIHJlOC5l
eGVjKCcxNDQ2MzE2NTguMC4xMC4xMjMxMzY3ODIyJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMx
NjU4LjEyMzEzNjc4MjIuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpx
PShhYmFyKScpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC40MTI3NTIwNjMwMzIxOTg0NTAw
LjEyMzEzNjc4MjIuMTIzMTM2NzgyMi4xMjMxMzY3ODIyLjEnKTsKKyAgICAgIHJlOC5leGVjKHN0
cjI0KTsKKyAgICAgIHJlOC5leGVjKHN0cjI1KTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0
NjMxNjU4LjQxMjc1MjA2MzAzMjE5ODQ1MDAuMTIzMTM2NzgyMi4xMjMxMzY3ODIyLjEyMzEzNjc4
MjIuMScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY3ODIy
Jyk7CisgICAgICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY3ODIyLjEuMS5oZ3pw
ZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlMzQu
ZXhlYyhzdHIyMSk7CisgICAgICByZTM0LmV4ZWMoc3RyMjIpOworICAgICAgL1wuKFtcdy1dKyl8
XFsoXHcrKSg/OihbISpeJH58XT89KVsiJ10/KC4qPylbIiddPyk/XF18OihbXHctXSspKD86XChb
IiddPyguKj8pP1siJ10/XCl8JCkvZy5leGVjKHN0cjI2KTsKKyAgICAgIHJlMTMuZXhlYygndWdn
YzovL29oeXlyZ3ZhZi56bGZjbnByLnBiei92YXFyay5wc3onKTsKKyAgICAgIHJlMzguZXhlYygn
eXYnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNDsgaSsrKSB7CisgICAgICAn
Jy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICc5LjAgIGUxMTUnLnJlcGxhY2UoLyhccytlfFxz
K29bMC05XSspLywgJycpOworICAgICAgJ0Z1bmVyIGd1dmYgdG5xdHJnJy5yZXBsYWNlKC88L2cs
ICcnKTsKKyAgICAgICdGdW5lciBndXZmIHRucXRyZycucmVwbGFjZSgvPi9nLCAnJyk7CisgICAg
ICAnRnVuZXIgZ3V2ZiB0bnF0cmcnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ3VnZ2M6Ly9j
ZWJzdnlycnF2Zy56bGZjbnByLnBiei92YXFyay5wc3onLnJlcGxhY2UocmUxMiwgJycpOworICAg
ICAgJ2dybmZyZScucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJl
NDEsICcnKTsKKyAgICAgICdncm5mcmUnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ2dybmZy
ZScucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDQsICcnKTsK
KyAgICAgICdncm5mcmUnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2dybmZyZScucmVwbGFj
ZShyZTQ2LCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdn
cm5mcmUnLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgcmUxNi5leGVjKCd6bmV0dmEtZ2JjJyk7
CisgICAgICByZTE2LmV4ZWMoJ2NiZnZndmJhJyk7CisgICAgICByZTE5LmV4ZWMoJ2dubzEnKTsK
KyAgICAgIHJlOS5leGVjKCdxeicpOworICAgICAgcmU5LmV4ZWMoJ3FnJyk7CisgICAgICByZTku
ZXhlYygnemJxb2JrJyk7CisgICAgICByZTkuZXhlYygnemJxb2JrdmEnKTsKKyAgICAgIHJlOS5l
eGVjKCd6YnFndmd5cicpOworICAgICAgcmUxMy5leGVjKCd1Z2djOi8vY2Vic3Z5cnJxdmcuemxm
Y25wci5wYnovdmFxcmsucHN6Jyk7CisgICAgICByZTI2LmV4ZWMoJy92dC96bnZ5dG5xdHJnJyk7
CisgICAgICByZTQ5LmV4ZWMoJ2dsY3InKTsKKyAgICB9CisgIH0KKyAgdmFyIHJlNTAgPSAvKD86
XnxccyspZnJ5cnBncnEoPzpccyt8JCkvOworICB2YXIgcmU1MSA9IC9cJi9nOworICB2YXIgcmU1
MiA9IC9cKy9nOworICB2YXIgcmU1MyA9IC9cPy9nOworICB2YXIgcmU1NCA9IC9cdC9nOworICB2
YXIgcmU1NSA9IC8oXCRce25xaUhleVx9KXwoXCRucWlIZXlcYikvZzsKKyAgdmFyIHJlNTYgPSAv
KFwkXHtjbmd1XH0pfChcJGNuZ3VcYikvZzsKKyAgZnVuY3Rpb24gcnVuQmxvY2s1KCkgeworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTM7IGkrKykgeworICAgICAgJ3B1cnB4Jy5yZXBsYWNlKHJl
MTQsICcnKTsKKyAgICAgICdwdXJweCcucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHZnbCcu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHZnbCcucmVwbGFjZShyZTE1LCAnJyk7CisgICAg
ICAncXJwZSBmeXZxcmdya2cnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3FycGUgZnl2cXJn
cmtnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdzdmVmZyBmcnlycGdycScucmVwbGFjZShy
ZTE0LCAnJyk7CisgICAgICAnc3ZlZmcgZnJ5cnBncnEnLnJlcGxhY2UocmUxNSwgJycpOworICAg
ICAgJ3VxeV9yYWcnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3VxeV9yYWcnLnJlcGxhY2Uo
cmUxNSwgJycpOworICAgICAgJ3ZhcGUgZnl2cXJncmtnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAg
ICAgICd2YXBlIGZ5dnFyZ3JrZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAndmFjaGdncmtn
IFFCWlBiYWdlYnlfY3lucHJ1YnlxcmUnLnJlcGxhY2UocmU1LCAnJyk7CisgICAgICAnY25lcmFn
IHB1ZWJ6cjYgZnZhdHlyMSBnbm8gZnJ5cnBncnEnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAg
J2NuZXJhZyBwdWVienI2IGZ2YXR5cjEgZ25vIGZyeXJwZ3JxJy5yZXBsYWNlKHJlMTUsICcnKTsK
KyAgICAgICdjYl9ndXonLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2NiX2d1eicucmVwbGFj
ZShyZTE1LCAnJyk7CisgICAgICAnZmhvenZnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdm
aG96dmcnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgcmU1MC5leGVjKCcnKTsKKyAgICAgIC9O
Y2N5ckpyb1h2Z1wvKFteXHNdKikvLmV4ZWMoc3RyMCk7CisgICAgICAvWFVHWlkvLmV4ZWMoc3Ry
MCk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykgeworICAgICAgJyR7
Y2ViZ306Ly8ke3ViZmd9JHtjbmd1fS8ke2R6fScucmVwbGFjZSgvKFwkXHtjZWJnXH0pfChcJGNl
YmdcYikvZywgJycpOworICAgICAgJzEnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJzEnLnJl
cGxhY2UocmUxMCwgJycpOworICAgICAgJzEnLnJlcGxhY2UocmU1MSwgJycpOworICAgICAgJzEn
LnJlcGxhY2UocmU1MiwgJycpOworICAgICAgJzEnLnJlcGxhY2UocmU1MywgJycpOworICAgICAg
JzEnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJzEnLnJlcGxhY2UocmU1NCwgJycpOworICAg
ICAgJzkuMCAgZTExNScucmVwbGFjZSgvXiguKilcLi4qJC8sICcnKTsKKyAgICAgICc5LjAgIGUx
MTUnLnJlcGxhY2UoL14uKmUoLiopJC8sICcnKTsKKyAgICAgICc8IS0tICR7bnFpSGV5fSAtLT4n
LnJlcGxhY2UocmU1NSwgJycpOworICAgICAgJzxmcGV2Y2cgZ2xjcj0iZ3JrZy93bmluZnBldmNn
IiBmZXA9IiR7bnFpSGV5fSI+PC9mcGV2Y2c+Jy5yZXBsYWNlKHJlNTUsICcnKTsKKyAgICAgIHN0
cjEucmVwbGFjZSgvXi4qXHMrKFxTK1xzK1xTKyQpLywgJycpOworICAgICAgJ3R6ayUyU3VienJj
bnRyJTJTZmduZWclMlNxciUyUycucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAndHprJy5yZXBs
YWNlKHJlMzAsICcnKTsKKyAgICAgICd1Z2djOi8vJHt1YmZnfSR7Y25ndX0vJHtken0nLnJlcGxh
Y2UoLyhcJFx7dWJmZ1x9KXwoXCR1YmZnXGIpL2csICcnKTsKKyAgICAgICd1Z2djOi8vbnFweXZy
YWcuaHZ6ZnJlaS5hcmcke2NuZ3V9LyR7ZHp9Jy5yZXBsYWNlKHJlNTYsICcnKTsKKyAgICAgICd1
Z2djOi8vbnFweXZyYWcuaHZ6ZnJlaS5hcmcvd2YuYXQvJHtken0nLnJlcGxhY2UoLyhcJFx7ZHpc
fSl8KFwkZHpcYikvZywgJycpOworICAgICAgJ2ZycGd2YmEnLnJlcGxhY2UocmUyOSwgJycpOwor
ICAgICAgJ2ZycGd2YmEnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ2Z2Z3InLnJlcGxhY2Uo
cmUyOSwgJycpOworICAgICAgJ2Z2Z3InLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ2ZjcnB2
bnknLnJlcGxhY2UocmUyOSwgJycpOworICAgICAgJ2ZjcnB2bnknLnJlcGxhY2UocmUzMCwgJycp
OworICAgICAgcmUzNi5leGVjKCdhbnpyJyk7CisgICAgICAvZS8uZXhlYygnOS4wICBlMTE1Jyk7
CisgICAgfQorICB9CisgIHZhciByZTU3ID0gLyMjeXY0IyMvZ2k7CisgIHZhciByZTU4ID0gLyMj
eXYxNiMjL2dpOworICB2YXIgcmU1OSA9IC8jI3l2MTkjIy9naTsKKyAgdmFyIHN0cjI3ID0gJzxo
eSBweW5mZj0ibnFpIj4jI3l2NCMjQ2JqcmVzaHkgWnZwZWJmYnNnIGdycHVhYnlidGwgdXJ5Y2Yg
c3Z0dWcgZmNueiBuYXEgdnpjZWJpciBmcnBoZXZnbC4jI3l2MTkjI1RyZyB6YmVyIHFiYXIgZ3Vu
YXhmIGdiIHRlcm5ncmUgcm5mciBuYXEgZmNycnEuIyN5djE2IyNZYmdmIGJzIGZnYmVudHIgJiM0
MDs1IFRPJiM0MTsgLSB6YmVyIHBiYnkgZmdoc3MgYmEgZ3VyIGpubC4jI09FIyMgIyNPRSMjICMj
TiMjWXJuZWEgemJlciMjL04jIzwvaHk+JzsKKyAgdmFyIHN0cjI4ID0gJzxoeSBweW5mZj0ibnFp
Ij48eXYgdnE9Ill2T1lHNCIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQu
anlrZWYucGJ6L35ZdmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnNC5jYXQp
Ij5DYmpyZXNoeSBadnBlYmZic2cgZ3JwdWFieWJ0bCB1cnljZiBzdnR1ZyBmY256IG5hcSB2emNl
YmlyIGZycGhldmdsLiMjeXYxOSMjVHJnIHpiZXIgcWJhciBndW5heGYgZ2IgdGVybmdyZSBybmZy
IG5hcSBmY3JycS4jI3l2MTYjI1liZ2YgYnMgZmdiZW50ciAmIzQwOzUgVE8mIzQxOyAtIHpiZXIg
cGJieSBmZ2hzcyBiYSBndXIgam5sLiMjT0UjIyAjI09FIyMgIyNOIyNZcm5lYSB6YmVyIyMvTiMj
PC9oeT4nOworICB2YXIgc3RyMjkgPSAnPGh5IHB5bmZmPSJucWkiPjx5diB2cT0iWXZPWUc0IiBm
Z2x5cj0ib25weHRlYmhhcS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZn
clBiYWdyYWcuVlEvfjE0LjIuMTIzMC9+L34vfi9veWc0LmNhdCkiPkNianJlc2h5IFp2cGViZmJz
ZyBncnB1YWJ5YnRsIHVyeWNmIHN2dHVnIGZjbnogbmFxIHZ6Y2ViaXIgZnJwaGV2Z2wuIyN5djE5
IyNUcmcgemJlciBxYmFyIGd1bmF4ZiBnYiB0ZXJuZ3JlIHJuZnIgbmFxIGZjcnJxLjx5diB2cT0i
WXZPWUcxNiIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6
L35ZdmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnMTYuY2F0KSI+WWJnZiBi
cyBmZ2JlbnRyICYjNDA7NSBUTyYjNDE7IC0gemJlciBwYmJ5IGZnaHNzIGJhIGd1ciBqbmwuIyNP
RSMjICMjT0UjIyAjI04jI1lybmVhIHpiZXIjIy9OIyM8L2h5Pic7CisgIHZhciBzdHIzMCA9ICc8
aHkgcHluZmY9Im5xaSI+PHl2IHZxPSJZdk9ZRzQiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhl
eSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34v
fi9+L295ZzQuY2F0KSI+Q2JqcmVzaHkgWnZwZWJmYnNnIGdycHVhYnlidGwgdXJ5Y2Ygc3Z0dWcg
ZmNueiBuYXEgdnpjZWJpciBmcnBoZXZnbC48eXYgdnE9Ill2T1lHMTkiIGZnbHlyPSJvbnB4dGVi
aGFxLXZ6bnRyOmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+
MTQuMi4xMjMwL34vfi9+L295ZzE5LmNhdCkiPlRyZyB6YmVyIHFiYXIgZ3VuYXhmIGdiIHRlcm5n
cmUgcm5mciBuYXEgZmNycnEuPHl2IHZxPSJZdk9ZRzE2IiBmZ2x5cj0ib25weHRlYmhhcS12em50
cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEvfjE0LjIuMTIz
MC9+L34vfi9veWcxNi5jYXQpIj5ZYmdmIGJzIGZnYmVudHIgJiM0MDs1IFRPJiM0MTsgLSB6YmVy
IHBiYnkgZmdoc3MgYmEgZ3VyIGpubC4jI09FIyMgIyNPRSMjICMjTiMjWXJuZWEgemJlciMjL04j
IzwvaHk+JzsKKyAgdmFyIHN0cjMxID0gJzxoeSBweW5mZj0ibnFpIj48eXYgdnE9Ill2T1lHNCIg
ZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35ZdmlyLkZ2
Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnNC5jYXQpIj5DYmpyZXNoeSBadnBlYmZi
c2cgZ3JwdWFieWJ0bCB1cnljZiBzdnR1ZyBmY256IG5hcSB2emNlYmlyIGZycGhldmdsLjx5diB2
cT0iWXZPWUcxOSIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYu
cGJ6L35ZdmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnMTkuY2F0KSI+VHJn
IHpiZXIgcWJhciBndW5heGYgZ2IgdGVybmdyZSBybmZyIG5hcSBmY3JycS48eXYgdnE9Ill2T1lH
MTYiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZp
ci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34vfi9+L295ZzE2LmNhdCkiPlliZ2YgYnMgZmdi
ZW50ciAmIzQwOzUgVE8mIzQxOyAtIHpiZXIgcGJieSBmZ2hzcyBiYSBndXIgam5sLjxvZT4gPG9l
PiAjI04jI1lybmVhIHpiZXIjIy9OIyM8L2h5Pic7CisgIHZhciBzdHIzMiA9ICc8aHkgcHluZmY9
Im5xaSI+PHl2IHZxPSJZdk9ZRzQiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhleSh1Z2djOi8v
dnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34vfi9+L295ZzQu
Y2F0KSI+Q2JqcmVzaHkgWnZwZWJmYnNnIGdycHVhYnlidGwgdXJ5Y2Ygc3Z0dWcgZmNueiBuYXEg
dnpjZWJpciBmcnBoZXZnbC48eXYgdnE9Ill2T1lHMTkiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRy
OmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMw
L34vfi9+L295ZzE5LmNhdCkiPlRyZyB6YmVyIHFiYXIgZ3VuYXhmIGdiIHRlcm5ncmUgcm5mciBu
YXEgZmNycnEuPHl2IHZxPSJZdk9ZRzE2IiBmZ2x5cj0ib25weHRlYmhhcS12em50cjpoZXkodWdn
YzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEvfjE0LjIuMTIzMC9+L34vfi9v
eWcxNi5jYXQpIj5ZYmdmIGJzIGZnYmVudHIgJiM0MDs1IFRPJiM0MTsgLSB6YmVyIHBiYnkgZmdo
c3MgYmEgZ3VyIGpubC48b2U+IDxvZT4gPG4gdWVycz0idWdnYzovL3pudnkueXZpci5wYnovem52
eS9ub2JoZy5uZmNrIiBnbmV0cmc9Il9veW5heCI+WXJuZWEgemJlciMjL04jIzwvaHk+JzsKKyAg
dmFyIHN0cjMzID0gJ0JhciBKdmFxYmpmIFl2aXIgVlEgdHJnZiBsYmggdmFnYiA8bz5VYmd6bnZ5
PC9vPiwgPG8+WnJmZnJhdHJlPC9vPiwgPG8+S29iayBZVklSPC9vPiBcdTIwMTQgbmFxIGJndXJl
IGN5bnByZiBsYmggZnJyICN+I2FyZ2piZXh5YnRiI34jJzsKKyAgdmFyIHJlNjAgPSAvKD86Xnxc
cyspYnNzKD86XHMrfCQpLzsKKyAgdmFyIHJlNjEgPSAvXigoW146XC8/I10rKTopPyhcL1wvKFte
XC8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPyQvOworICB2YXIgcmU2MiA9IC9e
W148XSooPCgufFxzKSs+KVtePl0qJHxeIyhcdyspJC87CisgIHZhciBzdHIzNCA9ICckezF9Oi8v
JHsyfSR7M30kezR9JHs1fSc7CisgIHZhciBzdHIzNSA9ICcgTz02Z255ZzBnNHpucnJuJm89MyZm
PWdjOyBRPV9seXU9SzNiUVpHU3huVDRsWnpEM09TOUdObVYzWkdMa0FReFJwVHl4Tm1SbFptUm1B
bU5rQVFMUnFUSW1xTlpqT1VFZ3BUalFuSjV4TUt0Z29OLS07IFNDRj1xeSc7CisgIGZ1bmN0aW9u
IHJ1bkJsb2NrNigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDExOyBpKyspIHsKKyAgICAg
IHN0cjI3LnJlcGxhY2UoLyMjeXYwIyMvZ2ksICcnKTsKKyAgICAgIHN0cjI3LnJlcGxhY2UocmU1
NywgJycpOworICAgICAgc3RyMjgucmVwbGFjZShyZTU4LCAnJyk7CisgICAgICBzdHIyOS5yZXBs
YWNlKHJlNTksICcnKTsKKyAgICAgIHN0cjMwLnJlcGxhY2UoLyMjXC9vIyMvZ2ksICcnKTsKKyAg
ICAgIHN0cjMwLnJlcGxhY2UoLyMjXC92IyMvZ2ksICcnKTsKKyAgICAgIHN0cjMwLnJlcGxhY2Uo
LyMjXC9oIyMvZ2ksICcnKTsKKyAgICAgIHN0cjMwLnJlcGxhY2UoLyMjbyMjL2dpLCAnJyk7Cisg
ICAgICBzdHIzMC5yZXBsYWNlKC8jI29lIyMvZ2ksICcnKTsKKyAgICAgIHN0cjMwLnJlcGxhY2Uo
LyMjdiMjL2dpLCAnJyk7CisgICAgICBzdHIzMC5yZXBsYWNlKC8jI2gjIy9naSwgJycpOworICAg
ICAgc3RyMzEucmVwbGFjZSgvIyNuIyMvZ2ksICcnKTsKKyAgICAgIHN0cjMyLnJlcGxhY2UoLyMj
XC9uIyMvZ2ksICcnKTsKKyAgICAgIHN0cjMzLnJlcGxhY2UoLyN+I2FyZ2piZXh5YnRiI34jL2cs
ICcnKTsKKyAgICAgIC8gWmJvdnlyXC8vLmV4ZWMoc3RyMCk7CisgICAgICAvIyN5djEjIy9naS5l
eGVjKHN0cjI3KTsKKyAgICAgIC8jI3l2MTAjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIC8jI3l2
MTEjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIC8jI3l2MTIjIy9naS5leGVjKHN0cjI4KTsKKyAg
ICAgIC8jI3l2MTMjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIC8jI3l2MTQjIy9naS5leGVjKHN0
cjI4KTsKKyAgICAgIC8jI3l2MTUjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIHJlNTguZXhlYyhz
dHIyOCk7CisgICAgICAvIyN5djE3IyMvZ2kuZXhlYyhzdHIyOSk7CisgICAgICAvIyN5djE4IyMv
Z2kuZXhlYyhzdHIyOSk7CisgICAgICByZTU5LmV4ZWMoc3RyMjkpOworICAgICAgLyMjeXYyIyMv
Z2kuZXhlYyhzdHIyNyk7CisgICAgICAvIyN5djIwIyMvZ2kuZXhlYyhzdHIzMCk7CisgICAgICAv
IyN5djIxIyMvZ2kuZXhlYyhzdHIzMCk7CisgICAgICAvIyN5djIyIyMvZ2kuZXhlYyhzdHIzMCk7
CisgICAgICAvIyN5djIzIyMvZ2kuZXhlYyhzdHIzMCk7CisgICAgICAvIyN5djMjIy9naS5leGVj
KHN0cjI3KTsKKyAgICAgIHJlNTcuZXhlYyhzdHIyNyk7CisgICAgICAvIyN5djUjIy9naS5leGVj
KHN0cjI4KTsKKyAgICAgIC8jI3l2NiMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXY3IyMv
Z2kuZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djgjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIC8j
I3l2OSMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgcmU4LmV4ZWMoJzQ3M3FxMXJzMG4ycjcwcTlx
bzFwcTQ4bjAyMXM5NDY4cm9uOTBucHMwNDhwNHAyOScpOworICAgICAgcmU4LmV4ZWMoJ1NiZXBy
cVJrY3Zlbmd2YmE9NjMzNjY5MzI1MTg0NjI4MzYyJyk7CisgICAgICByZTguZXhlYygnRnJmZnZi
YVFRUzI9NDczcXExcnMwbjJyNzBxOXFvMXBxNDhuMDIxczk0Njhyb245MG5wczA0OHA0cDI5Jyk7
CisgICAgICAvQWJ4dm5BW15cL10qLy5leGVjKHN0cjApOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgICcgYnNzJy5yZXBsYWNlKC8oPzpefFxzKylic3Mo
Pzpccyt8JCkvZywgJycpOworICAgICAgc3RyMzQucmVwbGFjZSgvKFwkXHswXH0pfChcJDBcYikv
ZywgJycpOworICAgICAgc3RyMzQucmVwbGFjZSgvKFwkXHsxXH0pfChcJDFcYikvZywgJycpOwor
ICAgICAgc3RyMzQucmVwbGFjZSgvKFwkXHtwYnpjeXJnclx9KXwoXCRwYnpjeXJnclxiKS9nLCAn
Jyk7CisgICAgICBzdHIzNC5yZXBsYWNlKC8oXCRce3NlbnR6cmFnXH0pfChcJHNlbnR6cmFnXGIp
L2csICcnKTsKKyAgICAgIHN0cjM0LnJlcGxhY2UoLyhcJFx7dWJmZ2NiZWdcfSl8KFwkdWJmZ2Ni
ZWdcYikvZywgJycpOworICAgICAgc3RyMzQucmVwbGFjZShyZTU2LCAnJyk7CisgICAgICBzdHIz
NC5yZXBsYWNlKC8oXCRce2NlYmdicGJ5XH0pfChcJGNlYmdicGJ5XGIpL2csICcnKTsKKyAgICAg
IHN0cjM0LnJlcGxhY2UoLyhcJFx7ZGhyZWxcfSl8KFwkZGhyZWxcYikvZywgJycpOworICAgICAg
J25xZnZtcicucmVwbGFjZShyZTI5LCAnJyk7CisgICAgICAnbnFmdm1yJy5yZXBsYWNlKHJlMzAs
ICcnKTsKKyAgICAgICd1Z2djOi8vJHsyfSR7M30kezR9JHs1fScucmVwbGFjZSgvKFwkXHsyXH0p
fChcJDJcYikvZywgJycpOworICAgICAgJ3VnZ2M6Ly93Zi5odi1jYmVnbnkucXIkezN9JHs0fSR7
NX0nLnJlcGxhY2UoLyhcJFx7M1x9KXwoXCQzXGIpL2csICcnKTsKKyAgICAgICdhcmpmJy5yZXBs
YWNlKHJlNDAsICcnKTsKKyAgICAgICdhcmpmJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdh
cmpmJy5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAgICdhcmpmJy5yZXBsYWNlKHJlNDMsICcnKTsK
KyAgICAgICdhcmpmJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICdhcmpmJy5yZXBsYWNlKHJl
NDUsICcnKTsKKyAgICAgICdhcmpmJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdhcmpmJy5y
ZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdhcmpmJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAg
IC8gUEM9aT0oXGQrKSZvZT0oLikvLmV4ZWMoc3RyMzUpOworICAgICAgcmU2MC5leGVjKCcgJyk7
CisgICAgICByZTYwLmV4ZWMoJyBic3MnKTsKKyAgICAgIHJlNjAuZXhlYygnJyk7CisgICAgICBy
ZTE5LmV4ZWMoJyAnKTsKKyAgICAgIHJlMTkuZXhlYygnc3ZlZmcgYmEnKTsKKyAgICAgIHJlMTku
ZXhlYygneW5mZyB2dGFiZXInKTsKKyAgICAgIHJlMTkuZXhlYygnYmEnKTsKKyAgICAgIHJlOS5l
eGVjKCdzY25xIHNvICcpOworICAgICAgcmU5LmV4ZWMoJ3pycXZnb2JrJyk7CisgICAgICByZTku
ZXhlYygnaHNneScpOworICAgICAgcmU5LmV4ZWMoJ2xodi1oJyk7CisgICAgICAvRm5zbmV2fFhi
YWRocmViZXxYVUdaWS9naS5leGVjKHN0cjApOworICAgICAgcmU2MS5leGVjKCd1Z2djOi8vd2Yu
aHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgwNjAyL29uZnIud2YnKTsKKyAgICAgIHJlNjIu
ZXhlYygnI1lidHZhX3J6bnZ5Jyk7CisgICAgfQorICB9CisgIHZhciByZTYzID0gL1x7MFx9L2c7
CisgIHZhciBzdHIzNiA9ICdGcmZmdmJhUVFTMj00c3M3NDdvNzc5MDQzMzNxMzc0b3I4NHFycjFz
OXIwbnBycDhyNXE4MTUzNG85NG47IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMjAmVkNQaHlnaGVy
PXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBi
aGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyMTY5OTA5MzA2MCZndnpyTWJhcj0w
JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhx
VVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1U
SDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBN
RG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj07IEFGUF96cF90ZndzYnJn
LWFvd2JfODA9NDQxMzI2OHEzNjYwJzsKKyAgdmFyIHN0cjM3ID0gJ0ZyZmZ2YmFRUVMyPTRzczc0
N283NzkwNDMzM3EzNzRvcjg0cXJyMXM5cjBucHJwOHI1cTgxNTM0bzk0bjsgQUZQX3pwX3Rmd3Ni
cmctYW93Yl84MD00NDEzMjY4cTM2NjA7IF9faGd6bT0xNDQ2MzE2NTguMTIzMTM2NDA3NC4xLjEu
aGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpOyBfX2hnem49MTQ0
NjMxNjU4LjIyOTQyNzQ4NzAyMTU4NDg0MDAuMTIzMTM2NDA3NC4xMjMxMzY0MDc0LjEyMzEzNjQw
NzQuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjQwNzQ7IF9faGd6cD0xNDQ2MzE2NTg7
IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMjAmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdo
ZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMjE2OTkwOTMw
NjAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0
dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1
cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlD
RjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNR
JzsKKyAgdmFyIHN0cjM4ID0gJ3VnZ2M6Ly90YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250
cm5xL25xZj9weXZyYWc9cG4tc3Z6X3psZmNucHJfemxmY25wci11YnpyY250cl93ZiZxZz0xMjMx
MzY0MDU3NzYxJnV5PXJhJm5xZm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZu
cWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2NDA1Nzc2MSZwdW5hYXJ5PXN2el96bGZjbnByX3Vi
enJjbnRyX2FiZ3lidHRycXZhJTJQc3Z6X3psZmNucHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hh
dmdycS1mZ25ncmYmaGV5PXVnZ2MlM04lMlMlMlNzZXZyYXFmLnpsZmNucHIucGJ6JTJTdmFxcmsu
cHN6Jm5xX2dsY3I9Z3JrZyZydnE9NjA4MzAyNyZybj0wJnNlej0wJnRuX2l2cT0xNjY3MzYzODEz
LjEyMzEzNjQwNjEmdG5fZnZxPTEyMzEzNjQwNjEmdG5fdXZxPTE5MTc1NjM4Nzcmc3luZnU9OS4w
LjExNSZoX3U9NzY4Jmhfaj0xMDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4
MCZoX3V2Zj0yJmhfd25pbj1nZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFyIHN0cjM5
ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMjAmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBo
eWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMjE2OTkw
OTMwNjAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1
bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRI
M0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFK
RXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBS
JTNRJzsKKyAgdmFyIHN0cjQwID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMjAmVkNQaHlnaGVy
PXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBi
aGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyMTY5OTA5MzA2MCZndnpyTWJhcj0w
JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhx
VVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1U
SDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBN
RG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICBmdW5jdGlvbiBy
dW5CbG9jazcoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA5OyBpKyspIHsKKyAgICAgICcw
Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICcwJy5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAg
ICcwJy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgICcwJy5yZXBsYWNlKHJlNTIsICcnKTsKKyAg
ICAgICcwJy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICcwJy5yZXBsYWNlKHJlMzksICcnKTsK
KyAgICAgICcwJy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICdMcmYnLnJlcGxhY2UocmU0MCwg
JycpOworICAgICAgJ0xyZicucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnTHJmJy5yZXBsYWNl
KHJlNTEsICcnKTsKKyAgICAgICdMcmYnLnJlcGxhY2UocmU1MiwgJycpOworICAgICAgJ0xyZicu
cmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAnTHJmJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAg
ICdMcmYnLnJlcGxhY2UocmU1NCwgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDg7IGkrKykgeworICAgICAgJ1B5YmZyIHswfScucmVwbGFjZShyZTYzLCAnJyk7CisgICAgICAn
QmNyYSB7MH0nLnJlcGxhY2UocmU2MywgJycpOworICAgICAgc3RyMzYuc3BsaXQocmUzMik7Cisg
ICAgICBzdHIzNy5zcGxpdChyZTMyKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBnbm91cm5xcmVm
Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBnbm91cm5xcmVmJy5y
ZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd1cXlfZmNiJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAg
ICAgICd1cXlfZmNiJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd1dmFnJy5yZXBsYWNlKHJl
MTQsICcnKTsKKyAgICAgICd1dmFnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgIHN0cjM4LnJl
cGxhY2UocmUzMywgJycpOworICAgICAgJ3l2ZmcnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAg
J3l2ZmcnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2F0X2JoZ3JlJy5yZXBsYWNlKHJlMzAs
ICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNSBxYmhveXIyIE5VJy5yZXBsYWNlKHJlMTQsICcn
KTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNSBxYmhveXIyIE5VJy5yZXBsYWNlKHJlMTUsICcnKTsK
KyAgICAgICdjbmVyYWcgcHVlYnpyNSBkaG5xNSBwcyBOVSBvc3l2YXggemJhcmwnLnJlcGxhY2Uo
cmUxNCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI1IGRobnE1IHBzIE5VIG9zeXZheCB6YmFy
bCcucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjYgZnZhdHlyMScucmVw
bGFjZShyZTE0LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjYgZnZhdHlyMScucmVwbGFjZShy
ZTE1LCAnJyk7CisgICAgICAnY2JfcXJzJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjYl9x
cnMnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2dub3BiYWdyYWcnLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgJ2dub3BiYWdyYWcnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2l2X3N2
ZWZnX2d2enInLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgLyhefC4pKHJvbmx8cXJpLWVoZjMu
d2JnKSh8ZmdiZXJmfHpiZ2JlZnx5dmlybmhwZ3ZiYWZ8anZ4dnxya2NlcmZmfHB1bmdncmUpLihw
YnoofC5uaHwucGF8LnV4fC56bHwuZnR8Lm9lfC56ayl8cGIoLmh4fC54ZXwuYW0pfHBufHFyfHNl
fHZnfGF5fG9yfG5nfHB1fHZyfHZhfHJmfGN5fGN1fGZyKSQvaS5leGVjKCdjbnRyZi5yb25sLnBi
eicpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4wLjEwLjEyMzEzNjQwNzQnKTsKKyAgICAg
IHJlOC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2NDA3NC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBw
YT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjIy
OTQyNzQ4NzAyMTU4NDg0MDAuMTIzMTM2NDA3NC4xMjMxMzY0MDc0LjEyMzEzNjQwNzQuMScpOwor
ICAgICAgcmU4LmV4ZWMoJzQ0MTMyNDFxMzY2MCcpOworICAgICAgcmU4LmV4ZWMoJ1NiZXBycVJr
Y3Zlbmd2YmE9NjMzNjY5MzU3MzkxMzUzNTkxJyk7CisgICAgICByZTguZXhlYyhzdHIzOSk7Cisg
ICAgICByZTguZXhlYyhzdHI0MCk7CisgICAgICByZTguZXhlYygnQUZQX3pwX2tray1nZHpvZ3Zf
ODA9NDQxMzI0MXEzNjYwJyk7CisgICAgICByZTguZXhlYygnRnJmZnZiYVFRUzI9cDk4czhvOXE0
Mm5yMjFvcjFyNjFwcW9ybjFuMDAybnNzczU2OTYzNTk4NHM2cXA3Jyk7CisgICAgICByZTguZXhl
YygnX19oZ3puPTE0NDYzMTY1OC4yMjk0Mjc0ODcwMjE1ODQ4NDAwLjEyMzEzNjQwNzQuMTIzMTM2
NDA3NC4xMjMxMzY0MDc0LjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0NjMxNjU4LjAu
MTAuMTIzMTM2NDA3NCcpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2NTguMTIzMTM2
NDA3NC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7
CisgICAgICByZTguZXhlYygncDk4czhvOXE0Mm5yMjFvcjFyNjFwcW9ybjFuMDAybnNzczU2OTYz
NTk4NHM2cXA3Jyk7CisgICAgICByZTM0LmV4ZWMoc3RyMzYpOworICAgICAgcmUzNC5leGVjKHN0
cjM3KTsKKyAgICB9CisgIH0KKyAgdmFyIHJlNjQgPSAvXGJbYS16XS9nOworICB2YXIgcmU2NSA9
IC9edWdnYzpcL1wvLzsKKyAgdmFyIHJlNjYgPSAvKD86XnxccyspcXZmbm95cnEoPzpccyt8JCkv
OworICB2YXIgc3RyNDEgPSAndWdnYzovL2NlYnN2eXIuemxmY25wci5wYnovWmJxaHlyZi9OY2N5
dnBuZ3ZiYWYvQ250cmYvUG5haW5mLm5mY2snOworICBmdW5jdGlvbiBydW5CbG9jazgoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgIHN0cjEubWF0Y2goL1xkKy9n
KTsKKyAgICAgICduc2dyZScucmVwbGFjZShyZTY0LCAnJyk7CisgICAgICAnb3JzYmVyJy5yZXBs
YWNlKHJlNjQsICcnKTsKKyAgICAgICdvYmdnYnonLnJlcGxhY2UocmU2NCwgJycpOworICAgICAg
J29odnlndmFfanJuZ3VyZS5renknLnJlcGxhY2UocmU2NSwgJycpOworICAgICAgJ29oZ2diYScu
cmVwbGFjZShyZTM3LCAnJyk7CisgICAgICAnb2hnZ2JhJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAg
ICAgICdxbmdyZ3Z6ci5renknLnJlcGxhY2UocmU2NSwgJycpOworICAgICAgJ3VnZ2M6Ly9lZmYu
cGFhLnBiei9lZmYvcGFhX2diY2ZnYmV2cmYuZWZmJy5yZXBsYWNlKHJlNjUsICcnKTsKKyAgICAg
ICd2YWNoZycucmVwbGFjZShyZTM3LCAnJyk7CisgICAgICAndmFjaGcnLnJlcGxhY2UocmUxOCwg
JycpOworICAgICAgJ3ZhZnZxcicucmVwbGFjZShyZTY0LCAnJyk7CisgICAgICAnY2J2YWdyZScu
cmVwbGFjZShyZTI3LCAnJyk7CisgICAgICAnY2Jmdmd2YmEnLnJlcGxhY2UoL1tBLVpdL2csICcn
KTsKKyAgICAgICdnYmMnLnJlcGxhY2UocmUyNywgJycpOworICAgICAgJ2diYycucmVwbGFjZShy
ZTY0LCAnJyk7CisgICAgICAnaHknLnJlcGxhY2UocmUzNywgJycpOworICAgICAgJ2h5Jy5yZXBs
YWNlKHJlMTgsICcnKTsKKyAgICAgIHN0cjI2LnJlcGxhY2UocmUzNywgJycpOworICAgICAgc3Ry
MjYucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAnbGJoZ2hvcl92dGJidHlyL2kyL2xiaGdob3Iu
a3p5Jy5yZXBsYWNlKHJlNjUsICcnKTsKKyAgICAgICdtLXZhcXJrJy5yZXBsYWNlKHJlMjcsICcn
KTsKKyAgICAgIC8jKFtcdy1dKykvLmV4ZWMoc3RyMjYpOworICAgICAgcmUxNi5leGVjKCd1cnZ0
dWcnKTsKKyAgICAgIHJlMTYuZXhlYygnem5ldHZhR2JjJyk7CisgICAgICByZTE2LmV4ZWMoJ2p2
cWd1Jyk7CisgICAgICByZTE5LmV4ZWMoJ2dubzAgc3ZlZmcgYmEnKTsKKyAgICAgIHJlMTkuZXhl
YygnZ25vMCBiYScpOworICAgICAgcmUxOS5leGVjKCdnbm80IHluZmcnKTsKKyAgICAgIHJlMTku
ZXhlYygnZ25vNCcpOworICAgICAgcmUxOS5leGVjKCdnbm81Jyk7CisgICAgICByZTE5LmV4ZWMo
J2dubzYnKTsKKyAgICAgIHJlMTkuZXhlYygnZ25vNycpOworICAgICAgcmUxOS5leGVjKCdnbm84
Jyk7CisgICAgICAvTnFib3JOVkVcLyhbXlxzXSopLy5leGVjKHN0cjApOworICAgICAgL05jY3ly
SnJvWHZnXC8oW14gXSopLy5leGVjKHN0cjApOworICAgICAgL1hVR1pZL2dpLmV4ZWMoc3RyMCk7
CisgICAgICAvXig/Om9icWx8dWd6eSkkL2kuZXhlYygnWVYnKTsKKyAgICAgIHJlMzguZXhlYygn
b2hnZ2JhJyk7CisgICAgICByZTM4LmV4ZWMoJ3ZhY2hnJyk7CisgICAgICByZTM4LmV4ZWMoJ2h5
Jyk7CisgICAgICByZTM4LmV4ZWMoc3RyMjYpOworICAgICAgL14oXHcrfFwqKS8uZXhlYyhzdHIy
Nik7CisgICAgICAvem5wfGp2YXx5dmFoay9pLmV4ZWMoJ0p2YTMyJyk7CisgICAgICAvZXRvbj9c
KFtcZFxzLF0rXCkvLmV4ZWMoJ2Znbmd2cCcpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDY7IGkrKykgeworICAgICAgJycucmVwbGFjZSgvXHIvZywgJycpOworICAgICAgJy8nLnJl
cGxhY2UocmU0MCwgJycpOworICAgICAgJy8nLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJy8n
LnJlcGxhY2UocmU1MSwgJycpOworICAgICAgJy8nLnJlcGxhY2UocmU1MiwgJycpOworICAgICAg
Jy8nLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJy8nLnJlcGxhY2UocmUzOSwgJycpOworICAg
ICAgJy8nLnJlcGxhY2UocmU1NCwgJycpOworICAgICAgJ3VnZ2M6Ly96ZmFjYmVnbnkuMTEyLjJi
Ny5hcmcvby9mZi96ZmFjYmVnbnl1YnpyLzEvVS43LWNxaS0yL3swfT9bTkRPXSZ7MX0mezJ9JltO
RFJdJy5yZXBsYWNlKHJlNjMsICcnKTsKKyAgICAgIHN0cjQxLnJlcGxhY2UocmUxMiwgJycpOwor
ICAgICAgJ3VnZ2M6Ly9qamouc25wcm9iYngucGJ6L2ZlcHUuY3VjJy5yZXBsYWNlKHJlMjMsICcn
KTsKKyAgICAgICdmcmVpdnByJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdmcmVpdnByJy5y
ZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdmcmVpdnByJy5yZXBsYWNlKHJlNDIsICcnKTsKKyAg
ICAgICdmcmVpdnByJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICdmcmVpdnByJy5yZXBsYWNl
KHJlNDQsICcnKTsKKyAgICAgICdmcmVpdnByJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICdm
cmVpdnByJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdmcmVpdnByJy5yZXBsYWNlKHJlNDcs
ICcnKTsKKyAgICAgICdmcmVpdnByJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgIC8oKFpGVlJc
cysoWzYtOV18XGRcZClcLikpLy5leGVjKHN0cjApOworICAgICAgcmU2Ni5leGVjKCcnKTsKKyAg
ICAgIHJlNTAuZXhlYygnZnJ5cnBncnEnKTsKKyAgICAgIHJlOC5leGVjKCc4c3FxNzhyOW40NDI4
NTFxNTY1NTk5bzQwMTM4NXNwM3MwNHI5MnJubjdvMTlzc24nKTsKKyAgICAgIHJlOC5leGVjKCdT
YmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM0MDM4Njg5Mzg2NycpOworICAgICAgcmU4LmV4ZWMoJ1ZD
PTc0LjEyNS43NS4xNycpOworICAgICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMyPThzcXE3OHI5bjQ0
Mjg1MXE1NjU1OTlvNDAxMzg1c3AzczA0cjkycm5uN28xOXNzbicpOworICAgICAgL1hiYWRocmVi
ZXxGbnNuZXZ8WFVHWlkvLmV4ZWMoc3RyMCk7CisgICAgICByZTEzLmV4ZWMoc3RyNDEpOworICAg
ICAgcmU0OS5leGVjKCd1bmZzYnBoZicpOworICAgIH0KKyAgfQorICB2YXIgcmU2NyA9IC96cmFo
X2J5cS9nOworICB2YXIgc3RyNDIgPSAnRnJmZnZiYVFRUzI9NDczcXExcnMwbjJyNzBxOXFvMXBx
NDhuMDIxczk0Njhyb245MG5wczA0OHA0cDI5OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjMmVkNQ
aHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2
YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyNTE4NDYyODM2MiZndnpy
TWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxN
UW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVn
TEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3Vmha
UUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIg
c3RyNDMgPSAnRnJmZnZiYVFRUzI9NDczcXExcnMwbjJyNzBxOXFvMXBxNDhuMDIxczk0Njhyb245
MG5wczA0OHA0cDI5OyBfX2hnem09MTQ0NjMxNjU4LjEyMzEzNjQzODAuMS4xLmhnenBmZT0ocXZl
cnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4zOTMx
ODYyMTk2OTQ3OTM5MzAwLjEyMzEzNjQzODAuMTIzMTM2NDM4MC4xMjMxMzY0MzgwLjE7IF9faGd6
bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY0MzgwOyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9
VkM9NzQuMTI1Ljc1LjMmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJo
YWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMjUxODQ2MjgzNjImZ3Z6ck1iYXI9
LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJ
aHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFp
TVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNB
UE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0
cjQ0ID0gJ3VnZ2M6Ly90YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250cm5xL25xZj9weXZy
YWc9cG4tc3Z6X3psZmNucHJfdnpudHJmX3dmJnFnPTEyMzEzNjQzNzMwODgmdXk9cmEmbnFmbnNy
PXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5xZ3JmZz1ic3MmcGJlZXJ5bmdiZT0x
MjMxMzY0MzczMDg4JnB1bmFhcnk9c3Z6X3psZmNucHJfaGZyZS1pdnJqLXBienpyYWdmJTJQc3Z6
X3psZmNucHJfaGF2Z3JxLWZnbmdyZiZoZXk9dWdnYyUzTiUyUyUyU3BienpyYWcuemxmY25wci5w
YnolMlN2YXFyay5wc3ombnFfZ2xjcj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAmdG5faXZx
PTExNTg3Mzc3ODkuMTIzMTM2NDM3NSZ0bl9mdnE9MTIzMTM2NDM3NSZ0bl91dnE9NDE1NTIwODMy
JnN5bmZ1PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25qPTEwMjQmaF9wcT0y
NCZoX2dtPS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9henZ6cj0yMic7Cisg
IHZhciBzdHI0NSA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjMmVkNQaHlnaGVyPXJhLUhGJkNl
cnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2
NjkzMjUxODQ2MjgzNjImZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4
OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJ
b3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpH
VDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94
NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjQ2ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMyZW
Q1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3Jh
cXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzI1MTg0NjI4MzYyJmd2
enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlx
bE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4
RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndW
aFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZh
ciByZTY4ID0gL14oWyMuXT8pKCg/Oltcd1x1MDEyOC1cdWZmZmYqXy1dfFxcLikqKS87CisgIHZh
ciByZTY5ID0gL1x7MVx9L2c7CisgIHZhciByZTcwID0gL1xzKy87CisgIHZhciByZTcxID0gLyhc
JFx7NFx9KXwoXCQ0XGIpL2c7CisgIHZhciByZTcyID0gLyhcJFx7NVx9KXwoXCQ1XGIpL2c7Cisg
IHZhciByZTczID0gL1x7Mlx9L2c7CisgIHZhciByZTc0ID0gL1teKz5dIFteKz5dLzsKKyAgdmFy
IHJlNzUgPSAvXGJ1Y3B5dlxzKj1ccyooW147XSopL2k7CisgIHZhciByZTc2ID0gL1xidWN1dnFy
XHMqPVxzKihbXjtdKikvaTsKKyAgdmFyIHJlNzcgPSAvXGJ1Y2ZpZVxzKj1ccyooW147XSopL2k7
CisgIHZhciByZTc4ID0gL1xiaGZ1Y2pyblxzKj1ccyooW147XSopL2k7CisgIHZhciByZTc5ID0g
L1xibXZjXHMqPVxzKihbXjtdKikvaTsKKyAgdmFyIHJlODAgPSAvXigoPzpbXHdcdTAxMjgtXHVm
ZmZmKl8tXXxcXC4pKykoIykoKD86W1x3XHUwMTI4LVx1ZmZmZipfLV18XFwuKSspLzsKKyAgdmFy
IHJlODEgPSAvXihbPit+XSlccyooXHcqKS9pOworICB2YXIgcmU4MiA9IC9ePlxzKigoPzpbXHdc
dTAxMjgtXHVmZmZmKl8tXXxcXC4pKykvOworICB2YXIgcmU4MyA9IC9eW1xzW10/c2hhcGd2YmEv
OworICB2YXIgcmU4NCA9IC92XC9nLnR2cyMoLiopL2k7CisgIHZhciBzdHI0NyA9ICcjWmJxLVZh
c2ItVmFzYi1XbmluRnBldmNnVXZhZyc7CisgIHZhciBzdHI0OCA9ICcsbi5zdnJ5cU9nYVBuYXBy
eSc7CisgIHZhciBzdHI0OSA9ICdGcmZmdmJhUVFTMj1wOThzOG85cTQybnIyMW9yMXI2MXBxb3Ju
MW4wMDJuc3NzNTY5NjM1OTg0czZxcDc7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMyZWQ1BoeWdo
ZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0m
UGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU3MzkxMzUzNTkxJmd2enJNYmFy
PTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJ
aHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFp
TVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNB
UE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPTsgQUZQX3pwX2tray1n
ZHpvZ3ZfODA9NDQxMzI0MXEzNjYwJzsKKyAgdmFyIHN0cjUwID0gJ0ZyZmZ2YmFRUVMyPXA5OHM4
bzlxNDJucjIxb3IxcjYxcHFvcm4xbjAwMm5zc3M1Njk2MzU5ODRzNnFwNzsgQUZQX3pwX2tray1n
ZHpvZ3ZfODA9NDQxMzI0MXEzNjYwOyBBRlBfenBfa2trLWFvd2JfODA9NDQxMzIzNXAzNjYwOyBf
X2hnem09MTQ0NjMxNjU4LjEyMzEzNjc3MDguMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2
ZXJwZyl8aGd6cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4yNzcwOTE1MzQ4OTIwNjI4NzAw
LjEyMzEzNjc3MDguMTIzMTM2NzcwOC4xMjMxMzY3NzA4LjE7IF9faGd6bz0xNDQ2MzE2NTguMC4x
MC4xMjMxMzY3NzA4OyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjMm
VkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2Jl
cHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTczOTEzNTM1OTEmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lM
SEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhs
TVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5
MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5
Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjUxID0gJ3VnZ2M6Ly90
YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250cm5xL25xZj9weXZyYWc9cG4tc3Z6X3psZmNu
cHJfemxmY25wci11YnpyY250cl93ZiZxZz0xMjMxMzY3NjkxMTQxJnV5PXJhJm5xZm5zcj11dnR1
JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZucWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2
NzY5MTE0MSZwdW5hYXJ5PXN2el96bGZjbnByX3VienJjbnRyX2FiZ3lidHRycXZhJTJQc3Z6X3ps
ZmNucHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYmaGV5PXVnZ2MlM04lMlMl
MlNqamouemxmY25wci5wYnolMlMmbnFfZ2xjcj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAm
dG5faXZxPTMyMDc1NzkwNC4xMjMxMzY3Njk0JnRuX2Z2cT0xMjMxMzY3Njk0JnRuX3V2cT0xNzU4
NzkyMDAzJnN5bmZ1PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25qPTEwMjQm
aF9wcT0yNCZoX2dtPS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9henZ6cj0y
Mic7CisgIHZhciBzdHI1MiA9ICd1Z2djOi8vemZhY2JlZ255LjExMi4yYjcuYXJnL28vZmYvemZh
Y2JlZ255dWJ6ci8xL1UuNy1jcWktMi9mNTUzMzI5Nzk4Mjk5ODE/W05ET10mYXF1PTEmZz03JTJT
MCUyUzIwMDklMjAxNCUzTjM4JTNONDIlMjAzJTIwNDgwJmFmPXpmYWNiZWdueSZjbnRyQW56cj1I
RiUyMFVDWkZTR0omdD11Z2djJTNOJTJTJTJTampqLnpmYS5wYnolMlMmZj0xMDI0azc2OCZwPTI0
Jng9TCZvaj05OTQmb3U9NjM0JnVjPUEmezJ9JltORFJdJzsKKyAgdmFyIHN0cjUzID0gJ2NuZXJh
ZyBwdWVienI2IGZ2YXR5cjEgZ25vIGZyeXJwZ3JxIG92YXEgcWJob3lyMiBwcyc7CisgIHZhciBz
dHI1NCA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjMmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVy
cVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTcz
OTEzNTM1OTEmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFv
YUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1K
RHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5
MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5
RDBSJTNRJzsKKyAgdmFyIHN0cjU1ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMyZWQ1BoeWdo
ZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0m
UGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzU3MzkxMzUzNTkxJmd2enJNYmFy
PTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJ
aHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFp
TVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNB
UE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZhciBzdHI1
NiA9ICduZTtuZztuaDtvcjtvZTtwbjtwdTtweTtwYTtxcjtxeDtyZjtzdjtzZTt0bzt1eDt2cTt2
cjt2YTt2Zzt3Yzt4ZTt6azt6bDtheTthYjthbTtjdTtjeTtjZztlaDtmcjtmdDtndTtnZTtnajtt
bjsnOworICB2YXIgc3RyNTcgPSAnWlAxPUk9MyZUSFZRPTZubnByOXE2NjE4MDRzMzNubm9wNDVu
b3NxcDE3cTg1OyB6dT1aRlNHOyBQSFlHSEVSPVJBLUhGOyBTeXZ0dWdUZWJoY1ZxPTk3OyBTeXZ0
dWdWcT1PbmZyQ250cjsgdWNmaWU9Wjo1fFM6NXxHOjV8Ujo1fFE6b3lofEo6UzsgdWNweXY9Si5V
fFkufEYufEUufEguWXxQLnxVLjsgaGZ1Y2pybj1qcDpIRlBOMDc0NjsgWkhWUT1RNzgzU045TzE0
MDU0ODMxTjQ4NjlSNTFQMFNPODg4NiZHSFZRPTEnOworICB2YXIgc3RyNTggPSAnWlAxPUk9MyZU
SFZRPTZubnByOXE2NjE4MDRzMzNubm9wNDVub3NxcDE3cTg1OyB6dT1aRlNHOyBQSFlHSEVSPVJB
LUhGOyBTeXZ0dWdUZWJoY1ZxPTk3OyBTeXZ0dWdWcT1PbmZyQ250cjsgdWNmaWU9Wjo1fFM6NXxH
OjV8Ujo1fFE6b3lofEo6UzsgdWNweXY9Si5VfFkufEYufEUufEguWXxQLnxVLjsgaGZ1Y2pybj1q
cDpIRlBOMDc0NjsgWkhWUT1RNzgzU045TzE0MDU0ODMxTjQ4NjlSNTFQMFNPODg4Nic7CisgIHZh
ciBzdHI1OSA9ICdaUDE9ST0zJlRIVlE9Nm5ucHI5cTY2MTgwNHMzM25ub3A0NW5vc3FwMTdxODU7
IHp1PVpGU0c7IFBIWUdIRVI9UkEtSEY7IFN5dnR1Z1RlYmhjVnE9OTc7IFN5dnR1Z1ZxPU9uZnJD
bnRyOyB1Y2ZpZT1aOjV8Uzo1fEc6NXxSOjV8UTpveWh8SjpTOyB1Y3B5dj1KLlV8WS58Ri58RS58
SC5ZfFAufFUuOyBoZnVjanJuPWpwOkhGUE4wNzQ2OyBaSFZRPVE3ODNTTjlPMTQwNTQ4MzFONDg2
OVI1MVAwU084ODg2OyBtdmM9bTo5NDA0M3x5bjozNy40MTU0fHliOi0xMjIuMDU4NXxwOkhGfHVl
OjEnOworICB2YXIgc3RyNjAgPSAnWlAxPUk9MyZUSFZRPTZubnByOXE2NjE4MDRzMzNubm9wNDVu
b3NxcDE3cTg1OyB6dT1aRlNHOyBQSFlHSEVSPVJBLUhGOyBTeXZ0dWdUZWJoY1ZxPTk3OyBTeXZ0
dWdWcT1PbmZyQ250cjsgdWNmaWU9Wjo1fFM6NXxHOjV8Ujo1fFE6b3lofEo6UzsgdWNweXY9Si5V
fFkufEYufEUufEguWXxQLnxVLjsgaGZ1Y2pybj1qcDpIRlBOMDc0NjsgWkhWUT1RNzgzU045TzE0
MDU0ODMxTjQ4NjlSNTFQMFNPODg4NjsgbXZjPW06OTQwNDN8eW46MzcuNDE1NHx5YjotMTIyLjA1
ODV8cDpIRic7CisgIHZhciBzdHI2MSA9ICd1Z2djOi8vZ3gyLmZncC5mLXpmYS5wYnovb2UvdWMv
MTEvcmEtaGYvcGZmL3YvZy50dnMjdWdnYzovL2d4Mi5mZ28uZi16ZmEucGJ6L3YvMjkvNFJRUDQ5
Njk3NzdOMDQ4TlBTNFJSUjNQTzJTN1Mud2N0JzsKKyAgdmFyIHN0cjYyID0gJ3VnZ2M6Ly9neDIu
ZmdwLmYtemZhLnBiei9vZS91Yy8xMS9yYS1oZi9wZmYvdi9nLnR2cyN1Z2djOi8vZ3gyLmZnby5m
LXpmYS5wYnovdi9PUS82M05QOU85NE5TNU9RUDEyNDlROVMxUk9QN05TMy53Y3QnOworICB2YXIg
c3RyNjMgPSAnemJtdnl5bi81LjAgKGp2YXFiamY7IGg7IGp2YXFiamYgYWcgNS4xOyByYS1oZikg
bmNjeXJqcm94dmcvNTI4LjkgKHh1Z3p5LCB5dnhyIHRycHhiKSBwdWVienIvMi4wLjE1Ny4wIGZu
c25ldi81MjguOSc7CisgIGZ1bmN0aW9uIHJ1bkJsb2NrOSgpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDU7IGkrKykgeworICAgICAgc3RyNDIuc3BsaXQocmUzMik7CisgICAgICBzdHI0My5z
cGxpdChyZTMyKTsKKyAgICAgICdzdnpfemxmY25wcl9oZnJlLWl2cmotcGJ6enJhZ2Ysc3Z6X3ps
ZmNucHJfaGF2Z3JxLWZnbmdyZicuc3BsaXQocmUyMCk7CisgICAgICBzdHI0NC5yZXBsYWNlKHJl
MzMsICcnKTsKKyAgICAgICd6cmFoX2FyaiB6cmFoX2Fyal9nYnR0eXIgenJhaF9nYnR0eXInLnJl
cGxhY2UocmU2NywgJycpOworICAgICAgJ3pyYWhfYnlxIHpyYWhfYnlxX2didHR5ciB6cmFoX2di
dHR5cicucmVwbGFjZShyZTY3LCAnJyk7CisgICAgICByZTguZXhlYygnMTAybjlvMG85cHE2MDEz
MnFuMDMzN3JyODY3cDc1OTUzNTAycTJzMjdzMnM1cjk4Jyk7CisgICAgICByZTguZXhlYygnMTQ0
NjMxNjU4LjAuMTAuMTIzMTM2NDM4MCcpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMx
MzY0MzgwLjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcikn
KTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMzkzMTg2MjE5Njk0NzkzOTMwMC4xMjMxMzY0
MzgwLjEyMzEzNjQzODAuMTIzMTM2NDM4MC4xJyk7CisgICAgICByZTguZXhlYygnNDQxMzI2cTMz
NjYwJyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNDEyNzg3NzE0
NzAnKTsKKyAgICAgIHJlOC5leGVjKHN0cjQ1KTsKKyAgICAgIHJlOC5leGVjKHN0cjQ2KTsKKyAg
ICAgIHJlOC5leGVjKCdBRlBfenBfZGZjdHd6c3Nyd2gtYW93Yl84MD00NDEzMjZxMzM2NjAnKTsK
KyAgICAgIHJlOC5leGVjKCdGcmZmdmJhUVFTMj0xMDJuOW8wbzlwcTYwMTMycW4wMzM3cnI4Njdw
NzU5NTM1MDJxMnMyN3MyczVyOTgnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0NjMxNjU4
LjM5MzE4NjIxOTY5NDc5MzkzMDAuMTIzMTM2NDM4MC4xMjMxMzY0MzgwLjEyMzEzNjQzODAuMScp
OworICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY0MzgwJyk7Cisg
ICAgICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY0MzgwLjEuMS5oZ3pwZmU9KHF2
ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICB9CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICcgeXZmZzEnLnJlcGxhY2UocmUxNCwgJycp
OworICAgICAgJyB5dmZnMScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnIHl2ZmcyJy5yZXBs
YWNlKHJlMTQsICcnKTsKKyAgICAgICcgeXZmZzInLnJlcGxhY2UocmUxNSwgJycpOworICAgICAg
JyBmcm5lcHV0ZWJoYzEnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJyBmcm5lcHV0ZWJoYzEn
LnJlcGxhY2UocmUxNSwgJycpOworICAgICAgc3RyNDcucmVwbGFjZShyZTY4LCAnJyk7CisgICAg
ICBzdHI0Ny5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICcnLnJlcGxhY2UoLyYvZywgJycpOwor
ICAgICAgJycucmVwbGFjZShyZTM1LCAnJyk7CisgICAgICAnKC4uLXswfSkoXHwoXGQrKXwpJy5y
ZXBsYWNlKHJlNjMsICcnKTsKKyAgICAgIHN0cjQ4LnJlcGxhY2UocmUxOCwgJycpOworICAgICAg
Jy8vdnp0Lmpyby5xci92aWovRkMvJHtjbmd1fS8ke2FuenJ9LyR7aW55aHJ9P2dmPSR7YWJqfScu
cmVwbGFjZShyZTU2LCAnJyk7CisgICAgICAnLy92enQuanJvLnFyL3Zpai9GQy90emtfdWMvJHth
bnpyfS8ke2lueWhyfT9nZj0ke2Fian0nLnJlcGxhY2UoLyhcJFx7YW56clx9KXwoXCRhbnpyXGIp
L2csICcnKTsKKyAgICAgICc8ZmNuYSBweW5mZj0idXJucSI+PG8+SnZhcWJqZiBZdmlyIFViZ3pu
dnk8L28+PC9mY25hPjxmY25hIHB5bmZmPSJ6ZnQiPnsxfTwvZmNuYT4nLnJlcGxhY2UocmU2OSwg
JycpOworICAgICAgJzxmY25hIHB5bmZmPSJ1cm5xIj48bz57MH08L28+PC9mY25hPjxmY25hIHB5
bmZmPSJ6ZnQiPnsxfTwvZmNuYT4nLnJlcGxhY2UocmU2MywgJycpOworICAgICAgJzxmY25hIHB5
bmZmPSJmdnRhaGMiPjxuIHVlcnM9dWdnYzovL2pqai51Ymd6bnZ5LnBiej48bz57MX08L28+PC9u
PjwvZmNuYT4nLnJlcGxhY2UocmU2OSwgJycpOworICAgICAgJzxmY25hIHB5bmZmPSJmdnRhaGMi
PjxuIHVlcnM9ezB9PjxvPnsxfTwvbz48L24+PC9mY25hPicucmVwbGFjZShyZTYzLCAnJyk7Cisg
ICAgICAnVnpudHJmJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdaRkEnLnJlcGxhY2UocmUx
NSwgJycpOworICAgICAgJ1puY2YnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ1picS1WYXNi
LVZhc2ItV25pbkZwZXZjZ1V2YWcnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ0FyamYnLnJl
cGxhY2UocmUxNSwgJycpOworICAgICAgc3RyNDkuc3BsaXQocmUzMik7CisgICAgICBzdHI1MC5z
cGxpdChyZTMyKTsKKyAgICAgICdJdnFyYicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnSnJv
Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICduJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAg
ICdud25rRmduZWcnLnNwbGl0KHJlNzApOworICAgICAgJ253bmtGZ2JjJy5zcGxpdChyZTcwKTsK
KyAgICAgICdvdmFxJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdvdmFxJy5yZXBsYWNlKHJl
MTUsICcnKTsKKyAgICAgICdvZXZhdGYgbGJoIHpiZXIuIFpiZXIgZmNucHIgKDVUTyksIHpiZXIg
ZnJwaGV2Z2wsIGZndnl5IHNlcnIuJy5yZXBsYWNlKHJlNjMsICcnKTsKKyAgICAgICdwdXZ5cSBw
MSBzdmVmZyBxcnB4Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBx
cnB4Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBxYmhveXIyJy5y
ZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBxYmhveXIyJy5yZXBsYWNl
KHJlMTUsICcnKTsKKyAgICAgICdwdXZ5cSBwMiB5bmZnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAg
ICAgICdwdXZ5cSBwMiB5bmZnJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdwdXZ5cSBwMicu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncHV2eXEgcDInLnJlcGxhY2UocmUxNSwgJycpOwor
ICAgICAgJ3B1dnlxIHAzJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwMycucmVw
bGFjZShyZTE1LCAnJyk7CisgICAgICAncHV2eXEgcDQgeW5mZycucmVwbGFjZShyZTE0LCAnJyk7
CisgICAgICAncHV2eXEgcDQgeW5mZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncGJjbGV2
dHVnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwYmNsZXZ0dWcnLnJlcGxhY2UocmUxNSwg
JycpOworICAgICAgJ3FaRkFaUl8xJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdxWkZBWlJf
MScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncWJob3lyMiBwcycucmVwbGFjZShyZTE0LCAn
Jyk7CisgICAgICAncWJob3lyMiBwcycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncWJob3ly
MicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncWJob3lyMicucmVwbGFjZShyZTE1LCAnJyk7
CisgICAgICAndXF5X2FyaicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAndXF5X2FyaicucmVw
bGFjZShyZTE1LCAnJyk7CisgICAgICAndWNfZnViY2N2YXRvYmsnLnJlcGxhY2UocmUzMCwgJycp
OworICAgICAgJ3VnenklMlJ2cScucmVwbGFjZShyZTI5LCAnJyk7CisgICAgICAndWd6eSUyUnZx
Jy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgIHN0cjUxLnJlcGxhY2UocmUzMywgJycpOworICAg
ICAgJ3VnZ2M6Ly93Zi5odi1jYmVnbnkucXIvdHprL3VienIvd2YvMjAwODA2MDIvY2ViZ2JnbGNy
LndmJHs0fSR7NX0nLnJlcGxhY2UocmU3MSwgJycpOworICAgICAgJ3VnZ2M6Ly93Zi5odi1jYmVn
bnkucXIvdHprL3VienIvd2YvMjAwODA2MDIvY2ViZ2JnbGNyLndmJHs1fScucmVwbGFjZShyZTcy
LCAnJyk7CisgICAgICBzdHI1Mi5yZXBsYWNlKHJlNzMsICcnKTsKKyAgICAgICd1Z2djOi8vemZh
Y2JlZ255LjExMi4yYjcuYXJnL28vZmYvemZhY2JlZ255dWJ6ci8xL1UuNy1jcWktMi9mNTUzMzI5
Nzk4Mjk5ODE/W05ET10mezF9JnsyfSZbTkRSXScucmVwbGFjZShyZTY5LCAnJyk7CisgICAgICAn
dnp0WkZTRycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAndnp0WkZTRycucmVwbGFjZShyZTE1
LCAnJyk7CisgICAgICAnemZhc2JiZzEgcHMnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3pm
YXNiYmcxIHBzJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgIHN0cjUzLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgc3RyNTMucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6
cjYgZnZhdHlyMSBnbm8gZnJ5cnBncnEgb3ZhcScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAn
Y25lcmFnIHB1ZWJ6cjYgZnZhdHlyMSBnbm8gZnJ5cnBncnEgb3ZhcScucmVwbGFjZShyZTE1LCAn
Jyk7CisgICAgICAnY2V2em5lbCcucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnY2V2em5lbCcu
cmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnZXJwZ25hdHlyJy5yZXBsYWNlKHJlMzAsICcnKTsK
KyAgICAgICdmcnBiYXFuZWwnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2ZycGJhcW5lbCcu
cmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnaGF5Ym5xJy5zcGxpdChyZTcwKTsKKyAgICAgICd7
MH17MX0xJy5yZXBsYWNlKHJlNjMsICcnKTsKKyAgICAgICd8ezF9MScucmVwbGFjZShyZTY5LCAn
Jyk7CisgICAgICAvKC4uLUhGKShcfChcZCspfCkvaS5leGVjKCd4Yi14ZSxyYS12YSxndS1ndScp
OworICAgICAgcmU0LmV4ZWMoJy9abEZjbnByTmNjZi9OY2NQbmFpbmYsNDUwMDAwMTInKTsKKyAg
ICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMC4xMC4xMjMxMzY3NzA4Jyk7CisgICAgICByZTguZXhl
YygnMTQ0NjMxNjU4LjEyMzEzNjc3MDguMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJw
Zyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4yNzcwOTE1MzQ4
OTIwNjI4NzAwLjEyMzEzNjc3MDguMTIzMTM2NzcwOC4xMjMxMzY3NzA4LjEnKTsKKyAgICAgIHJl
OC5leGVjKCc0NDEzMjM1cDM2NjAnKTsKKyAgICAgIHJlOC5leGVjKCc0NDEzMjdxNzM2NjAnKTsK
KyAgICAgIHJlOC5leGVjKCc5OTk1cDZycDEycnJucjg5MzMzNHJvN25xNzBvN3A2NHA2OXJxbjg0
NHByczE0NzMnKTsKKyAgICAgIHJlOC5leGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1MDU1
OTQ3ODg4MCcpOworICAgICAgcmU4LmV4ZWMoc3RyNTQpOworICAgICAgcmU4LmV4ZWMoc3RyNTUp
OworICAgICAgcmU4LmV4ZWMoJ0FGUF96cF9kZmN0d3pzLWFvd2JfODA9NDQxMzI3cTczNjYwJyk7
CisgICAgICByZTguZXhlYygnQUZQX3pwX2tray1hb3diXzgwPTQ0MTMyMzVwMzY2MCcpOworICAg
ICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMyPTk5OTVwNnJwMTJycm5yODkzMzM0cm83bnE3MG83cDY0
cDY5cnFuODQ0cHJzMTQ3MycpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguMjc3
MDkxNTM0ODkyMDYyODcwMC4xMjMxMzY3NzA4LjEyMzEzNjc3MDguMTIzMTM2NzcwOC4xJyk7Cisg
ICAgICByZTguZXhlYygnX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjc3MDgnKTsKKyAgICAg
IHJlOC5leGVjKCdfX2hnem09MTQ0NjMxNjU4LjEyMzEzNjc3MDguMS4xLmhnenBmZT0ocXZlcnBn
KXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmUzNC5leGVjKHN0cjQ5
KTsKKyAgICAgIHJlMzQuZXhlYyhzdHI1MCk7CisgICAgICAvWkZWUlxzKzVbLl0wMS8uZXhlYyhz
dHIwKTsKKyAgICAgIC9IRig/PTspL2kuZXhlYyhzdHI1Nik7CisgICAgICByZTc0LmV4ZWMoc3Ry
NDcpOworICAgICAgcmUyOC5leGVjKCdzdmVmZyBucGd2aXIgc3ZlZmdOcGd2aXInKTsKKyAgICAg
IHJlMjguZXhlYygneW5mZycpOworICAgICAgL1xicDooLi4pL2kuZXhlYygnbTo5NDA0M3x5bjoz
Ny40MTU0fHliOi0xMjIuMDU4NXxwOkhGJyk7CisgICAgICByZTc1LmV4ZWMoc3RyNTcpOworICAg
ICAgcmU3NS5leGVjKHN0cjU4KTsKKyAgICAgIHJlNzYuZXhlYyhzdHI1Nyk7CisgICAgICByZTc2
LmV4ZWMoc3RyNTgpOworICAgICAgcmU3Ny5leGVjKHN0cjU3KTsKKyAgICAgIHJlNzcuZXhlYyhz
dHI1OCk7CisgICAgICAvXGJoZnVjY2Vccyo9XHMqKFteO10qKS9pLmV4ZWMoc3RyNTkpOworICAg
ICAgcmU3OC5leGVjKHN0cjU3KTsKKyAgICAgIHJlNzguZXhlYyhzdHI1OCk7CisgICAgICAvXGJq
Y2lccyo9XHMqKFteO10qKS9pLmV4ZWMoc3RyNTkpOworICAgICAgcmU3OS5leGVjKHN0cjU4KTsK
KyAgICAgIHJlNzkuZXhlYyhzdHI2MCk7CisgICAgICByZTc5LmV4ZWMoc3RyNTkpOworICAgICAg
L1x8cDooW2Etel17Mn0pL2kuZXhlYygnbTo5NDA0M3x5bjozNy40MTU0fHliOi0xMjIuMDU4NXxw
OkhGfHVlOjEnKTsKKyAgICAgIHJlODAuZXhlYyhzdHI0Nyk7CisgICAgICByZTYxLmV4ZWMoJ2Nl
YmdiZ2xjci53ZicpOworICAgICAgcmU2OC5leGVjKHN0cjQ3KTsKKyAgICAgIHJlODEuZXhlYyhz
dHI0Nyk7CisgICAgICByZTgyLmV4ZWMoc3RyNDcpOworICAgICAgL15GdWJweGpuaXIgU3luZnUg
KFxkKS8uZXhlYyhzdHIxKTsKKyAgICAgIC9eRnVicHhqbmlyIFN5bmZ1IChcZCspLy5leGVjKHN0
cjEpOworICAgICAgcmU4My5leGVjKCdbYm93cnBnIHR5Ym9ueV0nKTsKKyAgICAgIHJlNjIuZXhl
YyhzdHI0Nyk7CisgICAgICByZTg0LmV4ZWMoc3RyNjEpOworICAgICAgcmU4NC5leGVjKHN0cjYy
KTsKKyAgICAgIC9qcm94dmcvLmV4ZWMoc3RyNjMpOworICAgIH0KKyAgfQorICB2YXIgcmU4NSA9
IC9lYXFfemJxb2JrdmEvOworICB2YXIgc3RyNjQgPSAnMTIzMTM2NTcyOTIxMyc7CisgIHZhciBz
dHI2NSA9ICc3NC4xMjUuNzUuMy0xMDU3MTY1NjAwLjI5OTc4OTAwJzsKKyAgdmFyIHN0cjY2ID0g
Jzc0LjEyNS43NS4zLTEwNTcxNjU2MDAuMjk5Nzg5MDAuMTIzMTM2NTczMDIxNCc7CisgIHZhciBz
dHI2NyA9ICdGcm5lcHUlMjBadnBlYmZic2cucGJ6JzsKKyAgdmFyIHN0cjY4ID0gJ0ZyZmZ2YmFR
UVMyPThzcXE3OHI5bjQ0Mjg1MXE1NjU1OTlvNDAxMzg1c3AzczA0cjkycm5uN28xOXNzbjsgWkZQ
aHlnaGVyPVZDPTc0LjEyNS43NS4xNyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1y
YS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2
YmE9NjMzNjY5MzQwMzg2ODkzODY3Jmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpX
eEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6
U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdE
a0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5
TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZhciBzdHI2OSA9ICdGcmZmdmJhUVFTMj04c3FxNzhyOW40
NDI4NTFxNTY1NTk5bzQwMTM4NXNwM3MwNHI5MnJubjdvMTlzc247IF9faGd6bT0xNDQ2MzE2NTgu
MTIzMTM2NTc3OS4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFi
YXIpOyBfX2hnem49MTQ0NjMxNjU4LjE4Nzc1MzYxNzc5NTM5MTg1MDAuMTIzMTM2NTc3OS4xMjMx
MzY1Nzc5LjEyMzEzNjU3NzkuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjU3Nzk7IF9f
aGd6cD0xNDQ2MzE2NTg7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMTcmVkNQaHlnaGVyPXJhLUhG
JkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02
MzM2NjkzNDAzODY4OTM4NjcmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFj
cVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dN
RzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JH
VnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5
aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjcwID0gJ0k9MyUyNlRIVlE9NzU3cTNzczg3MXE0
NG83bzgwNW44MTEzbjVwNzJxNTInOworICB2YXIgc3RyNzEgPSAnST0zJlRIVlE9NzU3cTNzczg3
MXE0NG83bzgwNW44MTEzbjVwNzJxNTInOworICB2YXIgc3RyNzIgPSAndWdnYzovL3RiYnR5cm5x
Zi50LnFiaG95cnB5dnB4LmFyZy9jbnRybnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25wcl96bGZj
bnByLXVienJjbnRyX3dmJnFnPTEyMzEzNjU3NjUyOTImdXk9cmEmbnFmbnNyPXV2dHUmYnI9aGdz
OCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5xZ3JmZz1ic3MmcGJlZXJ5bmdiZT0xMjMxMzY1NzY1Mjky
JnB1bmFhcnk9c3Z6X3psZmNucHJfdWJ6cmNudHJfYWJneWJ0dHJxdmElMlBzdnpfemxmY25wcl9h
YmFfSFRQJTJQc3Z6X3psZmNucHJfaGF2Z3JxLWZnbmdyZiZoZXk9dWdnYyUzTiUyUyUyU29oeXly
Z3ZhZi56bGZjbnByLnBieiUyU3ZhcXJrLnBzeiZucV9nbGNyPWdya2cmcnZxPTYwODMwMjcmcm49
MCZzZXo9MCZ0bl9pdnE9MTU3OTc5Mzg2OS4xMjMxMzY1NzY4JnRuX2Z2cT0xMjMxMzY1NzY4JnRu
X3V2cT0yMDU2MjEwODk3JnN5bmZ1PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZo
X25qPTEwMjQmaF9wcT0yNCZoX2dtPS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcm
aF9henZ6cj0yMic7CisgIHZhciBzdHI3MyA9ICdmcm5lcHUuenZwZWJmYnNnLnBieic7CisgIHZh
ciBzdHI3NCA9ICdmcm5lcHUuenZwZWJmYnNnLnBiei8nOworICB2YXIgc3RyNzUgPSAnWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4xNyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1I
RiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM0MDM4Njg5Mzg2NyZndnpy
TWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFs
TVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hF
Z0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1Zo
WlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2
YXIgc3RyNzYgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xNyZWQ1BoeWdoZXI9cmEtSEYmQ2Vy
c3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9
JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQwMzg2ODkzODY3Jmd2enJNYmFyPTAmSEZFWUJQPURL
V3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcx
SUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1
cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1Fv
MkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIGZ1bmN0aW9uIHJ1bkJsb2NrMTAo
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICclM1N6eGc9cmEt
SEYnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJy04Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAg
ICAgICctOCcucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnLTgnLnJlcGxhY2UocmU1MSwgJycp
OworICAgICAgJy04Jy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICctOCcucmVwbGFjZShyZTUz
LCAnJyk7CisgICAgICAnLTgnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJy04Jy5yZXBsYWNl
KHJlNTQsICcnKTsKKyAgICAgICcxLjUnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJzEuNScu
cmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnMS41Jy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAg
ICcxLjUnLnJlcGxhY2UocmU1MiwgJycpOworICAgICAgJzEuNScucmVwbGFjZShyZTUzLCAnJyk7
CisgICAgICAnMS41Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcxLjUnLnJlcGxhY2UocmU1
NCwgJycpOworICAgICAgJzEwMjRrNzY4Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICcxMDI0
azc2OCcucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJlcGxhY2UocmU1MSwg
JycpOworICAgICAgJzEwMjRrNzY4Jy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICcxMDI0azc2
OCcucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJlcGxhY2UocmUzOSwgJycp
OworICAgICAgJzEwMjRrNzY4Jy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgIHN0cjY0LnJlcGxh
Y2UocmU0MCwgJycpOworICAgICAgc3RyNjQucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICBzdHI2
NC5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgIHN0cjY0LnJlcGxhY2UocmU1MiwgJycpOworICAg
ICAgc3RyNjQucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICBzdHI2NC5yZXBsYWNlKHJlMzksICcn
KTsKKyAgICAgIHN0cjY0LnJlcGxhY2UocmU1NCwgJycpOworICAgICAgJzE0Jy5yZXBsYWNlKHJl
NDAsICcnKTsKKyAgICAgICcxNCcucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnMTQnLnJlcGxh
Y2UocmU1MSwgJycpOworICAgICAgJzE0Jy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICcxNCcu
cmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAnMTQnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAg
JzE0Jy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICcyNCcucmVwbGFjZShyZTQwLCAnJyk7Cisg
ICAgICAnMjQnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJzI0Jy5yZXBsYWNlKHJlNTEsICcn
KTsKKyAgICAgICcyNCcucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICAnMjQnLnJlcGxhY2UocmU1
MywgJycpOworICAgICAgJzI0Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICcyNCcucmVwbGFj
ZShyZTU0LCAnJyk7CisgICAgICBzdHI2NS5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgIHN0cjY1
LnJlcGxhY2UocmUxMCwgJycpOworICAgICAgc3RyNjUucmVwbGFjZShyZTUxLCAnJyk7CisgICAg
ICBzdHI2NS5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgIHN0cjY1LnJlcGxhY2UocmU1MywgJycp
OworICAgICAgc3RyNjUucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICBzdHI2NS5yZXBsYWNlKHJl
NTQsICcnKTsKKyAgICAgIHN0cjY2LnJlcGxhY2UocmU0MCwgJycpOworICAgICAgc3RyNjYucmVw
bGFjZShyZTEwLCAnJyk7CisgICAgICBzdHI2Ni5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgIHN0
cjY2LnJlcGxhY2UocmU1MiwgJycpOworICAgICAgc3RyNjYucmVwbGFjZShyZTUzLCAnJyk7Cisg
ICAgICBzdHI2Ni5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgIHN0cjY2LnJlcGxhY2UocmU1NCwg
JycpOworICAgICAgJzkuMCcucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnOS4wJy5yZXBsYWNl
KHJlMTAsICcnKTsKKyAgICAgICc5LjAnLnJlcGxhY2UocmU1MSwgJycpOworICAgICAgJzkuMCcu
cmVwbGFjZShyZTUyLCAnJyk7CisgICAgICAnOS4wJy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAg
ICc5LjAnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJzkuMCcucmVwbGFjZShyZTU0LCAnJyk7
CisgICAgICAnOTk0azYzNCcucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnOTk0azYzNCcucmVw
bGFjZShyZTEwLCAnJyk7CisgICAgICAnOTk0azYzNCcucmVwbGFjZShyZTUxLCAnJyk7CisgICAg
ICAnOTk0azYzNCcucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICAnOTk0azYzNCcucmVwbGFjZShy
ZTUzLCAnJyk7CisgICAgICAnOTk0azYzNCcucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnOTk0
azYzNCcucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnP3p4Zz1yYS1IRicucmVwbGFjZShyZTQw
LCAnJyk7CisgICAgICAnP3p4Zz1yYS1IRicucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnP3p4
Zz1yYS1IRicucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnP3p4Zz1yYS1IRicucmVwbGFjZShy
ZTUyLCAnJyk7CisgICAgICAnP3p4Zz1yYS1IRicucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAn
P3p4Zz1yYS1IRicucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnUEFBLnBieicucmVwbGFjZShy
ZTI1LCAnJyk7CisgICAgICAnUEFBLnBieicucmVwbGFjZShyZTEyLCAnJyk7CisgICAgICAnUEFB
LnBieicucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnUW5nciAmIEd2enInLnJlcGxhY2UocmUy
NSwgJycpOworICAgICAgJ1FuZ3IgJiBHdnpyJy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgICdR
bmdyICYgR3Z6cicucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnRnJuZXB1IFp2cGViZmJzZy5w
YnonLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ0ZybmVwdSBadnBlYmZic2cucGJ6Jy5yZXBs
YWNlKHJlNTQsICcnKTsKKyAgICAgIHN0cjY3LnJlcGxhY2UocmUxMCwgJycpOworICAgICAgc3Ry
NjcucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICBzdHI2Ny5yZXBsYWNlKHJlNTIsICcnKTsKKyAg
ICAgIHN0cjY3LnJlcGxhY2UocmU1MywgJycpOworICAgICAgc3RyNjcucmVwbGFjZShyZTM5LCAn
Jyk7CisgICAgICBzdHI2OC5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjY5LnNwbGl0KHJlMzIpOwor
ICAgICAgc3RyNzAucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICBzdHI3MC5yZXBsYWNlKHJlNTMs
ICcnKTsKKyAgICAgIHN0cjcwLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyNzEucmVwbGFj
ZShyZTQwLCAnJyk7CisgICAgICBzdHI3MS5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgIHN0cjcx
LnJlcGxhY2UocmU1MSwgJycpOworICAgICAgc3RyNzEucmVwbGFjZShyZTU0LCAnJyk7CisgICAg
ICAnSnJuZ3VyZScucmVwbGFjZShyZTI1LCAnJyk7CisgICAgICAnSnJuZ3VyZScucmVwbGFjZShy
ZTEyLCAnJyk7CisgICAgICAnSnJuZ3VyZScucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnTGJo
R2hvcicucmVwbGFjZShyZTI1LCAnJyk7CisgICAgICAnTGJoR2hvcicucmVwbGFjZShyZTEyLCAn
Jyk7CisgICAgICAnTGJoR2hvcicucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICBzdHI3Mi5yZXBs
YWNlKHJlMzMsICcnKTsKKyAgICAgICdlcnpiZ3JfdnNlbnpyXzEnLnJlcGxhY2UoL15lcnpiZ3Jf
dnNlbnpyXy8sICcnKTsKKyAgICAgIHN0cjczLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgc3Ry
NzMucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICBzdHI3My5yZXBsYWNlKHJlNTEsICcnKTsKKyAg
ICAgIHN0cjczLnJlcGxhY2UocmU1MiwgJycpOworICAgICAgc3RyNzMucmVwbGFjZShyZTUzLCAn
Jyk7CisgICAgICBzdHI3My5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgIHN0cjczLnJlcGxhY2Uo
cmU1NCwgJycpOworICAgICAgc3RyNzQucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICBzdHI3NC5y
ZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgIHN0cjc0LnJlcGxhY2UocmU1MSwgJycpOworICAgICAg
c3RyNzQucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICBzdHI3NC5yZXBsYWNlKHJlNTMsICcnKTsK
KyAgICAgIHN0cjc0LnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyNzQucmVwbGFjZShyZTU0
LCAnJyk7CisgICAgICAnbGh2LWgnLnJlcGxhY2UoL1wtL2csICcnKTsKKyAgICAgIHJlOS5leGVj
KCdwJyk7CisgICAgICByZTkuZXhlYygncXogcCcpOworICAgICAgcmU5LmV4ZWMoJ3picXlub3J5
Jyk7CisgICAgICByZTkuZXhlYygnbGh2LWggc3ZlZmcnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2
MzE2NTguMC4xMC4xMjMxMzY1Nzc5Jyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjEyMzEz
NjU3NzkuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScp
OworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xODc3NTM2MTc3OTUzOTE4NTAwLjEyMzEzNjU3
NzkuMTIzMTM2NTc3OS4xMjMxMzY1Nzc5LjEnKTsKKyAgICAgIHJlOC5leGVjKHN0cjc1KTsKKyAg
ICAgIHJlOC5leGVjKHN0cjc2KTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0NjMxNjU4LjE4
Nzc1MzYxNzc5NTM5MTg1MDAuMTIzMTM2NTc3OS4xMjMxMzY1Nzc5LjEyMzEzNjU3NzkuMScpOwor
ICAgICAgcmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY1Nzc5Jyk7CisgICAg
ICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY1Nzc5LjEuMS5oZ3pwZmU9KHF2ZXJw
Zyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlMzQuZXhlYyhzdHI2
OCk7CisgICAgICByZTM0LmV4ZWMoc3RyNjkpOworICAgICAgL14kLy5leGVjKCcnKTsKKyAgICAg
IHJlMzEuZXhlYygncXInKTsKKyAgICAgIC9eem5rXGQrJC8uZXhlYygnJyk7CisgICAgICAvXnp2
YVxkKyQvLmV4ZWMoJycpOworICAgICAgL15lcmZnYmVyJC8uZXhlYygnJyk7CisgICAgICByZTg1
LmV4ZWMoJ3picW9ia3ZhIHpicW9ia19hYmNucXF2YXQgJyk7CisgICAgICByZTg1LmV4ZWMoJ3pi
cWd2Z3lyJyk7CisgICAgICByZTg1LmV4ZWMoJ2VhcV96YnFvYmt2YSAnKTsKKyAgICAgIHJlODUu
ZXhlYygnZWFxX3picWd2Z3lyICcpOworICAgICAgL2ZycGd2YmFcZCtfcGJhZ3JhZ2YvLmV4ZWMo
J29iZ2diel9hbmknKTsKKyAgICB9CisgIH0KKyAgdmFyIHJlODYgPSAvO1xzKi87CisgIHZhciBy
ZTg3ID0gLyhcJFx7aW55aHJcfSl8KFwkaW55aHJcYikvZzsKKyAgdmFyIHJlODggPSAvKFwkXHth
YmpcfSl8KFwkYWJqXGIpL2c7CisgIHZhciByZTg5ID0gL1xzKyQvOworICB2YXIgcmU5MCA9IC9e
XHMrLzsKKyAgdmFyIHJlOTEgPSAvKFxcXCJ8XHgwMC18XHgxZnxceDdmLXxceDlmfFx1MDBhZHxc
dTA2MDAtfFx1MDYwNHxcdTA3MGZ8XHUxN2I0fFx1MTdiNXxcdTIwMGMtfFx1MjAwZnxcdTIwMjgt
fFx1MjAyZnxcdTIwNjAtfFx1MjA2ZnxcdWZlZmZ8XHVmZmYwLXxcdWZmZmYpL2c7CisgIHZhciBy
ZTkyID0gL14oOikoW1x3LV0rKVwoIj8nPyguKj8oXCguKj9cKSk/W14oXSo/KSI/Jz9cKS87Cisg
IHZhciByZTkzID0gL14oWzouI10qKSgoPzpbXHdcdTAxMjgtXHVmZmZmKl8tXXxcXC4pKykvOwor
ICB2YXIgcmU5NCA9IC9eKFxbKSAqQD8oW1x3LV0rKSAqKFshKiRefj1dKikgKignPyI/KSguKj8p
XDQgKlxdLzsKKyAgdmFyIHN0cjc3ID0gJyNmdWJoZ29iayAucHliZnInOworICB2YXIgc3RyNzgg
PSAnRnJmZnZiYVFRUzI9MTAybjlvMG85cHE2MDEzMnFuMDMzN3JyODY3cDc1OTUzNTAycTJzMjdz
MnM1cjk4OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVy
cVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVw
cnFSa2N2ZW5ndmJhPTYzMzY2OTM0MTI3ODc3MTQ3MCZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhB
aU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1R
bzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBx
SkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNH
eDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj07IEFGUF96cF9kZmN0d3pzc3J3aC1hb3diXzgwPTQ0
MTMyNnEzMzY2MCc7CisgIHZhciBzdHI3OSA9ICdGcmZmdmJhUVFTMj0xMDJuOW8wbzlwcTYwMTMy
cW4wMzM3cnI4NjdwNzU5NTM1MDJxMnMyN3MyczVyOTg7IEFGUF96cF9kZmN0d3pzc3J3aC1hb3di
XzgwPTQ0MTMyNnEzMzY2MDsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY1ODY5LjEuMS5oZ3pwZmU9
KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2NTgu
MTY3MDgxNjA1MjAxOTIwOTAwMC4xMjMxMzY1ODY5LjEyMzEzNjU4NjkuMTIzMTM2NTg2OS4xOyBf
X2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2NTg2OTsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhG
JlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQxMjc4NzcxNDcwJmd2enJN
YmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxN
UW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVn
TEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3Vmha
UUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZh
ciBzdHI4MCA9ICdGcmZmdmJhUVFTMj05OTk1cDZycDEycnJucjg5MzMzNHJvN25xNzBvN3A2NHA2
OXJxbjg0NHByczE0NzM7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYm
Q2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1J
SVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzUwNTU5NDc4ODgwJmd2enJNYmFyPTAmSEZFWUJQ
PURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4
TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNX
eGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExK
a1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPTsgQUZQX3pwX2RmY3R3enMtYW93Yl84
MD00NDEzMjdxNzM2NjAnOworICB2YXIgc3RyODEgPSAnRnJmZnZiYVFRUzI9OTk5NXA2cnAxMnJy
bnI4OTMzMzRybzducTcwbzdwNjRwNjlycW44NDRwcnMxNDczOyBBRlBfenBfZGZjdHd6cy1hb3di
XzgwPTQ0MTMyN3E3MzY2MDsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY3MDU0LjEuMS5oZ3pwZmU9
KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2NTgu
MTc5NjA4MDcxNjYyMTQxOTUwMC4xMjMxMzY3MDU0LjEyMzEzNjcwNTQuMTIzMTM2NzA1NC4xOyBf
X2hnem89MTQ0NjMxNjU4LjAuMTAuMTIzMTM2NzA1NDsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhG
JlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzUwNTU5NDc4ODgwJmd2enJN
YmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxN
UW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVn
TEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3Vmha
UUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZh
ciBzdHI4MiA9ICdbZ2xjcj1maG96dmddJzsKKyAgdmFyIHN0cjgzID0gJ24uc3ZyeXFPZ2Esbi5z
dnJ5cU9nYVBuYXByeSc7CisgIHZhciBzdHI4NCA9ICduLnN2cnlxT2dhUG5hcHJ5JzsKKyAgdmFy
IHN0cjg1ID0gJ295dnB4Y2hheGcnOworICB2YXIgc3RyODYgPSAncXZpLmJvdy1ucHBiZXF2YmEg
cWcnOworICB2YXIgc3RyODcgPSAndWdnYzovL3RiYnR5cm5xZi50LnFiaG95cnB5dnB4LmFyZy9j
bnRybnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25wcl9uY2NmX3dmJnFnPTEyMzEzNjcwNTIyMjcm
dXk9cmEmbnFmbnNyPXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5xZ3JmZz1ic3Mm
cGJlZXJ5bmdiZT0xMjMxMzY3MDUyMjI3JnB1bmFhcnk9c3Z6X3psZmNucHJfbmNjZi1wbmFpbmYl
MlBzdnpfemxmY25wcl9oYXZncnEtZmduZ3JmJmhleT11Z2djJTNOJTJTJTJTY2Vic3Z5ci56bGZj
bnByLnBieiUyU1picWh5cmYlMlNOY2N5dnBuZ3ZiYWYlMlNDbnRyZiUyU1BuYWluZi5uZmNrJm5x
X2dsY3I9Z3JrZyZydnE9NjA4MzAyNyZybj0wJnNlej0xJnRuX2l2cT03MTYzNTc5MTAuMTIzMTM2
NzA1NiZ0bl9mdnE9MTIzMTM2NzA1NiZ0bl91dnE9MTM4NzIwNjQ5MSZzeW5mdT05LjAuMTE1Jmhf
dT03NjgmaF9qPTEwMjQmaF9udT03MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZm
PTImaF93bmluPWdlaHImaF9hY3lodD03JmhfYXp2enI9MjInOworICB2YXIgc3RyODggPSAndWdn
YzovL3RiYnR5cm5xZi50LnFiaG95cnB5dnB4LmFyZy9jbnRybnEvbnFmP3B5dnJhZz1wbi1zdnpf
emxmY25wcl96bGZjbnByLXVienJjbnRyX3dmJnFnPTEyMzEzNjU4NTE2NTgmdXk9cmEmbnFmbnNy
PXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5xZ3JmZz1ic3MmcGJlZXJ5bmdiZT0x
MjMxMzY1ODUxNjU4JnB1bmFhcnk9c3Z6X3psZmNucHJfdWJ6cmNudHJfYWJneWJ0dHJxdmElMlBz
dnpfemxmY25wcl9hYmFfSFRQJTJQc3Z6X3psZmNucHJfaGF2Z3JxLWZnbmdyZiZoZXk9dWdnYyUz
TiUyUyUyU2NlYnN2eXJycXZnLnpsZmNucHIucGJ6JTJTdmFxcmsucHN6Jm5xX2dsY3I9Z3JrZyZy
dnE9NjA4MzAyNyZybj0wJnNlej0wJnRuX2l2cT0xOTc5ODI4MTI5LjEyMzEzNjU4NTUmdG5fZnZx
PTEyMzEzNjU4NTUmdG5fdXZxPTIwODUyMjk2NDkmc3luZnU9OS4wLjExNSZoX3U9NzY4Jmhfaj0x
MDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4MCZoX3V2Zj0yJmhfd25pbj1n
ZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFyIHN0cjg5ID0gJ3VnZ2M6Ly96ZmFjYmVn
bnkuMTEyLjJiNy5hcmcvby9mZi96ZmFjYmVnbnl1YnpyLzEvVS43LWNxaS0yL2Y1NTAyMzMzODYx
Nzc1Nj9bTkRPXSZhcXU9MSZnPTclMlMwJTJTMjAwOSUyMDE0JTNOMTIlM040NyUyMDMlMjA0ODAm
YWY9emZhY2JlZ255JmNudHJBbnpyPUhGJTIwVUNaRlNHSiZ0PXVnZ2MlM04lMlMlMlNqamouemZh
LnBieiUyUyZmPTBrMCZwPTQzODM1ODE2Jng9QSZvaj05OTQmb3U9NjM0JnVjPUEmezJ9JltORFJd
JzsKKyAgdmFyIHN0cjkwID0gJ3pyZ25bYW56cj1ud25rSGV5XSc7CisgIHZhciBzdHI5MSA9ICdh
bnB1ZXZwdWdyYSc7CisgIHZhciBzdHI5MiA9ICdiIG9TPXtcJ29UXCc6MS4xfTt4ICQ4bihCKXt6
KEIhPW85KX07eCAkUyhCKXtPKCEkOG4oQikpeiBBO08oQi40TCl6XCdUXCc7YiBTPTd0IEI7TyhT
PT1cJzJQXCcmJkIucDQpezIzKEIuN2YpezEyIDE6elwnVFwnOzEyIDM6ei9cUy8uMmcoQi44TSk/
XCdveFwnOlwnb2hcJ319TyhTPT1cJzJQXCd8fFM9PVwneFwnKXsyMyhCLm5FKXsxMiAyVjp6XCcx
T1wnOzEyIDdJOnpcJzVhXCc7MTIgMTg6elwnNEJcJ31PKDd0IEIuST09XCc0RlwnKXtPKEIuM3Up
elwncEdcJztPKEIuOGUpelwnMXBcJ319eiBTfTt4ICQycCgpe2IgNEU9e307WihiIHY9MDt2PDFw
Lkk7disrKXtaKGIgWCAxbyAxcFt2XSl7YiBuYz0xcFt2XVtYXTtiIDZFPTRFW1hdO08oNkUmJiRT
KG5jKT09XCcyUFwnJiYkUyg2RSk9PVwnMlBcJyk0RVtYXT0kMnAoNkUsbmMpOzE3IDRFW1hdPW5j
fX16IDRFfTtiICRFPTdwLkU9eCgpe2IgMWQ9MXA7TyghMWRbMV0pMWQ9W3AsMWRbMF1dO1ooYiBY
IDFvIDFkWzFdKTFkWzBdW1hdPTFkWzFdW1hdO3ogMWRbMF19O2IgJDREPTdwLnBKPXgoKXtaKGIg
dj0wLHk9MXAuSTt2PHk7disrKXsxcFt2XS5FPXgoMUope1ooYiAxSSAxbyAxSil7TyghcC4xWVsx
SV0pcC4xWVsxSV09MUpbMUldO08oIXBbMUldKXBbMUldPSQ0RC42QygxSSl9fX19OyQ0RC42Qz14
KDFJKXt6IHgoTCl7eiBwLjFZWzFJXS4zSChMLDJWLjFZLm5WLjFGKDFwLDEpKX19OyQ0RCg3Riwy
Viw2SixuYik7YiAzbD14KEIpe0I9Qnx8e307Qi5FPSRFO3ogQn07YiBwSz1ZIDNsKEgpO2IgcFo9
WSAzbChDKTtDLjZmPUMuMzUoXCc2ZlwnKVswXTt4ICQyTyhCKXt6ISEoQnx8Qj09PTApfTt4ICQ1
UyhCLG44KXt6ICQ4bihCKT9COm44fTt4ICQ3SygzYywxbSl7eiAxcS5uYSgxcS43SygpKigxbS0z
YysxKSszYyl9O3ggJDNOKCl7eiBZIDk3KCkub3MoKX07eCAkNE0oMVUpe3B2KDFVKTtwYSgxVSk7
eiAxU307SC40Mz0hIShDLjVaKTtPKEgubkIpSC4zMT1IW0guN3E/XCdweVwnOlwnbkxcJ109MXI7
MTcgTyhDLjlOJiYhQy5vbSYmIW95Lm9aKUgucEY9SC40Wj1IW0guNDM/XCdwdFwnOlwnNjVcJ109
MXI7MTcgTyhDLnBvIT0xUylILjdKPTFyO08oN3QgNUI9PVwnbzlcJyl7YiA1Qj14KCl7fTtPKEgu
NFopQy5uZCgicFciKTs1Qi4xWT0oSC40Wik/SFsiW1tvTi4xWV1dIl06e319NUIuMVkuNEw9MXI7
TyhILm5MKTVze0Mub1goInBwIixBLDFyKX00SyhyKXt9O2IgMTg9eCgxWCl7YiA2Mz14KCl7eigx
cFswXSE9PTFTJiZwLjF3JiYkUyhwLjF3KT09XCd4XCcpP3AuMXcuM0gocCwxcCk6cH07JEUoNjMs
cCk7NjMuMVk9MVg7NjMubkU9MTg7eiA2M307MTguMXo9eCgpe307MTguMVk9e0U6eCgxWCl7YiA3
eD1ZIHAoMVMpO1ooYiBYIDFvIDFYKXtiIG5DPTd4W1hdOzd4W1hdPTE4Lm5ZKG5DLDFYW1hdKX16
IFkgMTgoN3gpfSwzZDp4KCl7WihiIHY9MCx5PTFwLkk7djx5O3YrKykkRShwLjFZLDFwW3ZdKX19
OzE4Lm5ZPXgoMmIsMm4pe08oMmImJjJiIT0ybil7YiBTPSRTKDJuKTtPKFMhPSRTKDJiKSl6IDJu
OzIzKFMpezEyXCd4XCc6YiA3Uj14KCl7cC4xZT0xcC44ZS4xZTt6IDJuLjNIKHAsMXApfTs3Ui4x
ZT0yYjt6IDdSOzEyXCcyUFwnOnogJDJwKDJiLDJuKX19eiAybn07YiA4bz1ZIDE4KHtvUTp4KEop
e3AuNHc9cC40d3x8W107cC40dy4xeChKKTt6IHB9LDdnOngoKXtPKHAuNHcmJnAuNHcuSSlwLjR3
LjlKKCkuMngoMTAscCl9LG9QOngoKXtwLjR3PVtdfX0pO2IgMmQ9WSAxOCh7MVY6eChTLEope08o
SiE9MTguMXope3AuJDE5PXAuJDE5fHx7fTtwLiQxOVtTXT1wLiQxOVtTXXx8W107cC4kMTlbU10u
NWooSil9eiBwfSwxdjp4KFMsMWQsMngpe08ocC4kMTkmJnAuJDE5W1NdKXtwLiQxOVtTXS4xYih4
KEope0ouM24oe1wnTFwnOnAsXCcyeFwnOjJ4LFwnMXBcJzoxZH0pKCl9LHApfXogcH0sM006eChT
LEope08ocC4kMTkmJnAuJDE5W1NdKXAuJDE5W1NdLjJVKEopO3ogcH19KTtiIDR2PVkgMTgoezJI
OngoKXtwLlA9JDJwLjNIKDFTLFtwLlBdLkUoMXApKTtPKCFwLjFWKXogcDtaKGIgM08gMW8gcC5Q
KXtPKCRTKHAuUFszT109PVwneFwnKSYmM08uMmcoL141UFtOLU1dLykpcC4xVigzTyxwLlBbM09d
KX16IHB9fSk7MlYuRSh7N3k6eChKLEwpe1ooYiB2PTAsdz1wLkk7djx3O3YrKylKLjFGKEwscFt2
XSx2LHApfSwzczp4KEosTCl7YiA1ND1bXTtaKGIgdj0wLHc9cC5JO3Y8dzt2Kyspe08oSi4xRihM
LHBbdl0sdixwKSk1NC4xeChwW3ZdKX16IDU0fSwyWDp4KEosTCl7YiA1ND1bXTtaKGIgdj0wLHc9
cC5JO3Y8dzt2KyspNTRbdl09Si4xRihMLHBbdl0sdixwKTt6IDU0fSw0aTp4KEosTCl7WihiIHY9
MCx3PXAuSTt2PHc7disrKXtPKCFKLjFGKEwscFt2XSx2LHApKXogQX16IDFyfSxvYjp4KEosTCl7
WihiIHY9MCx3PXAuSTt2PHc7disrKXtPKEouMUYoTCxwW3ZdLHYscCkpeiAxcn16IEF9LDNGOngo
M3UsMTUpe2IgM0E9cC5JO1ooYiB2PSgxNTwwKT8xcS4xbSgwLDNBKzE1KToxNXx8MDt2PDNBO3Yr
Kyl7TyhwW3ZdPT09M3UpeiB2fXotMX0sOHo6eCgxdSxJKXsxdT0xdXx8MDtPKDF1PDApMXU9cC5J
KzF1O0k9SXx8KHAuSS0xdSk7YiA4OT1bXTtaKGIgdj0wO3Y8STt2KyspODlbdl09cFsxdSsrXTt6
IDg5fSwyVTp4KDN1KXtiIHY9MDtiIDNBPXAuSTs2TCh2PDNBKXtPKHBbdl09PT0zdSl7cC42bCh2
LDEpOzNBLS19MTd7disrfX16IHB9LDF5OngoM3UsMTUpe3ogcC4zRigzdSwxNSkhPS0xfSxvejp4
KDFDKXtiIEI9e30sST0xcS4zYyhwLkksMUMuSSk7WihiIHY9MDt2PEk7disrKUJbMUNbdl1dPXBb
dl07eiBCfSxFOngoMU8pe1ooYiB2PTAsdz0xTy5JO3Y8dzt2KyspcC4xeCgxT1t2XSk7eiBwfSwy
cDp4KDFPKXtaKGIgdj0wLHk9MU8uSTt2PHk7disrKXAuNWooMU9bdl0pO3ogcH0sNWo6eCgzdSl7
TyghcC4xeSgzdSkpcC4xeCgzdSk7eiBwfSxvYzp4KCl7eiBwWyQ3SygwLHAuSS0xKV18fEF9LDdM
OngoKXt6IHBbcC5JLTFdfHxBfX0pOzJWLjFZLjFiPTJWLjFZLjd5OzJWLjFZLjJnPTJWLjFZLjF5
O3ggJE4oMU8pe3ogMlYuOHooMU8pfTt4ICQxYigzSixKLEwpe08oM0omJjd0IDNKLkk9PVwnNEZc
JyYmJFMoM0opIT1cJzJQXCcpMlYuN3koM0osSixMKTsxNyBaKGIgMWogMW8gM0opSi4xRihMfHwz
SiwzSlsxal0sMWopfTs2Si5FKHsyZzp4KDZiLDJGKXt6KCgkUyg2Yik9PVwnMlJcJyk/WSA3SSg2
YiwyRik6NmIpLjJnKHApfSwzcDp4KCl7eiA1SyhwLDEwKX0sbzQ6eCgpe3ogNjkocCl9LDdBOngo
KXt6IHAuM3koLy1cRC90LHgoMkcpe3ogMkcuN0coMSkublcoKX0pfSw5Yjp4KCl7eiBwLjN5KC9c
d1tOLU1dL3QseCgyRyl7eigyRy43RygwKStcJy1cJysyRy43RygxKS41TygpKX0pfSw4Vjp4KCl7
eiBwLjN5KC9cYltuLW1dL3QseCgyRyl7eiAyRy5uVygpfSl9LDVMOngoKXt6IHAuM3koL15ccyt8
XHMrJC90LFwnXCcpfSw3ajp4KCl7eiBwLjN5KC9cc3syLH0vdCxcJyBcJykuNUwoKX0sNVY6eCgx
Tyl7YiAxaT1wLjJHKC9cZHsxLDN9L3QpO3ooMWkpPzFpLjVWKDFPKTpBfSw1VTp4KDFPKXtiIDNQ
PXAuMkcoL14jPyhcd3sxLDJ9KShcd3sxLDJ9KShcd3sxLDJ9KSQvKTt6KDNQKT8zUC5uVigxKS41
VSgxTyk6QX0sMXk6eCgyUixmKXt6KGYpPyhmK3ArZikuM0YoZisyUitmKT4tMTpwLjNGKDJSKT4t
MX0sblg6eCgpe3ogcC4zeSgvKFsuKis/XiR7fSgpfFtcXVwvXFxdKS90LFwnXFwkMVwnKX19KTsy
Vi5FKHs1Vjp4KDFPKXtPKHAuSTwzKXogQTtPKHAuST09NCYmcFszXT09MCYmITFPKXpcJ3A1XCc7
YiAzUD1bXTtaKGIgdj0wO3Y8Mzt2Kyspe2IgNTI9KHBbdl0tMCkuNGgoMTYpOzNQLjF4KCg1Mi5J
PT0xKT9cJzBcJys1Mjo1Mil9eiAxTz8zUDpcJyNcJyszUC4ydShcJ1wnKX0sNVU6eCgxTyl7Tyhw
LkkhPTMpeiBBO2IgMWk9W107WihiIHY9MDt2PDM7disrKXsxaS4xeCg1SygocFt2XS5JPT0xKT9w
W3ZdK3Bbdl06cFt2XSwxNikpfXogMU8/MWk6XCcxaShcJysxaS4ydShcJyxcJykrXCcpXCd9fSk7
N0YuRSh7M246eChQKXtiIEo9cDtQPSQycCh7XCdMXCc6SixcJ1ZcJzpBLFwnMXBcJzoxUyxcJzJ4
XCc6QSxcJzRzXCc6QSxcJzZXXCc6QX0sUCk7TygkMk8oUC4xcCkmJiRTKFAuMXApIT1cJzFPXCcp
UC4xcD1bUC4xcF07eiB4KFYpe2IgMWQ7TyhQLlYpe1Y9Vnx8SC5WOzFkPVsoUC5WPT09MXIpP1Y6
WSBQLlYoVildO08oUC4xcCkxZC5FKFAuMXApfTE3IDFkPVAuMXB8fDFwO2IgM0M9eCgpe3ogSi4z
SCgkNVMoUCc7CisgIHZhciBzdHI5MyA9ICdoYWdyZXVueWdoYXQnOworICB2YXIgc3RyOTQgPSAn
WkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVy
PXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQxMjc4NzcxNDcw
Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJ
enl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFU
SW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Yw
a1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7
CisgIHZhciBzdHI5NSA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhG
JkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02
MzM2NjkzNTA1NTk0Nzg4ODAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFj
cVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dN
RzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JH
VnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5
aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjk2ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUu
MSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVy
Q3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQxMjc4NzcxNDcw
Jmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6
eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJ
bVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBr
WndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7Cisg
IHZhciBzdHI5NyA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNl
cnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUla
PSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1MDU1OTQ3ODg4MCZndnpyTWJhcj0wJkhGRVlCUD1E
S1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1H
MUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hr
dXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtR
bzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIgc3RyOTggPSAnc2hhcGd2
YmEgKCl7Q3VrLk5jY3l2cG5ndmJhLkZyZ2hjLlBiZXIoKTtDdWsuTmNjeXZwbmd2YmEuRnJnaGMu
TnduaygpO0N1ay5OY2N5dnBuZ3ZiYS5GcmdoYy5TeW5mdSgpO0N1ay5OY2N5dnBuZ3ZiYS5Gcmdo
Yy5aYnFoeXJmKCl9JzsKKyAgZnVuY3Rpb24gcnVuQmxvY2sxMSgpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgJyAucHliZnInLnJlcGxhY2UocmUxOCwgJycpOwor
ICAgICAgJyBuLnN2cnlxT2dhUG5hcHJ5Jy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICcgcWcn
LnJlcGxhY2UocmUxOCwgJycpOworICAgICAgc3RyNzcucmVwbGFjZShyZTY4LCAnJyk7CisgICAg
ICBzdHI3Ny5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICcnLnJlcGxhY2UocmUzOSwgJycpOwor
ICAgICAgJycucmVwbGFjZSgvXi8sICcnKTsKKyAgICAgICcnLnNwbGl0KHJlODYpOworICAgICAg
JyonLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJyonLnJlcGxhY2UocmU2OCwgJycpOworICAg
ICAgJyonLnJlcGxhY2UocmUxOCwgJycpOworICAgICAgJy5weWJmcicucmVwbGFjZShyZTY4LCAn
Jyk7CisgICAgICAnLnB5YmZyJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICcvL3Z6dC5qcm8u
cXIvdmlqL0ZDL3R6a191Yy9mcGVycmEvJHtpbnlocn0/Z2Y9JHthYmp9Jy5yZXBsYWNlKHJlODcs
ICcnKTsKKyAgICAgICcvL3Z6dC5qcm8ucXIvdmlqL0ZDL3R6a191Yy9mcGVycmEvMTAyND9nZj0k
e2Fian0nLnJlcGxhY2UocmU4OCwgJycpOworICAgICAgJy8vdnp0Lmpyby5xci92aWovRkMvdHpr
X3VjL2p2YWZ2bXIvJHtpbnlocn0/Z2Y9JHthYmp9Jy5yZXBsYWNlKHJlODcsICcnKTsKKyAgICAg
ICcvL3Z6dC5qcm8ucXIvdmlqL0ZDL3R6a191Yy9qdmFmdm1yLzk5Mi82MDg/Z2Y9JHthYmp9Jy5y
ZXBsYWNlKHJlODgsICcnKTsKKyAgICAgICczMDBrMTIwJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAg
ICAgICczMDBrMjUwJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICczMTBrMTIwJy5yZXBsYWNl
KHJlMzAsICcnKTsKKyAgICAgICczMTBrMTcwJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICcz
MTBrMjUwJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICc5LjAgIGUxMTUnLnJlcGxhY2UoL14u
KlwuKC4qKVxzLiokLywgJycpOworICAgICAgJ05wcGJlcXZiYScucmVwbGFjZShyZTIsICcnKTsK
KyAgICAgICdOeGdocnl5XHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnTnhnaHJ5eVx4
MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ05jY3l2cG5ndmJhJy5yZXBsYWNlKHJlMiwg
JycpOworICAgICAgJ095dnB4Y2hheGdceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAgICdP
eXZweGNoYXhnXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnU3ZhbmFtcmFceDBhJy5y
ZXBsYWNlKHJlODksICcnKTsKKyAgICAgICdTdmFuYW1yYVx4MGEnLnJlcGxhY2UocmU5MCwgJycp
OworICAgICAgJ1RuenJmXHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnVG56cmZceDBh
Jy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgICdVYmViZnhiY1x4MGEnLnJlcGxhY2UocmU4OSwg
JycpOworICAgICAgJ1ViZWJmeGJjXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnWHZh
Ylx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ1h2YWJceDBhJy5yZXBsYWNlKHJlOTAs
ICcnKTsKKyAgICAgICdaYnFoeXJmJy5yZXBsYWNlKHJlMiwgJycpOworICAgICAgJ1poZnZ4XHgw
YScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnWmhmdnhceDBhJy5yZXBsYWNlKHJlOTAsICcn
KTsKKyAgICAgICdBbnB1ZXZwdWdyYVx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ0Fu
cHVldnB1Z3JhXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnQ3VrJy5yZXBsYWNlKHJl
MiwgJycpOworICAgICAgJ0VyZGhyZmdTdmF2ZnUnLnNwbGl0KHJlNzApOworICAgICAgJ0VyZGhy
ZmdTdmF2ZnUuTldOSy5DdWsnLnNwbGl0KHJlNzApOworICAgICAgJ0ViaGdyXHgwYScucmVwbGFj
ZShyZTg5LCAnJyk7CisgICAgICAnRWJoZ3JceDBhJy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAg
IHN0cjc4LnNwbGl0KHJlMzIpOworICAgICAgc3RyNzkuc3BsaXQocmUzMik7CisgICAgICBzdHI4
MC5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjgxLnNwbGl0KHJlMzIpOworICAgICAgJ0ZjYmVnXHgw
YScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnRmNiZWdceDBhJy5yZXBsYWNlKHJlOTAsICcn
KTsKKyAgICAgICdHSS1GY2JnXHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnR0ktRmNi
Z1x4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ0diaGVceDBhJy5yZXBsYWNlKHJlODks
ICcnKTsKKyAgICAgICdHYmhlXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnSGFncmV1
bnlnaGF0XHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnSGFncmV1bnlnaGF0XHgwYScu
cmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnSXZxcmJceDBhJy5yZXBsYWNlKHJlODksICcnKTsK
KyAgICAgICdJdnFyYlx4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ0pyZ2dyZVx4MGEn
LnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ0pyZ2dyZVx4MGEnLnJlcGxhY2UocmU5MCwgJycp
OworICAgICAgc3RyODIucmVwbGFjZShyZTY4LCAnJyk7CisgICAgICBzdHI4Mi5yZXBsYWNlKHJl
MTgsICcnKTsKKyAgICAgIHN0cjgzLnJlcGxhY2UocmU2OCwgJycpOworICAgICAgc3RyODMucmVw
bGFjZShyZTE4LCAnJyk7CisgICAgICBzdHI4NC5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgIHN0
cjg0LnJlcGxhY2UocmUxOCwgJycpOworICAgICAgJ25xaUZyZWl2cHJPYmsnLnJlcGxhY2UocmUz
MCwgJycpOworICAgICAgJ25xaUZ1YmNjdmF0T2JrJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAg
ICdud25rJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdueGdocnl5Jy5yZXBsYWNlKHJlNDAs
ICcnKTsKKyAgICAgICdueGdocnl5Jy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdueGdocnl5
Jy5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAgICdueGdocnl5Jy5yZXBsYWNlKHJlNDMsICcnKTsK
KyAgICAgICdueGdocnl5Jy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICdueGdocnl5Jy5yZXBs
YWNlKHJlNDUsICcnKTsKKyAgICAgICdueGdocnl5Jy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAg
ICdueGdocnl5Jy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdueGdocnl5Jy5yZXBsYWNlKHJl
NDgsICcnKTsKKyAgICAgIHN0cjg1LnJlcGxhY2UocmU0MCwgJycpOworICAgICAgc3RyODUucmVw
bGFjZShyZTQxLCAnJyk7CisgICAgICBzdHI4NS5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAgIHN0
cjg1LnJlcGxhY2UocmU0MywgJycpOworICAgICAgc3RyODUucmVwbGFjZShyZTQ0LCAnJyk7Cisg
ICAgICBzdHI4NS5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgIHN0cjg1LnJlcGxhY2UocmU0Niwg
JycpOworICAgICAgc3RyODUucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICBzdHI4NS5yZXBsYWNl
KHJlNDgsICcnKTsKKyAgICAgICdwbmdydGJlbCcucmVwbGFjZShyZTI5LCAnJyk7CisgICAgICAn
cG5ncnRiZWwnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ3B5YmZyJy5yZXBsYWNlKHJlMzks
ICcnKTsKKyAgICAgICdxdmknLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyODYucmVwbGFj
ZShyZTY4LCAnJyk7CisgICAgICBzdHI4Ni5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICdxZycu
cmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAncWcnLnJlcGxhY2UocmU2OCwgJycpOworICAgICAg
J3FnJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICdyem9ycScucmVwbGFjZShyZTM5LCAnJyk7
CisgICAgICAncnpvcnEnLnJlcGxhY2UocmU2OCwgJycpOworICAgICAgJ3J6b3JxJy5yZXBsYWNl
KHJlMTgsICcnKTsKKyAgICAgICdzdnJ5cU9nYScucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAn
c3ZyeXFPZ2FQbmFwcnknLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ3N2el96bGZjbnByX25j
Y2YtcG5haW5mLHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYnLnNwbGl0KHJlMjApOworICAgICAg
J3N2YW5hbXJhJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFjZShy
ZTQxLCAnJyk7CisgICAgICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ3N2
YW5hbXJhJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFjZShyZTQ0
LCAnJyk7CisgICAgICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ3N2YW5h
bXJhJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFjZShyZTQ3LCAn
Jyk7CisgICAgICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgJ3NicGhmJy5z
cGxpdChyZTcwKTsKKyAgICAgICdzYnBoZi5nbm8gc2JwaGZ2YS5nbm8nLnNwbGl0KHJlNzApOwor
ICAgICAgJ3NicGhmdmEnLnNwbGl0KHJlNzApOworICAgICAgJ3NiZXonLnJlcGxhY2UocmUzOSwg
JycpOworICAgICAgJ3NiZXoubnduaycucmVwbGFjZShyZTY4LCAnJyk7CisgICAgICAnc2Jlei5u
d25rJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICd0bnpyZicucmVwbGFjZShyZTQwLCAnJyk7
CisgICAgICAndG56cmYnLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ3RuenJmJy5yZXBsYWNl
KHJlNDIsICcnKTsKKyAgICAgICd0bnpyZicucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAndG56
cmYnLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ3RuenJmJy5yZXBsYWNlKHJlNDUsICcnKTsK
KyAgICAgICd0bnpyZicucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAndG56cmYnLnJlcGxhY2Uo
cmU0NywgJycpOworICAgICAgJ3RuenJmJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICd1Ynpy
Y250cicucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0MCwg
JycpOworICAgICAgJ3ViZWJmeGJjJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICd1YmViZnhi
YycucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0MywgJycp
OworICAgICAgJ3ViZWJmeGJjJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICd1YmViZnhiYycu
cmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0NiwgJycpOwor
ICAgICAgJ3ViZWJmeGJjJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICd1YmViZnhiYycucmVw
bGFjZShyZTQ4LCAnJyk7CisgICAgICAndWNfY2ViemJvYmtfdWd6eSUyUHVjX2NlYnpib2JrX3Z6
dCcucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAndWNfZXJwZ25hdHlyJy5yZXBsYWNlKHJlMzAs
ICcnKTsKKyAgICAgIHN0cjg3LnJlcGxhY2UocmUzMywgJycpOworICAgICAgc3RyODgucmVwbGFj
ZShyZTMzLCAnJyk7CisgICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6ci93Zi8y
MDA4MDYwMi9vbmZyLndmJHs0fSR7NX0nLnJlcGxhY2UocmU3MSwgJycpOworICAgICAgJ3VnZ2M6
Ly93Zi5odi1jYmVnbnkucXIvdHprL3VienIvd2YvMjAwODA2MDIvb25mci53ZiR7NX0nLnJlcGxh
Y2UocmU3MiwgJycpOworICAgICAgJ3VnZ2M6Ly93Zi5odi1jYmVnbnkucXIvdHprL3VienIvd2Yv
MjAwODA2MDIvcWxhWXZvLndmJHs0fSR7NX0nLnJlcGxhY2UocmU3MSwgJycpOworICAgICAgJ3Vn
Z2M6Ly93Zi5odi1jYmVnbnkucXIvdHprL3VienIvd2YvMjAwODA2MDIvcWxhWXZvLndmJHs1fScu
cmVwbGFjZShyZTcyLCAnJyk7CisgICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6
ci93Zi8yMDA4MDYwMi9yc3NycGdZdm8ud2YkezR9JHs1fScucmVwbGFjZShyZTcxLCAnJyk7Cisg
ICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6ci93Zi8yMDA4MDYwMi9yc3NycGdZ
dm8ud2YkezV9Jy5yZXBsYWNlKHJlNzIsICcnKTsKKyAgICAgIHN0cjg5LnJlcGxhY2UocmU3Mywg
JycpOworICAgICAgJ3VnZ2M6Ly96ZmFjYmVnbnkuMTEyLjJiNy5hcmcvby9mZi96ZmFjYmVnbnl1
YnpyLzEvVS43LWNxaS0yL2Y1NTAyMzMzODYxNzc1Nj9bTkRPXSZ7MX0mezJ9JltORFJdJy5yZXBs
YWNlKHJlNjksICcnKTsKKyAgICAgIHN0cjYucmVwbGFjZShyZTIzLCAnJyk7CisgICAgICAneHZh
YicucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAneHZhYicucmVwbGFjZShyZTQxLCAnJyk7Cisg
ICAgICAneHZhYicucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAneHZhYicucmVwbGFjZShyZTQz
LCAnJyk7CisgICAgICAneHZhYicucmVwbGFjZShyZTQ0LCAnJyk7CisgICAgICAneHZhYicucmVw
bGFjZShyZTQ1LCAnJyk7CisgICAgICAneHZhYicucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAn
eHZhYicucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAneHZhYicucmVwbGFjZShyZTQ4LCAnJyk7
CisgICAgICAneWJucScuc3BsaXQocmU3MCk7CisgICAgICAnenJxdm56YnFnbm8gbGh2LWFuaWZy
ZyBsaHYtYW5pZnJnLWdiYycucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAnenJnbicucmVwbGFj
ZShyZTM5LCAnJyk7CisgICAgICBzdHI5MC5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgIHN0cjkw
LnJlcGxhY2UocmUxOCwgJycpOworICAgICAgJ3piaGZyemJpcicuc3BsaXQocmU3MCk7CisgICAg
ICAnemJoZnJ6YmlyLmdubycuc3BsaXQocmU3MCk7CisgICAgICBzdHI2My5yZXBsYWNlKC9eLipq
cm94dmdcLyhcZCsoXC5cZCspPykuKiQvLCAnJyk7CisgICAgICAnemhmdngnLnJlcGxhY2UocmU0
MCwgJycpOworICAgICAgJ3poZnZ4Jy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICd6aGZ2eCcu
cmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnemhmdngnLnJlcGxhY2UocmU0MywgJycpOworICAg
ICAgJ3poZnZ4Jy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICd6aGZ2eCcucmVwbGFjZShyZTQ1
LCAnJyk7CisgICAgICAnemhmdngnLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ3poZnZ4Jy5y
ZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICd6aGZ2eCcucmVwbGFjZShyZTQ4LCAnJyk7CisgICAg
ICAnemxmY25wcl9uY2NmX3BuYWluZicucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICBzdHI5MS5y
ZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgIHN0cjkxLnJlcGxhY2UocmU0MSwgJycpOworICAgICAg
c3RyOTEucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICBzdHI5MS5yZXBsYWNlKHJlNDMsICcnKTsK
KyAgICAgIHN0cjkxLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgc3RyOTEucmVwbGFjZShyZTQ1
LCAnJyk7CisgICAgICBzdHI5MS5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgIHN0cjkxLnJlcGxh
Y2UocmU0NywgJycpOworICAgICAgc3RyOTEucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAnYW56
cicucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICBzdHI5Mi5yZXBsYWNlKC9cYlx3K1xiL2csICcn
KTsKKyAgICAgICdib3ctbnBwYmVxdmJhJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdib3dy
cGcnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ2Jvd3JwZycucmVwbGFjZShyZTY4LCAnJyk7
CisgICAgICAnYm93cnBnJy5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgICdjbmVuemYlMlJmZ2x5
cmYnLnJlcGxhY2UocmUyOSwgJycpOworICAgICAgJ2NuZW56ZiUyUmZnbHlyZicucmVwbGFjZShy
ZTMwLCAnJyk7CisgICAgICAnY2JjaGMnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ2ViaGdy
Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdlYmhncicucmVwbGFjZShyZTQxLCAnJyk7Cisg
ICAgICAnZWJoZ3InLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ2ViaGdyJy5yZXBsYWNlKHJl
NDMsICcnKTsKKyAgICAgICdlYmhncicucmVwbGFjZShyZTQ0LCAnJyk7CisgICAgICAnZWJoZ3In
LnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2ViaGdyJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAg
ICAgICdlYmhncicucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAnZWJoZ3InLnJlcGxhY2UocmU0
OCwgJycpOworICAgICAgJ2ZyZWl2cHJvYmtfdWMnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAg
J2Z1YmNjdmF0b2JrX3VjJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICdmdWJoZ29iaycucmVw
bGFjZShyZTM5LCAnJyk7CisgICAgICAnZmNiZWcnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAg
J2ZjYmVnJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdmY2JlZycucmVwbGFjZShyZTQyLCAn
Jyk7CisgICAgICAnZmNiZWcnLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2ZjYmVnJy5yZXBs
YWNlKHJlNDQsICcnKTsKKyAgICAgICdmY2JlZycucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAn
ZmNiZWcnLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ2ZjYmVnJy5yZXBsYWNlKHJlNDcsICcn
KTsKKyAgICAgICdmY2JlZycucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAnZ2JoZScucmVwbGFj
ZShyZTQwLCAnJyk7CisgICAgICAnZ2JoZScucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICAnZ2Jo
ZScucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnZ2JoZScucmVwbGFjZShyZTQzLCAnJyk7Cisg
ICAgICAnZ2JoZScucmVwbGFjZShyZTQ0LCAnJyk7CisgICAgICAnZ2JoZScucmVwbGFjZShyZTQ1
LCAnJyk7CisgICAgICAnZ2JoZScucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAnZ2JoZScucmVw
bGFjZShyZTQ3LCAnJyk7CisgICAgICAnZ2JoZScucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAn
Z2ktZmNiZycucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnZ2ktZmNiZycucmVwbGFjZShyZTQx
LCAnJyk7CisgICAgICAnZ2ktZmNiZycucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnZ2ktZmNi
ZycucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnZ2ktZmNiZycucmVwbGFjZShyZTQ0LCAnJyk7
CisgICAgICAnZ2ktZmNiZycucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAnZ2ktZmNiZycucmVw
bGFjZShyZTQ2LCAnJyk7CisgICAgICAnZ2ktZmNiZycucmVwbGFjZShyZTQ3LCAnJyk7CisgICAg
ICAnZ2ktZmNiZycucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAnZ2xjcicucmVwbGFjZShyZTM5
LCAnJyk7CisgICAgICAnaGFxcnN2YXJxJy5yZXBsYWNlKC9cLy9nLCAnJyk7CisgICAgICBzdHI5
My5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgIHN0cjkzLnJlcGxhY2UocmU0MSwgJycpOworICAg
ICAgc3RyOTMucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICBzdHI5My5yZXBsYWNlKHJlNDMsICcn
KTsKKyAgICAgIHN0cjkzLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgc3RyOTMucmVwbGFjZShy
ZTQ1LCAnJyk7CisgICAgICBzdHI5My5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgIHN0cjkzLnJl
cGxhY2UocmU0NywgJycpOworICAgICAgc3RyOTMucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAn
aXZxcmInLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDEsICcn
KTsKKyAgICAgICdpdnFyYicucmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnaXZxcmInLnJlcGxh
Y2UocmU0MywgJycpOworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICdp
dnFyYicucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAnaXZxcmInLnJlcGxhY2UocmU0NiwgJycp
OworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdpdnFyYicucmVwbGFj
ZShyZTQ4LCAnJyk7CisgICAgICAnaXZmdmdmPTEnLnNwbGl0KHJlODYpOworICAgICAgJ2pyZ2dy
ZScucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDEsICcnKTsK
KyAgICAgICdqcmdncmUnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFj
ZShyZTQzLCAnJyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICdq
cmdncmUnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFjZShyZTQ2LCAn
Jyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdqcmdncmUnLnJl
cGxhY2UocmU0OCwgJycpOworICAgICAgLyNbYS16MC05XSskL2kuZXhlYygndWdnYzovL2pqai5m
cHVocnlyZWltLmFyZy9RcnNuaHlnJyk7CisgICAgICByZTY2LmV4ZWMoJ2ZyeXJwZ3JxJyk7Cisg
ICAgICAvKD86XnxccyspbGh2LWFuaSg/OlxzK3wkKS8uZXhlYygnc2ZmIGxodi1hbmknKTsKKyAg
ICAgIC8oPzpefFxzKylsaHYtYW5pZnJnKD86XHMrfCQpLy5leGVjKCd6cnF2bnpicWdubyBsaHYt
YW5pZnJnJyk7CisgICAgICAvKD86XnxccyspbGh2LWFuaWZyZy1nYmMoPzpccyt8JCkvLmV4ZWMo
J3pycXZuemJxZ25vIGxodi1hbmlmcmcnKTsKKyAgICAgIHJlOTEuZXhlYygnR25vVGh2cScpOwor
ICAgICAgcmU5MS5leGVjKCd0aHZxJyk7CisgICAgICAvKHBiemNuZ3ZveXJ8anJveHZnKS8uZXhl
YyhzdHI2Myk7CisgICAgICAvLisoPzplaXx2Z3xlbnx2cilbXC86IF0oW1xkLl0rKS8uZXhlYyhz
dHI2Myk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAuMTIzMTM2NTg2OScpOworICAg
ICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4wLjEwLjEyMzEzNjcwNTQnKTsKKyAgICAgIHJlOC5leGVj
KCcxNDQ2MzE2NTguMTIzMTM2NTg2OS4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBn
KXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjEyMzEzNjcwNTQu
MS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAg
ICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xNjcwODE2MDUyMDE5MjA5MDAwLjEyMzEzNjU4NjkuMTIz
MTM2NTg2OS4xMjMxMzY1ODY5LjEnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTc5NjA4
MDcxNjYyMTQxOTUwMC4xMjMxMzY3MDU0LjEyMzEzNjcwNTQuMTIzMTM2NzA1NC4xJyk7CisgICAg
ICByZTguZXhlYyhzdHI5NCk7CisgICAgICByZTguZXhlYyhzdHI5NSk7CisgICAgICByZTguZXhl
YyhzdHI5Nik7CisgICAgICByZTguZXhlYyhzdHI5Nyk7CisgICAgICByZTguZXhlYygnX19oZ3pu
PTE0NDYzMTY1OC4xNjcwODE2MDUyMDE5MjA5MDAwLjEyMzEzNjU4NjkuMTIzMTM2NTg2OS4xMjMx
MzY1ODY5LjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0NjMxNjU4LjE3OTYwODA3MTY2
MjE0MTk1MDAuMTIzMTM2NzA1NC4xMjMxMzY3MDU0LjEyMzEzNjcwNTQuMScpOworICAgICAgcmU4
LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY1ODY5Jyk7CisgICAgICByZTguZXhl
YygnX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjcwNTQnKTsKKyAgICAgIHJlOC5leGVjKCdf
X2hnem09MTQ0NjMxNjU4LjEyMzEzNjU4NjkuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2
ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2NTgu
MTIzMTM2NzA1NC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFi
YXIpJyk7CisgICAgICByZTM0LmV4ZWMoc3RyNzgpOworICAgICAgcmUzNC5leGVjKHN0cjc5KTsK
KyAgICAgIHJlMzQuZXhlYyhzdHI4MSk7CisgICAgICByZTc0LmV4ZWMoc3RyNzcpOworICAgICAg
cmU3NC5leGVjKCcqJyk7CisgICAgICByZTc0LmV4ZWMoc3RyODIpOworICAgICAgcmU3NC5leGVj
KHN0cjgzKTsKKyAgICAgIHJlNzQuZXhlYyhzdHI4Nik7CisgICAgICByZTc0LmV4ZWMoJ3J6b3Jx
Jyk7CisgICAgICByZTc0LmV4ZWMoJ3NiZXoubnduaycpOworICAgICAgcmU3NC5leGVjKHN0cjkw
KTsKKyAgICAgIHJlNzQuZXhlYygnYm93cnBnJyk7CisgICAgICAvXC9vbmZyLndmKFw/LispPyQv
LmV4ZWMoJy91Z2djOi8vd2YuaHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgwNjAyL29uZnIu
d2YnKTsKKyAgICAgIHJlMjguZXhlYygndXZhZyB5bmZnVXZhZyB5bmZnJyk7CisgICAgICByZTc1
LmV4ZWMoJycpOworICAgICAgcmU3Ni5leGVjKCcnKTsKKyAgICAgIHJlNzcuZXhlYygnJyk7Cisg
ICAgICByZTc4LmV4ZWMoJycpOworICAgICAgcmU4MC5leGVjKHN0cjc3KTsKKyAgICAgIHJlODAu
ZXhlYygnKicpOworICAgICAgcmU4MC5leGVjKCcucHliZnInKTsKKyAgICAgIHJlODAuZXhlYyhz
dHI4Mik7CisgICAgICByZTgwLmV4ZWMoc3RyODMpOworICAgICAgcmU4MC5leGVjKHN0cjg0KTsK
KyAgICAgIHJlODAuZXhlYyhzdHI4Nik7CisgICAgICByZTgwLmV4ZWMoJ3FnJyk7CisgICAgICBy
ZTgwLmV4ZWMoJ3J6b3JxJyk7CisgICAgICByZTgwLmV4ZWMoJ3NiZXoubnduaycpOworICAgICAg
cmU4MC5leGVjKHN0cjkwKTsKKyAgICAgIHJlODAuZXhlYygnYm93cnBnJyk7CisgICAgICByZTYx
LmV4ZWMoJ3FsYVl2by53ZicpOworICAgICAgcmU2MS5leGVjKCdyc3NycGdZdm8ud2YnKTsKKyAg
ICAgIHJlNjEuZXhlYygndWdnYzovL2pqai50emsuYXJnL3FyLz9mZ25naGY9dXZhanJ2ZicpOwor
ICAgICAgcmU5Mi5leGVjKCcgLnB5YmZyJyk7CisgICAgICByZTkyLmV4ZWMoJyBuLnN2cnlxT2dh
UG5hcHJ5Jyk7CisgICAgICByZTkyLmV4ZWMoJyBxZycpOworICAgICAgcmU5Mi5leGVjKHN0cjQ4
KTsKKyAgICAgIHJlOTIuZXhlYygnLm53bmsnKTsKKyAgICAgIHJlOTIuZXhlYygnLnN2cnlxT2dh
LG4uc3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTIuZXhlYygnLnN2cnlxT2dhUG5hcHJ5Jyk7
CisgICAgICByZTkyLmV4ZWMoJy5ib3ctbnBwYmVxdmJhIHFnJyk7CisgICAgICByZTY4LmV4ZWMo
c3RyNzcpOworICAgICAgcmU2OC5leGVjKCcqJyk7CisgICAgICByZTY4LmV4ZWMoJy5weWJmcicp
OworICAgICAgcmU2OC5leGVjKHN0cjgyKTsKKyAgICAgIHJlNjguZXhlYyhzdHI4Myk7CisgICAg
ICByZTY4LmV4ZWMoc3RyODQpOworICAgICAgcmU2OC5leGVjKHN0cjg2KTsKKyAgICAgIHJlNjgu
ZXhlYygncWcnKTsKKyAgICAgIHJlNjguZXhlYygncnpvcnEnKTsKKyAgICAgIHJlNjguZXhlYygn
c2Jlei5ud25rJyk7CisgICAgICByZTY4LmV4ZWMoc3RyOTApOworICAgICAgcmU2OC5leGVjKCdi
b3dycGcnKTsKKyAgICAgIHJlOTMuZXhlYygnIC5weWJmcicpOworICAgICAgcmU5My5leGVjKCcg
bi5zdnJ5cU9nYVBuYXByeScpOworICAgICAgcmU5My5leGVjKCcgcWcnKTsKKyAgICAgIHJlOTMu
ZXhlYyhzdHI0OCk7CisgICAgICByZTkzLmV4ZWMoJy5ud25rJyk7CisgICAgICByZTkzLmV4ZWMo
Jy5zdnJ5cU9nYSxuLnN2cnlxT2dhUG5hcHJ5Jyk7CisgICAgICByZTkzLmV4ZWMoJy5zdnJ5cU9n
YVBuYXByeScpOworICAgICAgcmU5My5leGVjKCcuYm93LW5wcGJlcXZiYSBxZycpOworICAgICAg
cmU4MS5leGVjKHN0cjc3KTsKKyAgICAgIHJlODEuZXhlYygnKicpOworICAgICAgcmU4MS5leGVj
KHN0cjQ4KTsKKyAgICAgIHJlODEuZXhlYygnLnB5YmZyJyk7CisgICAgICByZTgxLmV4ZWMoc3Ry
ODIpOworICAgICAgcmU4MS5leGVjKHN0cjgzKTsKKyAgICAgIHJlODEuZXhlYyhzdHI4NCk7Cisg
ICAgICByZTgxLmV4ZWMoc3RyODYpOworICAgICAgcmU4MS5leGVjKCdxZycpOworICAgICAgcmU4
MS5leGVjKCdyem9ycScpOworICAgICAgcmU4MS5leGVjKCdzYmV6Lm53bmsnKTsKKyAgICAgIHJl
ODEuZXhlYyhzdHI5MCk7CisgICAgICByZTgxLmV4ZWMoJ2Jvd3JwZycpOworICAgICAgcmU5NC5l
eGVjKCcgLnB5YmZyJyk7CisgICAgICByZTk0LmV4ZWMoJyBuLnN2cnlxT2dhUG5hcHJ5Jyk7Cisg
ICAgICByZTk0LmV4ZWMoJyBxZycpOworICAgICAgcmU5NC5leGVjKHN0cjQ4KTsKKyAgICAgIHJl
OTQuZXhlYygnLm53bmsnKTsKKyAgICAgIHJlOTQuZXhlYygnLnN2cnlxT2dhLG4uc3ZyeXFPZ2FQ
bmFwcnknKTsKKyAgICAgIHJlOTQuZXhlYygnLnN2cnlxT2dhUG5hcHJ5Jyk7CisgICAgICByZTk0
LmV4ZWMoJy5ib3ctbnBwYmVxdmJhIHFnJyk7CisgICAgICByZTk0LmV4ZWMoJ1thbnpyPW53bmtI
ZXldJyk7CisgICAgICByZTk0LmV4ZWMoc3RyODIpOworICAgICAgcmUzMS5leGVjKCdyZicpOwor
ICAgICAgcmUzMS5leGVjKCd3bicpOworICAgICAgcmU4Mi5leGVjKHN0cjc3KTsKKyAgICAgIHJl
ODIuZXhlYygnKicpOworICAgICAgcmU4Mi5leGVjKHN0cjQ4KTsKKyAgICAgIHJlODIuZXhlYygn
LnB5YmZyJyk7CisgICAgICByZTgyLmV4ZWMoc3RyODIpOworICAgICAgcmU4Mi5leGVjKHN0cjgz
KTsKKyAgICAgIHJlODIuZXhlYyhzdHI4NCk7CisgICAgICByZTgyLmV4ZWMoc3RyODYpOworICAg
ICAgcmU4Mi5leGVjKCdxZycpOworICAgICAgcmU4Mi5leGVjKCdyem9ycScpOworICAgICAgcmU4
Mi5leGVjKCdzYmV6Lm53bmsnKTsKKyAgICAgIHJlODIuZXhlYyhzdHI5MCk7CisgICAgICByZTgy
LmV4ZWMoJ2Jvd3JwZycpOworICAgICAgcmU4My5leGVjKHN0cjk4KTsKKyAgICAgIHJlODMuZXhl
Yygnc2hhcGd2YmEgc2JwaGYoKSB7IFthbmd2aXIgcGJxcl0gfScpOworICAgICAgcmU2Mi5leGVj
KCcjWWJ0dmEnKTsKKyAgICAgIHJlNjIuZXhlYygnI1lidHZhX2NuZmZqYmVxJyk7CisgICAgICBy
ZTYyLmV4ZWMoc3RyNzcpOworICAgICAgcmU2Mi5leGVjKCcjZnViaGdvYmtXZicpOworICAgICAg
cmU2Mi5leGVjKCcjZnViaGdvYmtXZlJlZWJlJyk7CisgICAgICByZTYyLmV4ZWMoJyNmdWJoZ29i
a1dmRmhwcHJmZicpOworICAgICAgcmU2Mi5leGVjKCcqJyk7CisgICAgICByZTYyLmV4ZWMoc3Ry
ODIpOworICAgICAgcmU2Mi5leGVjKHN0cjgzKTsKKyAgICAgIHJlNjIuZXhlYyhzdHI4Nik7Cisg
ICAgICByZTYyLmV4ZWMoJ3J6b3JxJyk7CisgICAgICByZTYyLmV4ZWMoJ3NiZXoubnduaycpOwor
ICAgICAgcmU2Mi5leGVjKHN0cjkwKTsKKyAgICAgIHJlNjIuZXhlYygnYm93cnBnJyk7CisgICAg
ICByZTQ5LmV4ZWMoJ3BiYWdyYWcnKTsKKyAgICAgIHJlMjQuZXhlYyhzdHI2KTsKKyAgICAgIC94
YmFkaHJlYmUvLmV4ZWMoc3RyNjMpOworICAgICAgL3pucC8uZXhlYygnanZhMzInKTsKKyAgICAg
IC96Ym12eXluLy5leGVjKHN0cjYzKTsKKyAgICAgIC96ZnZyLy5leGVjKHN0cjYzKTsKKyAgICAg
IC9hZ1xzNVwuMS8uZXhlYyhzdHI2Myk7CisgICAgICAvYmNyZW4vLmV4ZWMoc3RyNjMpOworICAg
ICAgL2Zuc25ldi8uZXhlYyhzdHI2Myk7CisgICAgICAvanZhLy5leGVjKCdqdmEzMicpOworICAg
ICAgL2p2YXFiamYvLmV4ZWMoc3RyNjMpOworICAgIH0KKyAgfQorICBmb3IgKHZhciBpID0gMDsg
aSA8IDU7IGkrKykgeworICAgIHJ1bkJsb2NrMCgpOworICAgIHJ1bkJsb2NrMSgpOworICAgIHJ1
bkJsb2NrMigpOworICAgIHJ1bkJsb2NrMygpOworICAgIHJ1bkJsb2NrNCgpOworICAgIHJ1bkJs
b2NrNSgpOworICAgIHJ1bkJsb2NrNigpOworICAgIHJ1bkJsb2NrNygpOworICAgIHJ1bkJsb2Nr
OCgpOworICAgIHJ1bkJsb2NrOSgpOworICAgIHJ1bkJsb2NrMTAoKTsKKyAgICBydW5CbG9jazEx
KCk7CisgIH0KK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgcnVuUmVnRXhw
QmVuY2htYXJrKCk7CkluZGV4OiBTdW5TcGlkZXIvdGVzdHMvdjgtdjYvdjgtcmljaGFyZHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LXJpY2hhcmRzLmpzCShyZXZp
c2lvbiAwKQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LXJpY2hhcmRzLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzNyBAQAorLy8gQ29weXJpZ2h0IDIwMDYtMjAwOCB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworLy8gVGhpcyBpcyBhIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJpY2hhcmRz
CisvLyBiZW5jaG1hcmsgZnJvbToKKy8vCisvLyAgICBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+
bXIxMC9CZW5jaC5odG1sCisvLworLy8gVGhlIGJlbmNobWFyayB3YXMgb3JpZ2luYWxseSBpbXBs
ZW1lbnRlZCBpbiBCQ1BMIGJ5CisvLyBNYXJ0aW4gUmljaGFyZHMuCisKKworLyoqCisgKiBUaGUg
UmljaGFyZHMgYmVuY2htYXJrIHNpbXVsYXRlcyB0aGUgdGFzayBkaXNwYXRjaGVyIG9mIGFuCisg
KiBvcGVyYXRpbmcgc3lzdGVtLgorICoqLworZnVuY3Rpb24gcnVuUmljaGFyZHMoKSB7CisgIHZh
ciBzY2hlZHVsZXIgPSBuZXcgU2NoZWR1bGVyKCk7CisgIHNjaGVkdWxlci5hZGRJZGxlVGFzayhJ
RF9JRExFLCAwLCBudWxsLCBDT1VOVCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3IFBhY2tldChudWxs
LCBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElE
X1dPUktFUiwgS0lORF9XT1JLKTsKKyAgc2NoZWR1bGVyLmFkZFdvcmtlclRhc2soSURfV09SS0VS
LCAxMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9B
LCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9B
LCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9B
LCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0Es
IDIwMDAsIHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0Is
IEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0Is
IEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0Is
IEtJTkRfREVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQiwg
MzAwMCwgcXVldWUpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9BLCA0
MDAwLCBudWxsKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQiwgNTAw
MCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYgKHNjaGVkdWxlci5x
dWV1ZUNvdW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8CisgICAgICBzY2hlZHVsZXIuaG9s
ZENvdW50ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQpIHsKKyAgICB2YXIgbXNnID0KKyAgICAgICAg
IkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAiICsgc2NoZWR1bGVyLnF1ZXVl
Q291bnQgKworICAgICAgICAiLCBob2xkQ291bnQgPSAiICsgc2NoZWR1bGVyLmhvbGRDb3VudCAr
ICIuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgfQorfQorCit2YXIgQ09VTlQgPSAx
MDAwOworCisvKioKKyAqIFRoZXNlIHR3byBjb25zdGFudHMgc3BlY2lmeSBob3cgbWFueSB0aW1l
cyBhIHBhY2tldCBpcyBxdWV1ZWQgYW5kCisgKiBob3cgbWFueSB0aW1lcyBhIHRhc2sgaXMgcHV0
IG9uIGhvbGQgaW4gYSBjb3JyZWN0IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRoZXkgZG9uJ3QgaGF2
ZSBhbnkgbWVhbmluZyBhIHN1Y2ggYnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBvZiBhCisgKiBjb3Jy
ZWN0IHJ1biBzbyBpZiB0aGUgYWN0dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQgaXMgZGlmZmVyZW50
IGZyb20KKyAqIHRoZSBleHBlY3RlZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGluIHRoZSBpbXBsZW1l
bnRhdGlvbi4KKyAqKi8KK3ZhciBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Cit2YXIgRVhQ
RUNURURfSE9MRF9DT1VOVCA9IDkyODsKKworCisvKioKKyAqIEEgc2NoZWR1bGVyIGNhbiBiZSB1
c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisg
KiBwcmlvcml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1haW50YWluaW5nIGEgbGlzdCBv
ZiB0YXNrIGNvbnRyb2wgYmxvY2tzCisgKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEg
cXVldWUgdGhleSBhcmUgcHJvY2Vzc2luZy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlv
biBTY2hlZHVsZXIoKSB7CisgIHRoaXMucXVldWVDb3VudCA9IDA7CisgIHRoaXMuaG9sZENvdW50
ID0gMDsKKyAgdGhpcy5ibG9ja3MgPSBuZXcgQXJyYXkoTlVNQkVSX09GX0lEUyk7CisgIHRoaXMu
bGlzdCA9IG51bGw7CisgIHRoaXMuY3VycmVudFRjYiA9IG51bGw7CisgIHRoaXMuY3VycmVudElk
ID0gbnVsbDsKK30KKwordmFyIElEX0lETEUgICAgICAgPSAwOwordmFyIElEX1dPUktFUiAgICAg
PSAxOwordmFyIElEX0hBTkRMRVJfQSAgPSAyOwordmFyIElEX0hBTkRMRVJfQiAgPSAzOwordmFy
IElEX0RFVklDRV9BICAgPSA0OwordmFyIElEX0RFVklDRV9CICAgPSA1OwordmFyIE5VTUJFUl9P
Rl9JRFMgPSA2OworCit2YXIgS0lORF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lORF9XT1JLICAgICA9
IDE7CisKKy8qKgorICogQWRkIGFuIGlkbGUgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBw
YXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBw
cmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhl
IHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUgdGFzaworICovCitT
Y2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwg
cXVldWUsIGNvdW50KSB7CisgIHRoaXMuYWRkUnVubmluZ1Rhc2soaWQsIHByaW9yaXR5LCBxdWV1
ZSwgbmV3IElkbGVUYXNrKHRoaXMsIDEsIGNvdW50KSk7Cit9OworCisvKioKKyAqIEFkZCBhIHdv
cmsgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRp
dHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9y
aXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJv
Y2Vzc2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFz
ayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwg
cHJpb3JpdHksIHF1ZXVlLCBuZXcgV29ya2VyVGFzayh0aGlzLCBJRF9IQU5ETEVSX0EsIDApKTsK
K307CisKKy8qKgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICog
QHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9
IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0
aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1
bGVyLnByb3RvdHlwZS5hZGRIYW5kbGVyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1
ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSGFuZGxlclRh
c2sodGhpcykpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hl
ZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBA
cGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNr
ZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzawor
ICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHBy
aW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3
IERldmljZVRhc2sodGhpcykpCit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sg
YW5kIG1hcmsgaXQgYXMgcnVubmluZy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkg
b2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5
CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vz
c2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisg
Ki8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5jdGlvbiAoaWQsIHBy
aW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1
ZSwgdGFzayk7CisgIHRoaXMuY3VycmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9OworCisvKioKKyAq
IEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2lu
dH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkg
dGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBv
ZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNr
IHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFRhc2sgPSBmdW5j
dGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmN1cnJlbnRUY2IgPSBu
ZXcgVGFza0NvbnRyb2xCbG9jayh0aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2sp
OworICB0aGlzLmxpc3QgPSB0aGlzLmN1cnJlbnRUY2I7CisgIHRoaXMuYmxvY2tzW2lkXSA9IHRo
aXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBi
eSB0aGlzIHNjaGVkdWxlci4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1
bmN0aW9uICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5saXN0OworICB3aGlsZSAodGhp
cy5jdXJyZW50VGNiICE9IG51bGwpIHsKKyAgICBpZiAodGhpcy5jdXJyZW50VGNiLmlzSGVsZE9y
U3VzcGVuZGVkKCkpIHsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5s
aW5rOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmN1cnJlbnRJZCA9IHRoaXMuY3VycmVudFRj
Yi5pZDsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5ydW4oKTsKKyAg
ICB9CisgIH0KK307CisKKy8qKgorICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkg
YmxvY2tlZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAqIEBwYXJhbSB7aW50
fSBpZCB0aGUgaWQgb2YgdGhlIHRhc2sgdG8gc3VzcGVuZAorICovCitTY2hlZHVsZXIucHJvdG90
eXBlLnJlbGVhc2UgPSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHRjYiA9IHRoaXMuYmxvY2tzW2lk
XTsKKyAgaWYgKHRjYiA9PSBudWxsKSByZXR1cm4gdGNiOworICB0Y2IubWFya0FzTm90SGVsZCgp
OworICBpZiAodGNiLnByaW9yaXR5ID4gdGhpcy5jdXJyZW50VGNiLnByaW9yaXR5KSB7CisgICAg
cmV0dXJuIHRjYjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworICB9
Cit9OworCisvKioKKyAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJl
dHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIFRoZSBibG9ja2Vk
IHRhc2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5Cisg
KiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAqLworU2NoZWR1
bGVyLnByb3RvdHlwZS5ob2xkQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5ob2xkQ291
bnQrKzsKKyAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0dXJuIHRoaXMuY3Vy
cmVudFRjYi5saW5rOworfTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0
aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1
bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJl
IG1hZGUgcnVubmFibGUuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQg
PSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNTdXNwZW5kZWQoKTsKKyAg
cmV0dXJuIHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQg
cGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyAqIGFz
c29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0
IGlzIGN1cnJlbnRseQorICogc3VzcGVuZGVkLgorICogQHBhcmFtIHtQYWNrZXR9IHBhY2tldCB0
aGUgcGFja2V0IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlID0gZnVuY3Rp
b24gKHBhY2tldCkgeworICB2YXIgdCA9IHRoaXMuYmxvY2tzW3BhY2tldC5pZF07CisgIGlmICh0
ID09IG51bGwpIHJldHVybiB0OworICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAgcGFja2V0Lmxpbmsg
PSBudWxsOworICBwYWNrZXQuaWQgPSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0dXJuIHQuY2hlY2tQ
cmlvcml0eUFkZCh0aGlzLmN1cnJlbnRUY2IsIHBhY2tldCk7Cit9OworCisvKioKKyAqIEEgdGFz
ayBjb250cm9sIGJsb2NrIG1hbmFnZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUgb2Ygd29yayBwYWNr
YWdlcyBhc3NvY2lhdGVkCisgKiB3aXRoIGl0LgorICogQHBhcmFtIHtUYXNrQ29udHJvbEJsb2Nr
fSBsaW5rIHRoZSBwcmVjZWRpbmcgYmxvY2sgaW4gdGhlIGxpbmtlZCBibG9jayBsaXN0CisgKiBA
cGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7aW50fSBwcmlv
cml0eSB0aGUgcHJpb3JpdHkgb2YgdGhpcyBibG9jaworICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVl
IHRoZSBxdWV1ZSBvZiBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBw
YXJhbSB7VGFza30gdGFzayB0aGUgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9u
IFRhc2tDb250cm9sQmxvY2sobGluaywgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0
aGlzLmxpbmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMucHJpb3JpdHkgPSBwcmlv
cml0eTsKKyAgdGhpcy5xdWV1ZSA9IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0YXNrOworICBpZiAo
cXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERUQ7CisgIH0g
ZWxzZSB7CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRTsKKyAgfQor
fQorCisvKioKKyAqIFRoZSB0YXNrIGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJlbnRseSBzY2hlZHVs
ZWQuCisgKi8KK3ZhciBTVEFURV9SVU5OSU5HID0gMDsKKworLyoqCisgKiBUaGUgdGFzayBoYXMg
cGFja2V0cyBsZWZ0IHRvIHByb2Nlc3MuCisgKi8KK3ZhciBTVEFURV9SVU5OQUJMRSA9IDE7CisK
Ky8qKgorICogVGhlIHRhc2sgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIHRhc2sgaXMg
bm90IGJsb2NrZWQgYXMgc3VjaCBhbmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkgdGhlIHNjaGVkdWxl
ci4KKyAqLwordmFyIFNUQVRFX1NVU1BFTkRFRCA9IDI7CisKKy8qKgorICogVGhlIHRhc2sgaXMg
YmxvY2tlZCBhbmQgY2Fubm90IGJlIHJ1biB1bnRpbCBpdCBpcyBleHBsaWNpdGx5IHJlbGVhc2Vk
LgorICovCit2YXIgU1RBVEVfSEVMRCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQRU5ERURfUlVOTkFC
TEUgPSBTVEFURV9TVVNQRU5ERUQgfCBTVEFURV9SVU5OQUJMRTsKK3ZhciBTVEFURV9OT1RfSEVM
RCA9IH5TVEFURV9IRUxEOworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5zZXRSdW5uaW5n
ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKK307CisKK1Rh
c2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5jdGlvbiAoKSB7Cisg
IHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9OworCitUYXNrQ29u
dHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0
YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5pc0hlbGRPclN1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlz
LnN0YXRlICYgU1RBVEVfSEVMRCkgIT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5E
RUQpOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkID0g
ZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1NVU1BFTkRF
RDsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlID0gZnVu
Y3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1JVTk5BQkxFOwor
fTsKKworLyoqCisgKiBSdW5zIHRoaXMgdGFzaywgaWYgaXQgaXMgcmVhZHkgdG8gYmUgcnVuLCBh
bmQgcmV0dXJucyB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4KKyAqLworVGFza0NvbnRyb2xCbG9jay5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGFja2V0OworICBpZiAodGhpcy5z
dGF0ZSA9PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUpIHsKKyAgICBwYWNrZXQgPSB0aGlzLnF1
ZXVlOworICAgIHRoaXMucXVldWUgPSBwYWNrZXQubGluazsKKyAgICBpZiAodGhpcy5xdWV1ZSA9
PSBudWxsKSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKKyAgICB9IGVsc2Ug
eworICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworICAgIH0KKyAgfSBlbHNlIHsK
KyAgICBwYWNrZXQgPSBudWxsOworICB9CisgIHJldHVybiB0aGlzLnRhc2sucnVuKHBhY2tldCk7
Cit9OworCisvKioKKyAqIEFkZHMgYSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0IG9mIHRoaXMgYmxv
Y2sncyB0YXNrLCBtYXJrcyB0aGlzIGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNlc3NhcnksIGFuZCBy
ZXR1cm5zIHRoZSBuZXh0IHJ1bm5hYmxlIG9iamVjdCB0byBydW4gKHRoZSBvbmUKKyAqIHdpdGgg
dGhlIGhpZ2hlc3QgcHJpb3JpdHkpLgorICovCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5j
aGVja1ByaW9yaXR5QWRkID0gZnVuY3Rpb24gKHRhc2ssIHBhY2tldCkgeworICBpZiAodGhpcy5x
dWV1ZSA9PSBudWxsKSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAgICB0aGlzLm1hcmtB
c1J1bm5hYmxlKCk7CisgICAgaWYgKHRoaXMucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5KSByZXR1
cm4gdGhpczsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0LmFkZFRvKHRoaXMu
cXVldWUpOworICB9CisgIHJldHVybiB0YXNrOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90
b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAidGNiIHsgIiArIHRoaXMu
dGFzayArICJAIiArIHRoaXMuc3RhdGUgKyAiIH0iOworfTsKKworLyoqCisgKiBBbiBpZGxlIHRh
c2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4g
dGhlIHR3bworICogZGV2aWNlIHRhc2tzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxl
ciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50fSB2
MSBhIHNlZWQgdmFsdWUgdGhhdCBjb250cm9scyBob3cgdGhlIGRldmljZSB0YXNrcyBhcmUgc2No
ZWR1bGVkCisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHRh
c2sgc2hvdWxkIGJlIHNjaGVkdWxlZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIElk
bGVUYXNrKHNjaGVkdWxlciwgdjEsIGNvdW50KSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1
bGVyOworICB0aGlzLnYxID0gdjE7CisgIHRoaXMuY291bnQgPSBjb3VudDsKK30KKworSWRsZVRh
c2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhpcy5jb3VudC0tOwor
ICBpZiAodGhpcy5jb3VudCA9PSAwKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQo
KTsKKyAgaWYgKCh0aGlzLnYxICYgMSkgPT0gMCkgeworICAgIHRoaXMudjEgPSB0aGlzLnYxID4+
IDE7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0EpOworICB9
IGVsc2UgeworICAgIHRoaXMudjEgPSAodGhpcy52MSA+PiAxKSBeIDB4RDAwODsKKyAgICByZXR1
cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQik7CisgIH0KK307CisKK0lkbGVU
YXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJJZGxlVGFz
ayIKK307CisKKy8qKgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2gg
dGltZSBpdCBoYXMgYmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJv
bSBhbiBleHRlcm5hbCBkZXZpY2UuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRo
ZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8K
K2Z1bmN0aW9uIERldmljZVRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2No
ZWR1bGVyOworICB0aGlzLnYxID0gbnVsbDsKK30KKworRGV2aWNlVGFzay5wcm90b3R5cGUucnVu
ID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ID09IG51bGwpIHsKKyAgICBpZiAo
dGhpcy52MSA9PSBudWxsKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsK
KyAgICB2YXIgdiA9IHRoaXMudjE7CisgICAgdGhpcy52MSA9IG51bGw7CisgICAgcmV0dXJuIHRo
aXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSBwYWNrZXQ7
CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIH0KK307CisKK0Rl
dmljZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkRl
dmljZVRhc2siOworfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBh
Y2tldHMuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhh
dCBtYW5hZ2VzIHRoaXMgdGFzaworICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB1c2VkIHRvIHNw
ZWNpZnkgaG93IHdvcmsgcGFja2V0cyBhcmUgbWFuaXB1bGF0ZWQKKyAqIEBwYXJhbSB7aW50fSB2
MiBhbm90aGVyIHNlZWQgdXNlZCB0byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1hbmlw
dWxhdGVkCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gV29ya2VyVGFzayhzY2hlZHVs
ZXIsIHYxLCB2MikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9
IHYxOworICB0aGlzLnYyID0gdjI7Cit9CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1
bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgcmV0dXJuIHRo
aXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgIH0gZWxzZSB7CisgICAgaWYgKHRoaXMu
djEgPT0gSURfSEFORExFUl9BKSB7CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9COworICAg
IH0gZWxzZSB7CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9BOworICAgIH0KKyAgICBwYWNr
ZXQuaWQgPSB0aGlzLnYxOworICAgIHBhY2tldC5hMSA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBEQVRBX1NJWkU7IGkrKykgeworICAgICAgdGhpcy52MisrOworICAgICAgaWYgKHRoaXMu
djIgPiAyNikgdGhpcy52MiA9IDE7CisgICAgICBwYWNrZXQuYTJbaV0gPSB0aGlzLnYyOworICAg
IH0KKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUocGFja2V0KTsKKyAgfQorfTsKKwor
V29ya2VyVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAi
V29ya2VyVGFzayI7Cit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsg
cGFja2V0cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0g
c2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0
cnVjdG9yCisgKi8KK2Z1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxlcikgeworICB0aGlzLnNj
aGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7CisgIHRoaXMudjIgPSBudWxs
OworfQorCitIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgewor
ICBpZiAocGFja2V0ICE9IG51bGwpIHsKKyAgICBpZiAocGFja2V0LmtpbmQgPT0gS0lORF9XT1JL
KSB7CisgICAgICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEpOworICAgIH0gZWxzZSB7
CisgICAgICB0aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOworICAgIH0KKyAgfQorICBp
ZiAodGhpcy52MSAhPSBudWxsKSB7CisgICAgdmFyIGNvdW50ID0gdGhpcy52MS5hMTsKKyAgICB2
YXIgdjsKKyAgICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKKyAgICAgIGlmICh0aGlzLnYyICE9
IG51bGwpIHsKKyAgICAgICAgdiA9IHRoaXMudjI7CisgICAgICAgIHRoaXMudjIgPSB0aGlzLnYy
Lmxpbms7CisgICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsKKyAgICAgICAgdGhpcy52
MS5hMSA9IGNvdW50ICsgMTsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYp
OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2ID0gdGhpcy52MTsKKyAgICAgIHRoaXMu
djEgPSB0aGlzLnYxLmxpbms7CisgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7
CisgICAgfQorICB9CisgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOwor
fTsKKworSGFuZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICBy
ZXR1cm4gIkhhbmRsZXJUYXNrIjsKK307CisKKy8qIC0tLSAqCisgKiBQIGEgYyBrIGUgdAorICog
LS0tICovCisKK3ZhciBEQVRBX1NJWkUgPSA0OworCisvKioKKyAqIEEgc2ltcGxlIHBhY2thZ2Ug
b2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFjdCBsYXlv
dXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBub3QgaW1w
b3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdvcmsgcGVyZm9y
bWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2FycnlpbmcgZGF0
YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90aCBhcwor
ICogZGF0YSBhbmQgd29ya2xpc3RzLgorICogQHBhcmFtIHtQYWNrZXR9IGxpbmsgdGhlIHRhaWwg
b2YgdGhlIGxpbmtlZCBsaXN0IG9mIHBhY2tldHMKKyAqIEBwYXJhbSB7aW50fSBpZCBhbiBJRCBm
b3IgdGhpcyBwYWNrZXQKKyAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0eXBlIG9mIHRoaXMgcGFj
a2V0CisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gUGFja2V0KGxpbmssIGlkLCBraW5k
KSB7CisgIHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhpcy5raW5kID0g
a2luZDsKKyAgdGhpcy5hMSA9IDA7CisgIHRoaXMuYTIgPSBuZXcgQXJyYXkoREFUQV9TSVpFKTsK
K30KKworLyoqCisgKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBhIHdvcmtsaXN0LCBh
bmQgcmV0dXJuIHRoZSB3b3JrbGlzdC4KKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgd29y
a2xpc3QgdG8gYWRkIHRoaXMgcGFja2V0IHRvCisgKi8KK1BhY2tldC5wcm90b3R5cGUuYWRkVG8g
PSBmdW5jdGlvbiAocXVldWUpIHsKKyAgdGhpcy5saW5rID0gbnVsbDsKKyAgaWYgKHF1ZXVlID09
IG51bGwpIHJldHVybiB0aGlzOworICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVlOworICB3aGlsZSAo
KHBlZWsgPSBuZXh0LmxpbmspICE9IG51bGwpCisgICAgbmV4dCA9IHBlZWs7CisgIG5leHQubGlu
ayA9IHRoaXM7CisgIHJldHVybiBxdWV1ZTsKK307CisKK1BhY2tldC5wcm90b3R5cGUudG9TdHJp
bmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiUGFja2V0IjsKK307CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMzUwOyArK2kpCisgIHJ1blJpY2hhcmRzKCk7CkluZGV4OiBTdW5TcGlkZXIvdGVz
dHMvdjgtdjYvdjgtc3BsYXkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2
L3Y4LXNwbGF5LmpzCShyZXZpc2lvbiAwKQorKysgU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2L3Y4LXNw
bGF5LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5MyBAQAorLy8gQ29weXJpZ2h0IDIwMDkg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisvLyBUaGlzIGJlbmNobWFyayBpcyBiYXNlZCBvbiBhIEphdmFTY3JpcHQgbG9n
IHByb2Nlc3NpbmcgbW9kdWxlIHVzZWQKKy8vIGJ5IHRoZSBWOCBwcm9maWxlciB0byBnZW5lcmF0
ZSBleGVjdXRpb24gdGltZSBwcm9maWxlcyBmb3IgcnVucyBvZgorLy8gSmF2YVNjcmlwdCBhcHBs
aWNhdGlvbnMsIGFuZCBpdCBlZmZlY3RpdmVseSBtZWFzdXJlcyBob3cgZmFzdCB0aGUKKy8vIEph
dmFTY3JpcHQgZW5naW5lIGlzIGF0IGFsbG9jYXRpbmcgbm9kZXMgYW5kIHJlY2xhaW1pbmcgdGhl
IG1lbW9yeQorLy8gdXNlZCBmb3Igb2xkIG5vZGVzLiBCZWNhdXNlIG9mIHRoZSB3YXkgc3BsYXkg
dHJlZXMgd29yaywgdGhlIGVuZ2luZQorLy8gYWxzbyBoYXMgdG8gZGVhbCB3aXRoIGEgbG90IG9m
IGNoYW5nZXMgdG8gdGhlIGxhcmdlIHRyZWUgb2JqZWN0CisvLyBncmFwaC4KKworLy8gQ29uZmln
dXJhdGlvbi4KK3ZhciBrU3BsYXlUcmVlU2l6ZSA9IDgwMDA7Cit2YXIga1NwbGF5VHJlZU1vZGlm
aWNhdGlvbnMgPSA4MDsKK3ZhciBrU3BsYXlUcmVlUGF5bG9hZERlcHRoID0gNTsKKwordmFyIHNw
bGF5VHJlZSA9IG51bGw7CisKKworZnVuY3Rpb24gR2VuZXJhdGVQYXlsb2FkVHJlZShkZXB0aCwg
dGFnKSB7CisgIGlmIChkZXB0aCA9PSAwKSB7CisgICAgcmV0dXJuIHsKKyAgICAgIGFycmF5ICA6
IFsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSBdLAorICAgICAgc3RyaW5nIDogJ1N0cmlu
ZyBmb3Iga2V5ICcgKyB0YWcgKyAnIGluIGxlYWYgbm9kZScKKyAgICB9OworICB9IGVsc2Ugewor
ICAgIHJldHVybiB7CisgICAgICBsZWZ0OiAgR2VuZXJhdGVQYXlsb2FkVHJlZShkZXB0aCAtIDEs
IHRhZyksCisgICAgICByaWdodDogR2VuZXJhdGVQYXlsb2FkVHJlZShkZXB0aCAtIDEsIHRhZykK
KyAgICB9OworICB9Cit9CisKKworZnVuY3Rpb24gR2VuZXJhdGVLZXkoKSB7CisgIC8vIFRoZSBi
ZW5jaG1hcmsgZnJhbWV3b3JrIGd1YXJhbnRlZXMgdGhhdCBNYXRoLnJhbmRvbSBpcworICAvLyBk
ZXRlcm1pbmlzdGljOyBzZWUgYmFzZS5qcy4KKyAgcmV0dXJuIE1hdGgucmFuZG9tKCk7Cit9CisK
KworZnVuY3Rpb24gSW5zZXJ0TmV3Tm9kZSgpIHsKKyAgLy8gSW5zZXJ0IG5ldyBub2RlIHdpdGgg
YSB1bmlxdWUga2V5LgorICB2YXIga2V5OworICBkbyB7CisgICAga2V5ID0gR2VuZXJhdGVLZXko
KTsKKyAgfSB3aGlsZSAoc3BsYXlUcmVlLmZpbmQoa2V5KSAhPSBudWxsKTsKKyAgdmFyIHBheWxv
YWQgPSBHZW5lcmF0ZVBheWxvYWRUcmVlKGtTcGxheVRyZWVQYXlsb2FkRGVwdGgsIFN0cmluZyhr
ZXkpKTsKKyAgc3BsYXlUcmVlLmluc2VydChrZXksIHBheWxvYWQpOworICByZXR1cm4ga2V5Owor
fQorCisKKworZnVuY3Rpb24gU3BsYXlTZXR1cCgpIHsKKyAgc3BsYXlUcmVlID0gbmV3IFNwbGF5
VHJlZSgpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGtTcGxheVRyZWVTaXplOyBpKyspIEluc2Vy
dE5ld05vZGUoKTsKK30KKworCitmdW5jdGlvbiBTcGxheVRlYXJEb3duKCkgeworICAvLyBBbGxv
dyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gcmVjbGFpbSB0aGUgbWVtb3J5CisgIC8vIHVzZWQg
YnkgdGhlIHNwbGF5IHRyZWUgbm8gbWF0dGVyIGhvdyB3ZSBleGl0IHRoZQorICAvLyB0ZWFyIGRv
d24gZnVuY3Rpb24uCisgIHZhciBrZXlzID0gc3BsYXlUcmVlLmV4cG9ydEtleXMoKTsKKyAgc3Bs
YXlUcmVlID0gbnVsbDsKKworICAvLyBWZXJpZnkgdGhhdCB0aGUgc3BsYXkgdHJlZSBoYXMgdGhl
IHJpZ2h0IHNpemUuCisgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgaWYgKGxlbmd0aCAh
PSBrU3BsYXlUcmVlU2l6ZSkgeworICAgIHRocm93IG5ldyBFcnJvcigiU3BsYXkgdHJlZSBoYXMg
d3Jvbmcgc2l6ZSIpOworICB9CisKKyAgLy8gVmVyaWZ5IHRoYXQgdGhlIHNwbGF5IHRyZWUgaGFz
IHNvcnRlZCwgdW5pcXVlIGtleXMuCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsg
aSsrKSB7CisgICAgaWYgKGtleXNbaV0gPj0ga2V5c1tpICsgMV0pIHsKKyAgICAgIHRocm93IG5l
dyBFcnJvcigiU3BsYXkgdHJlZSBub3Qgc29ydGVkIik7CisgICAgfQorICB9Cit9CisKKworZnVu
Y3Rpb24gU3BsYXlSdW4oKSB7CisgIC8vIFJlcGxhY2UgYSBmZXcgbm9kZXMgaW4gdGhlIHNwbGF5
IHRyZWUuCisgIGZvciAodmFyIGkgPSAwOyBpIDwga1NwbGF5VHJlZU1vZGlmaWNhdGlvbnM7IGkr
KykgeworICAgIHZhciBrZXkgPSBJbnNlcnROZXdOb2RlKCk7CisgICAgdmFyIGdyZWF0ZXN0ID0g
c3BsYXlUcmVlLmZpbmRHcmVhdGVzdExlc3NUaGFuKGtleSk7CisgICAgaWYgKGdyZWF0ZXN0ID09
IG51bGwpIHNwbGF5VHJlZS5yZW1vdmUoa2V5KTsKKyAgICBlbHNlIHNwbGF5VHJlZS5yZW1vdmUo
Z3JlYXRlc3Qua2V5KTsKKyAgfQorfQorCisKKy8qKgorICogQ29uc3RydWN0cyBhIFNwbGF5IHRy
ZWUuICBBIHNwbGF5IHRyZWUgaXMgYSBzZWxmLWJhbGFuY2luZyBiaW5hcnkKKyAqIHNlYXJjaCB0
cmVlIHdpdGggdGhlIGFkZGl0aW9uYWwgcHJvcGVydHkgdGhhdCByZWNlbnRseSBhY2Nlc3NlZAor
ICogZWxlbWVudHMgYXJlIHF1aWNrIHRvIGFjY2VzcyBhZ2Fpbi4gSXQgcGVyZm9ybXMgYmFzaWMg
b3BlcmF0aW9ucworICogc3VjaCBhcyBpbnNlcnRpb24sIGxvb2stdXAgYW5kIHJlbW92YWwgaW4g
Tyhsb2cobikpIGFtb3J0aXplZCB0aW1lLgorICoKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5j
dGlvbiBTcGxheVRyZWUoKSB7Cit9OworCisKKy8qKgorICogUG9pbnRlciB0byB0aGUgcm9vdCBu
b2RlIG9mIHRoZSB0cmVlLgorICoKKyAqIEB0eXBlIHtTcGxheVRyZWUuTm9kZX0KKyAqIEBwcml2
YXRlCisgKi8KK1NwbGF5VHJlZS5wcm90b3R5cGUucm9vdF8gPSBudWxsOworCisKKy8qKgorICog
QHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgdHJlZSBpcyBlbXB0eS4KKyAqLworU3BsYXlU
cmVlLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24oKSB7CisgIHJldHVybiAhdGhpcy5yb290
XzsKK307CisKKworLyoqCisgKiBJbnNlcnRzIGEgbm9kZSBpbnRvIHRoZSB0cmVlIHdpdGggdGhl
IHNwZWNpZmllZCBrZXkgYW5kIHZhbHVlIGlmCisgKiB0aGUgdHJlZSBkb2VzIG5vdCBhbHJlYWR5
IGNvbnRhaW4gYSBub2RlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkuIElmCisgKiB0aGUgdmFsdWUg
aXMgaW5zZXJ0ZWQsIGl0IGJlY29tZXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCisgKgorICogQHBh
cmFtIHtudW1iZXJ9IGtleSBLZXkgdG8gaW5zZXJ0IGludG8gdGhlIHRyZWUuCisgKiBAcGFyYW0g
eyp9IHZhbHVlIFZhbHVlIHRvIGluc2VydCBpbnRvIHRoZSB0cmVlLgorICovCitTcGxheVRyZWUu
cHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAgaWYgKHRoaXMuaXNF
bXB0eSgpKSB7CisgICAgdGhpcy5yb290XyA9IG5ldyBTcGxheVRyZWUuTm9kZShrZXksIHZhbHVl
KTsKKyAgICByZXR1cm47CisgIH0KKyAgLy8gU3BsYXkgb24gdGhlIGtleSB0byBtb3ZlIHRoZSBs
YXN0IG5vZGUgb24gdGhlIHNlYXJjaCBwYXRoIGZvcgorICAvLyB0aGUga2V5IHRvIHRoZSByb290
IG9mIHRoZSB0cmVlLgorICB0aGlzLnNwbGF5XyhrZXkpOworICBpZiAodGhpcy5yb290Xy5rZXkg
PT0ga2V5KSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBub2RlID0gbmV3IFNwbGF5VHJlZS5O
b2RlKGtleSwgdmFsdWUpOworICBpZiAoa2V5ID4gdGhpcy5yb290Xy5rZXkpIHsKKyAgICBub2Rl
LmxlZnQgPSB0aGlzLnJvb3RfOworICAgIG5vZGUucmlnaHQgPSB0aGlzLnJvb3RfLnJpZ2h0Owor
ICAgIHRoaXMucm9vdF8ucmlnaHQgPSBudWxsOworICB9IGVsc2UgeworICAgIG5vZGUucmlnaHQg
PSB0aGlzLnJvb3RfOworICAgIG5vZGUubGVmdCA9IHRoaXMucm9vdF8ubGVmdDsKKyAgICB0aGlz
LnJvb3RfLmxlZnQgPSBudWxsOworICB9CisgIHRoaXMucm9vdF8gPSBub2RlOworfTsKKworCisv
KioKKyAqIFJlbW92ZXMgYSBub2RlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgdHJl
ZSBpZiB0aGUgdHJlZQorICogY29udGFpbnMgYSBub2RlIHdpdGggdGhpcyBrZXkuIFRoZSByZW1v
dmVkIG5vZGUgaXMgcmV0dXJuZWQuIElmIHRoZQorICoga2V5IGlzIG5vdCBmb3VuZCwgYW4gZXhj
ZXB0aW9uIGlzIHRocm93bi4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0ga2V5IEtleSB0byBmaW5k
IGFuZCByZW1vdmUgZnJvbSB0aGUgdHJlZS4KKyAqIEByZXR1cm4ge1NwbGF5VHJlZS5Ob2RlfSBU
aGUgcmVtb3ZlZCBub2RlLgorICovCitTcGxheVRyZWUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0
aW9uKGtleSkgeworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICB0aHJvdyBFcnJvcignS2V5
IG5vdCBmb3VuZDogJyArIGtleSk7CisgIH0KKyAgdGhpcy5zcGxheV8oa2V5KTsKKyAgaWYgKHRo
aXMucm9vdF8ua2V5ICE9IGtleSkgeworICAgIHRocm93IEVycm9yKCdLZXkgbm90IGZvdW5kOiAn
ICsga2V5KTsKKyAgfQorICB2YXIgcmVtb3ZlZCA9IHRoaXMucm9vdF87CisgIGlmICghdGhpcy5y
b290Xy5sZWZ0KSB7CisgICAgdGhpcy5yb290XyA9IHRoaXMucm9vdF8ucmlnaHQ7CisgIH0gZWxz
ZSB7CisgICAgdmFyIHJpZ2h0ID0gdGhpcy5yb290Xy5yaWdodDsKKyAgICB0aGlzLnJvb3RfID0g
dGhpcy5yb290Xy5sZWZ0OworICAgIC8vIFNwbGF5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBuZXcg
cm9vdCBoYXMgYW4gZW1wdHkgcmlnaHQgY2hpbGQuCisgICAgdGhpcy5zcGxheV8oa2V5KTsKKyAg
ICAvLyBJbnNlcnQgdGhlIG9yaWdpbmFsIHJpZ2h0IGNoaWxkIGFzIHRoZSByaWdodCBjaGlsZCBv
ZiB0aGUgbmV3CisgICAgLy8gcm9vdC4KKyAgICB0aGlzLnJvb3RfLnJpZ2h0ID0gcmlnaHQ7Cisg
IH0KKyAgcmV0dXJuIHJlbW92ZWQ7Cit9OworCisKKy8qKgorICogUmV0dXJucyB0aGUgbm9kZSBo
YXZpbmcgdGhlIHNwZWNpZmllZCBrZXkgb3IgbnVsbCBpZiB0aGUgdHJlZSBkb2Vzbid0IGNvbnRh
aW4KKyAqIGEgbm9kZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LgorICoKKyAqIEBwYXJhbSB7bnVt
YmVyfSBrZXkgS2V5IHRvIGZpbmQgaW4gdGhlIHRyZWUuCisgKiBAcmV0dXJuIHtTcGxheVRyZWUu
Tm9kZX0gTm9kZSBoYXZpbmcgdGhlIHNwZWNpZmllZCBrZXkuCisgKi8KK1NwbGF5VHJlZS5wcm90
b3R5cGUuZmluZCA9IGZ1bmN0aW9uKGtleSkgeworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAg
ICByZXR1cm4gbnVsbDsKKyAgfQorICB0aGlzLnNwbGF5XyhrZXkpOworICByZXR1cm4gdGhpcy5y
b290Xy5rZXkgPT0ga2V5ID8gdGhpcy5yb290XyA6IG51bGw7Cit9OworCisKKy8qKgorICogQHJl
dHVybiB7U3BsYXlUcmVlLk5vZGV9IE5vZGUgaGF2aW5nIHRoZSBtYXhpbXVtIGtleSB2YWx1ZS4K
KyAqLworU3BsYXlUcmVlLnByb3RvdHlwZS5maW5kTWF4ID0gZnVuY3Rpb24ob3B0X3N0YXJ0Tm9k
ZSkgeworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB2
YXIgY3VycmVudCA9IG9wdF9zdGFydE5vZGUgfHwgdGhpcy5yb290XzsKKyAgd2hpbGUgKGN1cnJl
bnQucmlnaHQpIHsKKyAgICBjdXJyZW50ID0gY3VycmVudC5yaWdodDsKKyAgfQorICByZXR1cm4g
Y3VycmVudDsKK307CisKKworLyoqCisgKiBAcmV0dXJuIHtTcGxheVRyZWUuTm9kZX0gTm9kZSBo
YXZpbmcgdGhlIG1heGltdW0ga2V5IHZhbHVlIHRoYXQKKyAqICAgICBpcyBsZXNzIHRoYW4gdGhl
IHNwZWNpZmllZCBrZXkgdmFsdWUuCisgKi8KK1NwbGF5VHJlZS5wcm90b3R5cGUuZmluZEdyZWF0
ZXN0TGVzc1RoYW4gPSBmdW5jdGlvbihrZXkpIHsKKyAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7Cisg
ICAgcmV0dXJuIG51bGw7CisgIH0KKyAgLy8gU3BsYXkgb24gdGhlIGtleSB0byBtb3ZlIHRoZSBu
b2RlIHdpdGggdGhlIGdpdmVuIGtleSBvciB0aGUgbGFzdAorICAvLyBub2RlIG9uIHRoZSBzZWFy
Y2ggcGF0aCB0byB0aGUgdG9wIG9mIHRoZSB0cmVlLgorICB0aGlzLnNwbGF5XyhrZXkpOworICAv
LyBOb3cgdGhlIHJlc3VsdCBpcyBlaXRoZXIgdGhlIHJvb3Qgbm9kZSBvciB0aGUgZ3JlYXRlc3Qg
bm9kZSBpbgorICAvLyB0aGUgbGVmdCBzdWJ0cmVlLgorICBpZiAodGhpcy5yb290Xy5rZXkgPCBr
ZXkpIHsKKyAgICByZXR1cm4gdGhpcy5yb290XzsKKyAgfSBlbHNlIGlmICh0aGlzLnJvb3RfLmxl
ZnQpIHsKKyAgICByZXR1cm4gdGhpcy5maW5kTWF4KHRoaXMucm9vdF8ubGVmdCk7CisgIH0gZWxz
ZSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK307CisKKworLyoqCisgKiBAcmV0dXJuIHtBcnJh
eTwqPn0gQW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIGtleXMgb2YgdHJlZSdzIG5vZGVzLgor
ICovCitTcGxheVRyZWUucHJvdG90eXBlLmV4cG9ydEtleXMgPSBmdW5jdGlvbigpIHsKKyAgdmFy
IHJlc3VsdCA9IFtdOworICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7CisgICAgdGhpcy5yb290Xy50
cmF2ZXJzZV8oZnVuY3Rpb24obm9kZSkgeyByZXN1bHQucHVzaChub2RlLmtleSk7IH0pOworICB9
CisgIHJldHVybiByZXN1bHQ7Cit9OworCisKKy8qKgorICogUGVyZm9ybSB0aGUgc3BsYXkgb3Bl
cmF0aW9uIGZvciB0aGUgZ2l2ZW4ga2V5LiBNb3ZlcyB0aGUgbm9kZSB3aXRoCisgKiB0aGUgZ2l2
ZW4ga2V5IHRvIHRoZSB0b3Agb2YgdGhlIHRyZWUuICBJZiBubyBub2RlIGhhcyB0aGUgZ2l2ZW4K
KyAqIGtleSwgdGhlIGxhc3Qgbm9kZSBvbiB0aGUgc2VhcmNoIHBhdGggaXMgbW92ZWQgdG8gdGhl
IHRvcCBvZiB0aGUKKyAqIHRyZWUuIFRoaXMgaXMgdGhlIHNpbXBsaWZpZWQgdG9wLWRvd24gc3Bs
YXlpbmcgYWxnb3JpdGhtIGZyb206CisgKiAiU2VsZi1hZGp1c3RpbmcgQmluYXJ5IFNlYXJjaCBU
cmVlcyIgYnkgU2xlYXRvciBhbmQgVGFyamFuCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGtleSBL
ZXkgdG8gc3BsYXkgdGhlIHRyZWUgb24uCisgKiBAcHJpdmF0ZQorICovCitTcGxheVRyZWUucHJv
dG90eXBlLnNwbGF5XyA9IGZ1bmN0aW9uKGtleSkgeworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsK
KyAgICByZXR1cm47CisgIH0KKyAgLy8gQ3JlYXRlIGEgZHVtbXkgbm9kZS4gIFRoZSB1c2Ugb2Yg
dGhlIGR1bW15IG5vZGUgaXMgYSBiaXQKKyAgLy8gY291bnRlci1pbnR1aXRpdmU6IFRoZSByaWdo
dCBjaGlsZCBvZiB0aGUgZHVtbXkgbm9kZSB3aWxsIGhvbGQKKyAgLy8gdGhlIEwgdHJlZSBvZiB0
aGUgYWxnb3JpdGhtLiAgVGhlIGxlZnQgY2hpbGQgb2YgdGhlIGR1bW15IG5vZGUKKyAgLy8gd2ls
bCBob2xkIHRoZSBSIHRyZWUgb2YgdGhlIGFsZ29yaXRobS4gIFVzaW5nIGEgZHVtbXkgbm9kZSwg
bGVmdAorICAvLyBhbmQgcmlnaHQgd2lsbCBhbHdheXMgYmUgbm9kZXMgYW5kIHdlIGF2b2lkIHNw
ZWNpYWwgY2FzZXMuCisgIHZhciBkdW1teSwgbGVmdCwgcmlnaHQ7CisgIGR1bW15ID0gbGVmdCA9
IHJpZ2h0ID0gbmV3IFNwbGF5VHJlZS5Ob2RlKG51bGwsIG51bGwpOworICB2YXIgY3VycmVudCA9
IHRoaXMucm9vdF87CisgIHdoaWxlICh0cnVlKSB7CisgICAgaWYgKGtleSA8IGN1cnJlbnQua2V5
KSB7CisgICAgICBpZiAoIWN1cnJlbnQubGVmdCkgeworICAgICAgICBicmVhazsKKyAgICAgIH0K
KyAgICAgIGlmIChrZXkgPCBjdXJyZW50LmxlZnQua2V5KSB7CisgICAgICAgIC8vIFJvdGF0ZSBy
aWdodC4KKyAgICAgICAgdmFyIHRtcCA9IGN1cnJlbnQubGVmdDsKKyAgICAgICAgY3VycmVudC5s
ZWZ0ID0gdG1wLnJpZ2h0OworICAgICAgICB0bXAucmlnaHQgPSBjdXJyZW50OworICAgICAgICBj
dXJyZW50ID0gdG1wOworICAgICAgICBpZiAoIWN1cnJlbnQubGVmdCkgeworICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBMaW5rIHJpZ2h0LgorICAgICAgcmln
aHQubGVmdCA9IGN1cnJlbnQ7CisgICAgICByaWdodCA9IGN1cnJlbnQ7CisgICAgICBjdXJyZW50
ID0gY3VycmVudC5sZWZ0OworICAgIH0gZWxzZSBpZiAoa2V5ID4gY3VycmVudC5rZXkpIHsKKyAg
ICAgIGlmICghY3VycmVudC5yaWdodCkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAg
IGlmIChrZXkgPiBjdXJyZW50LnJpZ2h0LmtleSkgeworICAgICAgICAvLyBSb3RhdGUgbGVmdC4K
KyAgICAgICAgdmFyIHRtcCA9IGN1cnJlbnQucmlnaHQ7CisgICAgICAgIGN1cnJlbnQucmlnaHQg
PSB0bXAubGVmdDsKKyAgICAgICAgdG1wLmxlZnQgPSBjdXJyZW50OworICAgICAgICBjdXJyZW50
ID0gdG1wOworICAgICAgICBpZiAoIWN1cnJlbnQucmlnaHQpIHsKKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgLy8gTGluayBsZWZ0LgorICAgICAgbGVmdC5yaWdo
dCA9IGN1cnJlbnQ7CisgICAgICBsZWZ0ID0gY3VycmVudDsKKyAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50LnJpZ2h0OworICAgIH0gZWxzZSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgLy8g
QXNzZW1ibGUuCisgIGxlZnQucmlnaHQgPSBjdXJyZW50LmxlZnQ7CisgIHJpZ2h0LmxlZnQgPSBj
dXJyZW50LnJpZ2h0OworICBjdXJyZW50LmxlZnQgPSBkdW1teS5yaWdodDsKKyAgY3VycmVudC5y
aWdodCA9IGR1bW15LmxlZnQ7CisgIHRoaXMucm9vdF8gPSBjdXJyZW50OworfTsKKworCisvKioK
KyAqIENvbnN0cnVjdHMgYSBTcGxheSB0cmVlIG5vZGUuCisgKgorICogQHBhcmFtIHtudW1iZXJ9
IGtleSBLZXkuCisgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlLgorICovCitTcGxheVRyZWUuTm9k
ZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAgdGhpcy5rZXkgPSBrZXk7CisgIHRoaXMudmFs
dWUgPSB2YWx1ZTsKK307CisKKworLyoqCisgKiBAdHlwZSB7U3BsYXlUcmVlLk5vZGV9CisgKi8K
K1NwbGF5VHJlZS5Ob2RlLnByb3RvdHlwZS5sZWZ0ID0gbnVsbDsKKworCisvKioKKyAqIEB0eXBl
IHtTcGxheVRyZWUuTm9kZX0KKyAqLworU3BsYXlUcmVlLk5vZGUucHJvdG90eXBlLnJpZ2h0ID0g
bnVsbDsKKworCisvKioKKyAqIFBlcmZvcm1zIGFuIG9yZGVyZWQgdHJhdmVyc2FsIG9mIHRoZSBz
dWJ0cmVlIHN0YXJ0aW5nIGF0CisgKiB0aGlzIFNwbGF5VHJlZS5Ob2RlLgorICoKKyAqIEBwYXJh
bSB7ZnVuY3Rpb24oU3BsYXlUcmVlLk5vZGUpfSBmIFZpc2l0b3IgZnVuY3Rpb24uCisgKiBAcHJp
dmF0ZQorICovCitTcGxheVRyZWUuTm9kZS5wcm90b3R5cGUudHJhdmVyc2VfID0gZnVuY3Rpb24o
ZikgeworICB2YXIgY3VycmVudCA9IHRoaXM7CisgIHdoaWxlIChjdXJyZW50KSB7CisgICAgdmFy
IGxlZnQgPSBjdXJyZW50LmxlZnQ7CisgICAgaWYgKGxlZnQpIGxlZnQudHJhdmVyc2VfKGYpOwor
ICAgIGYoY3VycmVudCk7CisgICAgY3VycmVudCA9IGN1cnJlbnQucmlnaHQ7CisgIH0KK307CisK
K1NwbGF5U2V0dXAoKTsKK1NwbGF5UnVuKCk7CitTcGxheVRlYXJEb3duKCk7Cg==
</data>
<flag name="review"
          id="54286"
          type_id="1"
          status="-"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="54287"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>